Effective Java, 3rd Edition
در سال 1997، زمانی که جاوا جدید بود، جیمز گاسلینگ (پدر جاوا)، آن را به عنوان «زبان یقه آبی» توصیف کرد که «بسیار ساده بود». تقریبا در همان زمان، بییارنه استراستروپ (پدرC++ ) زبان C++ را به عنوان «زبانی چند الگویی» توصیف کرد که «تعمدا با زبان هایی که برای پشتیبانی از یک روش واحد برای نوشتن برنامهها طراحی شده بودند متفاوت است».
اکنون پس از بیست سال، عادلانه است که بگوییم Gosling و Stroustrup هر دو درست میگفتند. اکنون جاوا بزرگ و پیچیده است و همراه با چندین انتزاع برای بسیاری از چیز ها، از اجرای موازی تا تکرار و نمایش تاریخ و زمان است. من هنوز جاوا را دوست دارم، هرچند که حرارت من با رشد پلتفرم کمی سرد شده است. با توجه به افزایش اندازه و پیچیدگی آن، نیاز به یک راهنمای به روز بهترین شیوهها بسیار مهمتر شده است. در ویرایش سوم کتاب Effective Java، من تمام تلاش خود را کردم تا یکی از آنها را برای شما فراهم کنم. امیدوارم این نسخه همچنان برآورده کننده نیاز باشد و در عین حال به ماهیت دو ویرایش اول نیز پایبند باشد.
جاوا از زمانی که ویرایش قبلی کتاب Java Effective اندکی پس از انتشار جاوا 6 منتشر شد، به طرز چشمگیری تغییر کرده است. این کتاب، اکنون به طور کامل به روز شده است تا از جدیدترین ویژگیهای زبان و کتابخانه نهایت استفاده را ببرد. پشتیبانی جاوای مدرن از چندین پارادایم، نیاز به توصیههای بهترین شیوههای خاص را افزایش میدهد و این کتاب آنها ارائه میدهد. مانند ویرایشهای قبلی، هر فصل از ویرایش سوم Effective Java شامل چندین "مورد" است که هر یک در قالب یک مقاله کوتاه و مستقل ارائه شده اند که توصیه خاص، بینش در مورد ظرافتهای پلتفرم جاوا و نمونه کدهای به روزی را فراهم میکند.
ویرایش سوم Effective Java، قابلیتهای زبان و کتابخانه که در جاوا 7 ، 8 و 9 اضافه شده اند را در بر میگیرد، از جمله ساختارهای برنامه نویسی تابعی است که به ریشههای شی گرایی آن اضافه شده است. موارد جدید بسیاری اضافه شده است از جمله یک فصل به lambdaها و streamها اختصاص داده شده است.
مطالب جدیدی که در ویرایش سوم کتاب جاوای موثر، پوشش داده شده اند:
- رابطهای تابعی، عبارات لامبدا، ارجاعات متد و جریان ها
- متدهای default و static در interface ها
- استنباط نوع از جمله عملگر الماس برای انواع generic
- گزارمان SafeVarargs@
- دستور try-with-resources
- ویژگیهای کتابخانه جدید مانند interface اختیاری، java.time و متدهای کارخانه ای راحت برای مجموعه ها