هفت ابزار مفید برای توسعهدهندگان جاوا
در کنار ابزارهایی با نامهای بزرگ و شناختهشده، بازار مملو از ابزارها و چارچوبهای جدید و مفیدی است که بسیاری از افراد هنوز آشنایی کاملی با آنها ندارند و طبعا از آنها استفاده هم نمیکنند. در این مقاله یک لیست کوتاه از چنین ابزارهایی معرفی میشود. برخی از این ابزارها، تنها مخصوص جاوا هستند و برخی دیگر برای زبانهای برنامهنویسی دیگر هم به خوبی کار میکنند. اما آنچه که اهمیت دارد این است که همهی این ابزارها برای جاوا عالی هستند.
1- JClarity: نظارت بر عملکرد
این ابزار در سپتامبر 2014 به بازار آمد و برای نظارت بر عملکرد و کاراییِ برنامه، دو محصول ارایه کرده است: Illuminate و Censum.
Illuminate یک ابزار نظارت بر عملکرد است و Censum یک برنامه کاربردی متمرکز بر تجزیه و تحلیل لاگهای جمعآوری زباله1. این دو ابزار، علاوه بر جمعآوری دادهها و نمایش دادن آنها، راهکاری نیز برای حل مشکلاتی که تشخیص دادهاند، ارایه میدهند.
«آنچه ما می خواهیم انجام دهیم این است که مشکل را از جمع آوری دادهها به تجزیه و تحلیل دادهها منتقل کنیم.»
– JClarity Co-Founder Ben Evans.
ویژگیهای کلیدی:
- تشخیص گلوگاه (ورودی/خروجی دیسک، جمعآوری زباله، بنبست2 و غیره)
- ارایهی برنامه عملیاتی و پیشنهاداتی برای حل مشکل. مانند: «لازم است تعداد threadهای فعالِ برنامه افزایش یابد.»
- تفسیر: شرح مشکل به صورت کلی و بیان علتهای معمول در بروز آن مشکل. برای مثال: «درصد زیادی از زمان صرفشده در توقف GC ممکن است به دلیل کمبودن اندازهی Heap باشد.»
ویژگی متمایزکننده:
پس از نظارت و تشخیصِ مشکلات عملکردی، راهکاری برای حل مشکل ارایه میکند.
2- Bintray: یک بستر اجتماعی برای باینریها
توسعهدهندگان جاوا هنگام وارد کردن کتابخانهها از مخازن ناشناس، در تاریکی به سر میبرند. Bintray در واقع به کد چهره میدهد و به عنوان یک بستر اجتماعی برای توسعهدهندگان جهت به اشتراکگذاری بستههای متنباز عمل میکند. Bintray بیش از 85 هزار بسته در 18 هزار مخزن دارد و مخازن محبوب و نسخههای جدید را در ویترینی به نمایش میگذارد.
ویژگیهای کلیدی:
- میتوانید باینریهای خود را بارگذاری کنید تا همه بتوانند به آنها دسترسی داشته باشند و به این ترتیب بتوانید از بازخوردها و واکنشهای دیگر توسعهدهندگان نیز مطلع شوید.
- میتوانید باینریها را با Maven یا Gradle یا Ant یا Yum یا حتی به صورت مستقیم، دانلود کنید.
- میتوانید مستندات و یادداشتهای انتشار را مدیریت کنید.
- REST API: جستوجو و بازیابی باینریها و توزیعهای خودکار
ویژگیهای متمایزکننده:
قابلیت اصلی Bintray مشابه Maven Central است. با این حال یک لایهی اجتماعی به این قابلیت اضافه میکند و یک فرآیند آسان برای بارگذاری باینریها در CDN ارایه میدهد.
3- Liberto: سرویسهای ابری نظارت و مصورسازی
یک سرویس میزبان برای نظارت و مدیریت برنامههای ابری است و میتواند داشبوردهای سفارشی را در عرض چند ثانیه بدون نیاز به راهاندازی و یا نصب هیچ نرمافزار دیگری ایجاد کند.
«دادهها تنها به اندازهی بینش عملیای که از آنها میتوانید دریافت کنید، ارزشمندند.»
Joe Ruscio, Co-Founder & CTO.
ویژگیهای کلیدی:
- جمعآوری داده: تجمیع با Heroku، AWS
- گزارشهای سفارشی: ارسال معیارها و اخطارها از طریق ایمیل، HipChat، Compfire و درخواستهای HTTP POST برای تجمیع با هر آنچه که فکرش را بکنید.
- مصورسازی دادهها: گرافهای زیبا با حاشیهنویسیها، وابستگیها و گزینههای جاسازی و به اشتراکگذاری
- اخطار: ارسال خودکار اطلاعیه هنگامی که معیارها از آستانهی مشخصشده عبور میکنند.
ویژگی متمایزکننده:
سخت است چیزی را پیدا کنید که Liberto نداند چگونه با آن صحبت کند و به درک بهتر دادهها و اطلاعاتش به شما کمک کند.
4- Takipi: ردیابی خطا و تجزیه و تحلیل
Takipi با یک هدف ساده طراحی و ساخته شده است: اینکه به برنامهنویس بگوید دقیقا کی و چرا کد تولیدی شکست خورده است. هر وقت یک استثنای جدید پرتاب میشود یا یک لاگ خطا ثبت میشود، Takipi آن را دریافت میکند و وضعیت متغیری که باعث خطا شده را به شما نشان میدهد. در واقع کل وضعیت کد هنگام بروز خطا را نگهداری میکند و به این ترتیب میتوانید استثناها را به خوبی تحلیل کنید.
ویژگیهای کلیدی:
- تشخیص: استثناهای سرگردان و استثناهای گرفتهشده، خطاهای http و خطاهای لاگشده.
- اطلاعرسانی در خصوص اینکه اگر کلاستر کدهای جدید یا تغییریافته داشته باشد، احتمالا چند وقت یکبار خطا پیش میآید؟ و اینکه آیا نرخ بروز خطا افزایش داشته یا خیر.
- تحلیل: مشاهده وضعیت کدها و متغیرهای واقعی، حتی در ماشینها و برنامههای مختلف.
5- Elasticsearch: بستر جستوجو و تحلیل
Elasticsearch خیلی جدید نیست و نسخهی 1.0.0 در فوریهی 2014 منتشر شد. یک پروژهی متنباز است که بر روی Apache Lucene ساخته شده و بر روی GitHub با بیش از 200 مشارکتکننده، میزبانی میشود. وعدهی اصلی Elasticsearch فراهم کردن استفاده آسان از جستوجوی RESTful توزیعشده و مقیاسپذیر است.
ویژگیهای کلیدی:
- زمانی که هر ویژگی ایندکس و قابل جستوجو شده باشد، هر واحد دادهای تقریبا به صورت بلادرنگ در پایگاهداده ذخیره میشود.
- جستوجوی توزیعشده با استفاده از معماری مناسب برای برنامههای با مقیاس بزرگ تا کوچک.
- REST API و همچنین یک کتابخانه برای Hadoop دارد.
- نیازی به درک و دانش زیادی از جستوجو ندارد و چون میتواند بدون شِما3 باشد، میتوان خیلی سریع با آن شروع به کار کرد.
ویژگی متمایزکننده:
همانطور که از نامش پیداست، انعطافپذیر (elastic) است. دارای انعطافپذیری بالا و سهولت استفاده است و بدون دست و پنجه نرم کردن با ویژگیهای hardcore و گزینههای سفارشی، یک محل مناسب برای شروع کار و افزایش مقیاسپذیری است.
6- Spark: چارچوب میکرو وب
Spark یک چارچوب میکرو وب است که برای ایجاد سریع اپلیکیشنهای وب از Sinatra الهام گرفته است و برای پشتیبانی از Java 8 و لامبدا، بازنویسی شده است. Spark متنباز است و کد آن در GitHub موجود است. توسط Per Wendel و چند نفر دیگر، در طی چند سال اخیر تحت یک ماموریت برای پشتیبانی از ایجاد سریع برنامههای وب با کمترین تلاش، ساخته شده است.
ویژگیهای کلیدی:
- راهاندازی سریع و ساده برای اولین استقرار4
- تطبیق مسیر بصری
- یک موتور template برای ایجاد مولفههای قابل استفاده مجدد که از Freemarker، Apache Velocity و Mustache پشتیبانی میکند.
- Spark به صورت مستقل در Jetty اجرا میشود. اما در تامکت هم میتواند اجرا شود.
ویژگی متمایزکننده:
یک تصویر از 1000 کلمه ارزشمندتر است. اما اسکرینشات از آن هم سادهتر و سرراستتر است. امتحانش کنید.
7- Plumber: تشخیص نشت حافظه
زبالهجمعکن در JVM، اشیایی که دیگر ازشان استفاده نمیشود را پیدا میکند. با این حال، گاهی توسعهدهندگان ارجاع به اشیایی که ازشان استفاده نمیشود را همچنان نگه میدارند. به این ترتیب نشت حافظه رخ میدهد و میتوان از Plumber استفاده کرد. Plumber موارد مربوط به نشت حافظه را تشخیص داده و گزارش میکند و اطلاعاتی به درد بخور جهت رفع آن ارایه میدهد.
ویژگیهای کلیدی:
- تشخیص و اخطار نشت حافظه در لحظه
- ارایه گزارش همراه با اطلاعات کامل نظیر زمان، اندازه، سرعت و اهمیت نشت حافظه
- گزارش محل نشت حافظه در کد
ویژگی متمایزکننده:
جمعآوری اطلاعات از کد شما و سریع و دقیق گفتن اینکه برای رفع مشکل به چه چیزی نیاز دارید.
1 Garbage Collection
2 Deadlock
3 Schema free
4 Deployment
https://www.javacodegeeks.com/2014/06/7-new-tools-java-developers-should-know.html
سلام ممنون بابت مطالبتون من در این سایت راجب جاوا ۱۰ مطالبی روخوندم تازه دوره اول جاوا رو گزروندم میخوام بدونم این کد ها کجا کاربرد دارن؟؟؟؟؟؟؟
href=”https://mimland.com/%D8%AC%D8%A7%D9%88%D8%A7-10-%D9%88-local-variable-type-inference/”
با سلام و خدا قوت
اول از سایت خوبتون تشکر میکنم
دوم اینکه پیشنهاد میکنم تو مقاله هاتون صرفا به ترجمه اکتفا نکنید.ینی مثلا واژه Integrated رو فقط به صورت تجمیع شده نیارید تو مقاله.سعی کنید کاربرد و مفهوم واقعی کلمه رو بگید یا اگه نمیشه عینا خود کلمه رو داخل پرانتز بیارید تا ما بفهمیم منظور شما چیه.
یا یه مثال عملی خیلی کوتاه یا یه عکسی که مغهومو برسونه بذارید.
چون برنامه نویسا اغلب منابع رو میخونن تا ترجمه و درستش هم اینه که هر چیزیو باید به زبون خودش یاد گرفت.
اگه این مواردو رعایت کنید تو کارتون خیلی عالی تر میشه.
بازم ممنون
سلام
خیلی ممنون از نظر و پیشنهادتون. حتما سعی میکنیم تا جای ممکن مواردی که گفتید رو در نظر بگیریم.
اما در مورد ترجمهها:
در ترجمهها معمولا سعی شده اگر حس کردیم معادل فارسی یک کلمه خیلی مصطلح و جاافتاده نیست، حتما معادل انگلیسی آن را یا داخل پرانتز و یا به صورت پاورقی (footnote) در انتهای نوشته بیاوریم. از آنجایی که در محیطهای علمی و آکادمیک در ایران، بسیاری از مقالات و صددرصد پایاننامهها به فارسی نوشته میشوند و افراد از معادلهای فارسی کلمات باید استفاده کنند، بسیاری از کلمات معادلهای جاافتاده و شناختهشدهای دارند. بنابراین اگر شما با این معادلهای فارسی آشنایی هم ندارید، خوب است از طریق همین مقالات به مرور با آنها آشنا شوید. از طرفی دیگر، آنقدر تعداد کلمات این چنینی زیاد است که اگر در هنگام ترجمه بخواهیم همهی آنها را به همان صورت انگلیسی در متن بیاوریم، قطعا خوانایی نوشته کمتر خواهد شد.
در هر صورت بیشتر تلاش خواهیم کرد که ترجمهها تا جای ممکن روان و رسا بوده و گنگ نباشند.
ممنون