۱۳ پروژهی جاوایی که حتما باید امتحان کنید.

انبارههای بسیاری در گیتهاب وجود دارند بعضی از آنها را میتوانید fork کنید، بعضی از آنها ممکن است در کد خودتان به کمکتان بیایند و بعضی از آنها ساخته شده اند تا به شما کمک کنند چیزی درباره برنامه نویسی یاد بگیرید. از هر نوعی که مدنظر داشته باشید، انبارههای بسیاری وجود دارد و زمان کافی برای استفاده و بررسی همه اینها نیست. در این مطلب بعضی از انبارههای جالب و مفید جاوا که برای ما در این چند ماه جالب بوده اند و احتمالا برای شما هم جذاب باشند را معرفی میکنیم.
پیدا کردن یک سوزن در انبار!
گیتهاب به ۱۵ میلیون توسعهدهنده در جهان، که در ۳۸ میلیون انباره تعامل دارند، سرویس میدهد. ۳۳۰۵۵۰ انباره مربوط به جاوا هستند. درواقع گیت هاب یک مجموعه عظیم از اطلاعات توسعهدهندگان است.
این میتواند شامل کدی باشد که به پروژه جاری شما مربوط است یا یک بازی ساده باشد که در استفاده از زبانهای برنامهنویسی دیگر به شما کمک میکند. مهم نیست که دنبال چه هستید، حتما صدها نمونه از آن پیدا خواهید کرد و دقیقا مشکل همین جاست.
در این مطلب تلاش شده است چند انباره برای شروع کار معرفی گردد.
۱. سادگی مینیمال جاوا
Bootique یک تکنولوژی برای ساخت برنامههای جاوای قابل اجرا بدون container است. این پروژه امکان ساخت یک سرویس REST، وب سرویسها، jobها، تسکهای مهاجرت پایگاه داده و … را میدهد که به صورت ماژول بندی ساخته شده است. به همین خاطر به شکل دستورات سادهای قابل اجرا هستند. هدف پشت این پروژه این است که برنامهها را از container جاوا خارج کنیم و اجازه دهیم توسعهدهندگان توابع main() خود را reclaim کنند. یک مزیت مهم وجود دارد – bootique دستورات پیشفرض اندکی دارند، بنابراین اگر چندان کد زیادی ندارید یا اگر هیچ ماژولی به برنامه خود import نکرده اید هنوز میتوانید از Bootique استفاده کرده و آنها را اجرا کنید.
۲. حل کننده مساله
اسم آن گویای همه چیز است: 99-problems. همانطور که حدس میزنید، یک مجموعه از مسائل است که در تمرین مهارتهای برنامهنویسی منطقی (logical) به شما کمک میکنند. شما میتوانید انتخاب کنید که مسائل را با جاوا ۸، اسکالا یا haskel حل کنید و هدف نهایی شما یافتن زیباترین و ظریفترین راه حل ممکن است.
اگر استاد معما هستید نگران نباشید. سطح بندی متفاوتی وجود دارد که هرکدام بازه زمانی دارند که از ۱۵ دقیقه تا چند ساعت هستند. کسی چک نمیکند که چقدر زمان صرف آن کردید اما یک ایده اولیه میدهد که چقدر باید روی آن زمان بگذارید.
۳. کار با رشته
Strman-java یک کتابخانه جاوا ۸ است که برای کار کردن با رشتهها ساخته شده است. از آنجایی که روی Maven قابل دسترسی است، کل کاری که باید انجام دهید اضافه کردن یک وابستگی به ابزار build خود است.
شما در این کتابخانه میتوانید یک لیستی از توابع که شامل افزودن رشتهها به مقادیر، دریافت کاراکتر در یک موقعیت خاص، بازگرداندن آرایهای از رشتههای بین start تا end و بسیاری از توابع دیگر را پیدا کنید.
۴. اکتشاف داده
اگر به دنبال یک راه جالب برای تعامل با دادههای خود هستید، Dex را بررسی کنید. با استفاده از آن شما میتوانید دادههای خود را استخراج کرده، تغییر داده و به تصویر بکشید. میتوانید مصورسازیهای خود را به صورت سه بعدی یا هر متغیر HTML که دوست دارید منتشر کنید.
Democratic or Republican? Display relationships with a Chord diagram
۵. داده بزرگ کوچک!
Tablesaw یک جدول داده درون حافظهای است که ابزارهای کار با داده و یک فرمت ذخیرهسازی ستونی را در بردارد. این پروژه حول این ایده ساخته شده است که هیچ کسی نیاز به تحلیلهای توزیعشده روی تسکهای کوچکتر ندارد و شما میتوانید به صورت تعاملی روی جدول 2 میلیارد سطری روی یک سرور کار کنید.
در این پروژه میتوانید قوانینی برای تعیین نحوه نمایش لایهها، اولویت دادهها و … تعیین کنید. میتوان دادهها را از فایلهای RDBMS و CSV وارد کرده و حذف و اضافه ستونها و عملیاتهای دیگر را در فرمت ستونی فشرده انجام دهید.
۶. ذخیره کلید مقدار
Chonicle Map یک انبار کلید-مقدار درون حافظهای است که در واقع برای تاخیر کم و برنامههای چند پردازهای ساخته شده است. این انباره تاخیر متوسط برای خواندن و نوشتن را هدف قرار میدهد و اجازه میدهد کوئریهایی بنویسید که به خوبی به تعداد ریسههای سختافزاری در سرور scale شوند.
کاربرد اولیه آن برای جایگزینی رویکردهای کند درون یک سرور (مثل Redis) یا جایگزینی راهحلهای مشابه با محوریت JVM با هدف سرعتبخشی است.
۷. Load Investigator
Gumshoe به شما امکان نظارت بر کارایی برنامهتان را میدهد. با استفاده از آن میتوانید خطوطی از کد را مدنظر قرار داده و آمار و اطلاعات مربوط به یک فراخوانی را دریافت کنید. در واقع میتوانید استفاده از منابع خود را تحلیل کنید (TCP، UDP، فایل سیستم یا کارایی پردازنده)
علاوه بر این، این انباره به شما اجازه میدهد آمار را حین تولید دریافت، فیلتر و مصور نمایید.
۸. موسیقی جاوا
SoundSea به شما اجازه جستجو و دانلود آهنگ به همراه متادیتا و تصویر آلبوم را میدهد. وقتی دنبال یک آهنگ مشخص بگردید، SoundSea به دنبال متادیتا و تصویر آلبوم روی آیتونز میگردد و آن را برای شما نمایش میدهد. اگر بیش از یک آهنگ موجود باشد، میتوانید دنبال صحیح آن بگردید.
خود آهنگ از pleer.com دانلود شده است و میتوانید نرخ high, low یا VBR را فیلتر کنید. اگر بخواهید میتوانید آن را تنظیم کرده تا اولین نتیجه جستجو را دانلود کند. به علاوه یک پخش کننده کوچک هم هست بنابراین میتوانید به سادگی به آهنگ گوش دهید بدون آنکه آن را دانلود کنید.
Search and download
۹. نشتیهای خود را کشف کنید.
LeakCanary یک کتابخانه متنباز است که به شما در پیدا کردن نشتی حافظه کمک میکند. همانطور که در صفحه گیتهاب آنها نوشته شده است: “ یک نشتی کوچک میتواند یک کشتی بزرگ را غرق کند” (-بنجامین فرانکلین)
وقتی این پروژه را راه اندازی کردید میتوانید برای نمایش اتوماتیک پیام هنگامی که یک نشتی حافظه کشف میشود آن را تنظیم کنید.
۱۰. آرایه چند بعدی
ND4J یک کتابخانه متنباز است که ابزارهای محاسباتی علمی را از پایتون به JVMها آورده است. این کتابخانه برای محیطهای توسعه ساخته شده به همین دلیل بسیار سریع با نیازمندی کمینه رم کار میکند.
از ویژگیهای اصلی که این کتابخانه در اختیار قرار میدهد، آرایههای n بعدی از اشیا، توابع پردازش سیگنال و قابلیتهای چند پلتفورمی مثل GPU و جبرخطی میباشند. این کتابخانه هدوپ و اسپارک را در بردارد و api کتابخانه مشهور پایتون، Numpy، را تقلید کرده است.
۱۱. روی جاوا نظارت کنید.
مهم نیست که از چه ابزار مانیتورینگی استفاده میکنید، Automon از تواناییهای آن به همراه AOP (AspectJ) استفاده کرده تا کد جاوا، JDK و کتابخانههای وابسته را مانیتور کند. Automon با ابزارهای شناخته شده مانیتورینگی مثل JAMon، JavaSimon، Yammer Metrics، StatsD در کنار کتابخانههای لاگینگ مثل perf4j، log4j، sl4j و … کار میکند.
Automon به طور معمول برای دنبال کردن زمان فراخوانی توابع و تعداد خطاها، ذخیره و نمایش داده درون ابزار مورد نظر شما به کار گرفته میشود. این ابزار به خودی خود هیچ مانیتورینگی انجام نمیدهد اما به عنوان یک واسط بین اینکه “چه چیزی باید مانیتور کنم” و “چگونه باید مانیتور کنم” قرار دارد و استفاده بسیاری دارد.
۱۲. از جاوای خود مواظبت کنید.
JVM-tools یک مجموعه از ابزارها برای خطایابی، نظارت و پروفایل کردن JVM است. این یک ابزار command line است که از واسطهای تشخیص خطای JVM مثل JMX، JVM attach و perf counter) استفاده کرده و منطقی دیگر روی آن اضافه میکند تا برای تشخیص خطا به کار گیرد.
در این کتابخانه شما ابزارهایی خواهید یافت که با آنها عملیاتهای ابتدایی با MBean را از طریق command line انجام دهید.
۱۳. بهترین جاوا
با awesome-java آشنا شوید این یک لیست منتخب از چارچوبهای جاوا، کتابخانه ها و نرمافزارهاست. اگر مطمئن نیستید که چه چیزی را انتخاب کنید، این یک لیستی است که لازم است بررسی کنید. حتی به دستههای مختلف هم دستهبندی شده است بنابراین میدانید که روی چه چیزی تمرکز کنید.
میتوانید ابزارهای قدیمی که هنوز در حال استفاده هستند، چارچوبهایی که bean mapping را ساده میکنند و ابزارهایی که فرایند build را مدیریت میکنند و وابستگیهای برنامهها و کتابخانهها را در آنجا بیابید.
شما چه کتابخانه و پروژههای متنباز مفید و جالبی میشناسید؟
منبع:
خیلی مقاله خوبی بود، ممنون
مخصوصا ۱۳ ام ای که خودش یه دنیاست.