مجله علمی تفریحی بیبیس
0

دانلود کتاب توسعه‌ خوب جاوا – ویرایش دوم

بازدید 1110
  • عنوان: The Well-Grounded Java Developer – Second Edition
  • نویسنده: BENJAMIN J. EVANS
  • حوزه: برنامه نویسی جاوا
  • سال انتشار: 2022
  • تعداد صفحه: 702
  • زبان اصلی: انگلیسی
  • نوع فایل: pdf
  • حجم فایل: 18.8 مگابایت

چاپ اول این کتاب به عنوان مجموعه ای از یادداشت های آموزشی که برای توسعه دهندگان فارغ التحصیل جدید در بخش ارز یک بانک نوشته شده بود، زندگی خود را آغاز کرد. یکی از ما (بن)، با نگاهی به کتاب‌های موجود در بازار، متوجه کمبود مطالب به‌روز شد که هدف آن توسعه‌دهندگان جاوا است که می‌خواهند سطح بالاتری داشته باشند. در طول نوشتن آن مطالب، او متوجه شد که در حال نوشتن آن کتاب گمشده است و از مارتین برای کمک دعوت کرد. این بیش از 10 سال پیش بود – ما در حال نوشتن جاوا 7 در حال توسعه بود – و جهان اکنون بسیار متفاوت است. در پاسخ، کتاب از چاپ اول تغییرات اساسی کرده است. بنابراین، اگرچه اهداف اولیه اولیه ما معرفی موضوعاتی مانند ■ برنامه نویسی چند زبانه ■ تزریق وابستگی ■ برنامه نویسی چند رشته ای ■ ساخت صدا و شیوه های CI ■ موارد جدید در جاوا 7 هنگام نوشتن نسخه دوم بود، متوجه شدیم که باید برخی از آنها را ایجاد کنیم. تغییرات، از جمله ■ کاهش کمی چند زبانه ■ افزودن تاکید جدید بر برنامه نویسی عملکردی ■ تقویت بحث چند رشته ای ■ قرار دادن چرخش متفاوت در ساخت و استقرار (از جمله کانتینرها) ■ صحبت در مورد چیزهای جدید در جاوا 11 و 17

یکی از تغییرات بسیار مهم این بود که نسخه اول Scala را به عنوان یکی از سه زبان غیر جاوا مورد بحث قرار داد (دیگر زبان‌های Groovy و Clojure بودند – Kotlin در زمانی که ما آن را نوشتیم واقعاً وجود نداشت). در آن زمان، بسیاری از توسعه دهندگانی که در حال کاوش در Scala بودند، به دنبال «جاوا، اما تله موش بهتر» بودند، که اساساً دیدگاه Scala است که در نسخه اول ارائه کردیم. با این حال، از آن زمان، جهان حرکت کرده است. جاوا 8 و 11 به شدت مسلط شدند و خدمه “بهتر تله موش” بیشتر در حال نوشتن Kotlin هستند (یا فقط به جاوا چسبیده اند). در این بین، اسکالا به یک زبان JVM با تایپ استاتیک بسیار قدرتمند تبدیل شده است. این برای افرادی که آن را می‌خواهند عالی است، اما هزینه‌هایی مانند زمان اجرا پیچیده‌تر و زبانی که هر چه می‌گذرد کمتر و کمتر با جاوا مشترک است، همراه است. این توسعه گاهی اوقات به صورت اختصاری به عبارت «اسکالا می‌خواهد در JVM هسکل باشد» خلاصه می‌شود، اگرچه این کاملاً دقیق نیست و بیش از هر چیز دیگری یک کوتاه‌نویسی مکالمه راحت است. بنابراین، پس از اینکه تصمیم گرفتیم Groovy را از نسخه دوم حذف کنیم، به سختی فکر کردیم که آیا Scala را حفظ کنیم یا آن را با Kotlin جایگزین کنیم. نتیجه نهایی ما اساساً این بود که Scala به سمت مسیری خاص خود حرکت می‌کند، و ما می‌خواهیم زبانی را ارائه دهیم که برای توسعه‌دهندگان جاوا که تازه به زبان‌های غیر جاوا مانند Kotlin می‌آمدند، قابل دسترس‌تر باشد. این ما را با یک دوراهی مواجه کرد. بخش‌هایی از Scala که به راحتی برای مردم جاوا قابل دسترسی است، بسیار شبیه به Kotlin هستند (در برخی موارد با نحو تقریباً یکسان)، اما فلسفه و جهت حرکت این دو زبان کاملاً متفاوت است. ما احساس کردیم که توضیح دادن آنچه اسکالا در عمق کافی است – به طوری که پوشش آن از کاتلین متمایز باشد – فضای بسیار زیادی را در کتاب اشغال می کند. بنابراین، تصمیم نهایی ما این بود که از سه زبان به دو زبان دیگر کاهش دهیم تا فضا ایجاد شود و به پوشش زبان‌های باقی‌مانده (Kotlin و Clojure) عمق بیشتری بدهیم. به همین دلیل، اگرچه ما هر از گاهی در مورد اسکالا اظهار نظر می کنیم، بخش های کامل (چه رسد به فصل ها) را به آن اختصاص نمی دهیم. Clojure داستانی بسیار متفاوت – و در واقع، زبانی بسیار متفاوت – با Kotlin یا Java است. به عنوان مثال، در فصل 15 ما کمی مشکل داریم زیرا بسیاری از مفاهیمی که در زبان های دیگر معرفی می کنیم (مانند توابع مرتبه بالاتر و بازگشت) قبلاً معرفی شده اند و فقط “بخشی از چشم انداز” در Clojure هستند. به جای پیروی از الگوی مورد استفاده توسط جاوا و کاتلین، بحث به سمت دیگری می رود. Clojure اساساً زبانی بسیار کاربردی‌تر است و اگر بخواهیم دقیقاً همان ساختار زبان‌های دیگر را دنبال کنیم، در نهایت خودمان را زیاد تکرار می‌کنیم. در این کتاب، امیدواریم که موضوع توسعه نرم افزار به عنوان یک فعالیت اجتماعی به وضوح مطرح شود. ما معتقدیم که جنبه‌های فنی این صنعت مهم است، اما نگرانی‌های ظریف‌تر ارتباط و تعامل بین افراد حداقل به همان اندازه مهم است. توضیح این جنبه‌ها در یک کتاب می‌تواند سخت باشد، اما این موضوع در سراسر کتاب وجود دارد.

The first edition of this book started life as a set of training notes written for new graduate developers in the foreign exchange department of a bank. One of us (Ben), looking at the existing books on the market, found a lack of up-to-date material aimed at Java developers who wanted to level up. Partway through writing that material, he found he was writing that missing book and enlisted Martijn to help. That was more than 10 years ago—we were writing as Java 7 was being developed— and the world is very different now. In response, the book has changed substantially since the first edition. So, although our original primary goals were to introduce topics like ■ Polyglot programming ■ Dependency injection ■ Multithreaded programming ■ Sound build and CI practices ■ What’s new in Java 7 when we came to write the second edition, we found that we needed to make some changes, including ■ Trimming down polyglot a bit ■ Adding a new emphasis on functional programming ■ Enhancing the discussion of multithreading ■ Putting a different spin on build and deploy (including containers) ■ Talking about what’s new in Java 11 and 17

One very important change was that the first edition included Scala as one of three non-Java languages discussed (the others being Groovy and Clojure—Kotlin didn’t really exist at the time we wrote it). At that time, many of the developers exploring Scala were looking for “Java, but a better mousetrap,” which is essentially the view of Scala that we presented in the first edition. However, since then, the world has moved on. Java 8 and 11 became hugely dominant, and the “better mousetrap” crew are mostly writing Kotlin (or just sticking with Java). Scala, in the meantime, has become a very powerful statically typed, FP-first JVM language. This is great for the folks who want that, but it has come with costs, such as an ever-more-complex runtime and a language that has less and less in common with Java as time goes by. This development is sometimes abbreviated to the phrase that “Scala wants to be Haskell on the JVM,” although this is not entirely accurate and is more a convenient conversational shorthand than anything else. So, after having made the decision to drop Groovy from the second edition, we thought long and hard about whether to keep Scala or replace it with Kotlin. Our eventual conclusion was basically that Scala is heading in its own, FP-heavy direction, and that we wanted to present a language that was more approachable to Java developers who were coming fresh to non-Java languages, such as Kotlin. This left us with a dilemma. The parts of Scala that are easily accessible to Java folks are very similar to Kotlin (with near-identical syntax in some cases), but the philosophy and direction of travel of the two languages are totally different. We felt that explaining what Scala is in sufficient depth—so that the coverage was distinct from Kotlin— would take up far too much space in the book. Therefore, our eventual decision was to drop from three to two additional languages to make space and give extra depth to the coverage of the remaining languages (Kotlin and Clojure). For this reason, although we make the occasional comment about Scala, we don’t devote entire sections (let alone chapters) to it. Clojure is a very different story—and, indeed, a very different language—than either Kotlin or Java. For example, in chapter 15 we struggle a bit because many of the concepts that we’re introducing in the other languages (e.g., higher-order functions and recursion) have already been introduced and are just “part of the landscape” in Clojure. Rather than follow the template used by Java and Kotlin, the discussion goes in a different direction. Clojure is, fundamentally, a much more functionally oriented language, and we would just end up repeating ourselves a lot if we were to follow the exact same structure as for the other languages. In this book, we hope that the theme of software development as a social activity rings out clearly. We believe that the technical aspects of the craft are important, but the more subtle concerns of communication and interaction between people are at least as important. It can be hard to explain these facets easily in a book, but that theme is present throughout.

این کتاب را میتوانید بصورت رایگان از لینک زیر دانلود نمایید.

Download: The Well-Grounded Java Developer – Second Edition

نظرات کاربران

  •  چنانچه دیدگاه شما توهین آمیز باشد تایید نخواهد شد.
  •  چنانچه دیدگاه شما جنبه تبلیغاتی داشته باشد تایید نخواهد شد.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد.

بیشتر بخوانید