کتاب Java Cookbook, 5th Edition: Problems and Solutions for Java Developers (کتاب راهنمای جاوا، ویرایش پنجم: مسائل و راهحلها برای توسعهدهندگان جاوا) یک راهنمای عملی و جامع برای برنامهنویسان جاوا است که به منظور حل مشکلات رایج و بهبود مهارتهای توسعه نرمافزاری تهیه شده است. این کتاب شامل مجموعهای از دستورات مختلف است که هر کدام به یک مسئله خاص در برنامهنویسی جاوا پرداخته و راهحلهای عملی و کدهای نمونه ارائه میدهد.
با تمرکز بر روی APIهای استاندارد و ویژگیهای جدید زبان، کتاب Java Cookbook مباحثی از جمله رشتهها، کار با تاریخ و زمان، مدیریت ورودی و خروجی، برنامهنویسی چندنخی، و نیز تکنیکهای شیگرا و تابعی را پوشش میدهد. همچنین، طراحی کتاب به گونهای است که برنامهنویسان با هر سطح تجربهای بتوانند به سرعت به بخشهای مورد نظر خود دسترسی پیدا کنند و از مثالها و تکنیکهای عملی استفاده کنند.
در ادامه مقدمهای از کتاب Java Cookbook را از زبان نویسنده شرح خواهیم داد.
مقدمهای بر کتاب Java Cookbook:
مانند هر یک از زبانهای برنامهنویسی پرکاربرد، جاوا نیز مخالفان، مدافعان، مسائل، ویژگیهای خاص و منحنی یادگیری خاص خود را دارد. هدف از نگارش “کتاب آشپزی جاوا” کمک به توسعهدهندگان جاوا برای آشنا شدن با برخی از مهمترین جنبههای توسعه جاوا است. من بر روی APIهای استاندارد و برخی APIهای شخص ثالث تمرکز دارم، اما از پرداختن به مسائل زبانی هم دریغ نمیکنم.
این پنجمین ویرایش کتاب Java Cookbook است و تحت تأثیر افراد زیادی و تغییرات فراوانی که جاوا در طول ۲.۵ دهه محبوبیت خود تجربه کرده، شکل گرفته است. خوانندگانی که به تاریخچه جاوا علاقهمندند میتوانند به ضمیمه A مراجعه کنند.
نسخه ۲۱ جاوا، نسخه فعلی با پشتیبانی بلندمدت (LTS) است و جاوا ۲۴ آخرین نسخه منتشر شده در زمان انتشار این ویرایش است. جریان فعلی انتشار هر شش ماه یک بار ممکن است برای تیم توسعه جاوا SE در اوراکل، توسعهدهندگانی که میخواهند به جدیدترین و بهترین دسترسی داشته باشند و سایتهای خبری مرتبط با جاوا مفید باشد، اما این ممکن است “موجب صرف زمان و کار اضافی” برای نویسندگان کتابهای جاوا باشد، زیرا کتابها معمولاً دورهای تجدیدنظر طولانیتری نسبت به جاوا دارند! جاوا ۹ که بعد از ویرایش قبلی کتاب Java Cookbook منتشر شد، یک نسخه تقریباً شکستهکننده بود و اولین نسخه در مدت طولانی که تقریباً سازگاری معکوس را نقض میکرد، به ویژه سیستم ماژول پلتفرم جاوا.
کلیه مطالب این ویرایش کتاب Java Cookbook فرض میشود که بر روی جاوا ۱۱ یا نسخههای بعدی کار میکند، مگر اینکه بهطور دیگری مشخص شده باشد (به “آیکنها” مراجعه کنید). در حال حاضر، هیچکس نباید از جاوا ۸ (یا هر نسخه پیش از آن) برای هر چیزی استفاده کند. مسلماً هیچکس نباید توسعه جدیدی را در جاوا ۸ انجام دهد.
اگر شما این کار را میکنید، زمان حرکت به جلو فرا رسیده است! در حالی که جاوا ۱۱ به عنوان یک نسخه LTS در نظر گرفته میشود، اما آنقدر قدیمی است که نباید از آن استفاده کرد. جاوا ۱۷ نسخه قبلی LTS و کاملاً قابل استفاده است، اما اگر میخواهید با یک نسخه LTS جاوا شروع خوبی داشته باشید، با جاوا ۲۱ شروع کنید.
هدف از این بازنگری در “کتاب راهنمای جاوا” این است که کتاب را با تمام این تغییرات بهروز نگه داریم. من ویژگیهای جدید متعددی را اضافه کردم که به معنای حذف مقدار قابل توجهی از مطالب بود. در سراسر فصلها، افزونههای متعددی وجود دارد. در چندین مکان، چند دستور پخت به منظور سادگی و خوانایی (و کاهش تعداد صفحات) با هم ترکیب شدهاند. و البته، من اطلاعات زیادی را در این بین بهروز کردهام.
کتاب Java Cookbook برای چه کسانی است؟
من فرض میکنم که شما با اصول اولیه جاوا آشنا هستید. من به شما نمیگویم که چگونه یک رشته را با println چاپ کنید، و نه اینکه چگونه کلاسی بنویسید که از کلاس دیگری ارث بری کرده و/یا یک رابط را پیادهسازی میکند. فرض میکنم که شما دورهای از جاوا گذراندهاید، مانند دوره معرفی Learning Tree (که من نسخه اول آن را چند دهه پیش نوشتم) یا با یک کتاب مقدماتی مانند:
– “Head First Java” تألیف کتی سیرا و برت بیتس (O’Reilly)، یک آموزش پر از استعارههای بصری و سایر تکنیکهای یادگیری دوستانه برای مغز
– “Java in a Nutshell” تألیف دیوید فلاناگان (O’Reilly)، کتابی مختصرتر که APIهای استاندارد را به تفصیل بررسی میکند
– “Think Java” تألیف آلن دوانی و کریس مایفیلد (O’Reilly)، یک معرفی عملی به علم کامپیوتر و برنامهنویسی از طریق جاوا
– “Learning Java” تألیف مارک لوئ، پاتریک نییمیر و دانیل لوک (O’Reilly)، کتابی برای برنامهنویسانی که به جاوا منتقل میشوند
با این حال، فصل ۱ برخی تکنیکها را پوشش میدهد که ممکن است شما به خوبی با آنها آشنا نباشید و برای درک برخی از مطالب بعدی ضروری هستند. با کمال میل میتوانید در فصلها بگردید! هم نسخه چاپی کتاب و هم نسخه الکترونیکی آن به طور گستردهای به یکدیگر ارجاع داده شدهاند.
فقط برای نشان دادن اینکه جاوا واقعاً چقدر بزرگ است، به شکل P-1 نگاهی بیندازید. نسخهای قدیمیتر از این نمودار قبل از تصاحب اوراکل در سایت سان آنلاین بود که هر کادر به مدارک مربوطه لینک میشد. شکل P-1 بازسازی من از آن است که با استفاده از یک برنامه ساده جاوا Swing به همین مناسبت نوشته شده است.
محتوای کتاب Java Cookbook چیست؟
در اوایل دهه ۲۰۰۰، جاوا به نظر میرسید که برای “توسعه در مقیاس بزرگ” یا توسعه برنامههای سازمانی بهتر است نسبت به اسکریپتهای کوتاه و یکبارهای که با پرل، AWK، پایتون یا شلهای یونیکسی/لینوکسی نوشته میشدند.
این به این دلیل است که جاوا یک زبان کامپایل شده و شیگرا است. با این حال، جاوا به تازگی برای کارهای خواسته شده که قبلاً ممکن بود با زبانهای اسکریپتی انجام شود، بهبود یافته است. JShell (دستور پخت ۱.۵) و مکانیزم run-java-source-file (به “بحث” مراجعه کنید) به حرکت جاوا در این جهت کمک کردهاند.
من بسیاری از تکنیکها را با مثالهای کوتاه کلاس جاوا و حتی قطعات کد نشان میدهم؛ برخی از سادهترین آنها با استفاده از JShell نمایش داده میشوند. تمام مثالهای کد که بیش از چند خط طول دارند در یکی از مخازن عمومی GitHub من موجود است، بنابراین میتوانید مطمئن باشید که تمام کدی که در اینجا میبینید کامپایل و اجرا شده است (بیشتر آنها به تازگی اجرا شدهاند).
چه چیزی در کتاب Java Cookbook نیست؟
از آنجا که برخی از خوانندگان ممکن است از ویرایشهای قبلی استفاده کرده باشند (از شما متشکرم!)، در اینجا فهرستی مختصر از اطلاعاتی که دیگر شامل نیست را میآورم.
ویرایش پنجم دستور پختهای منسوخ را از چندین فصل حذف کرده است. فهرستهای طولانی برنامه در انتهای بسیاری از فصلها از کتاب حذف شده و به جای آن لینکهایی برای مشاهده آنها از مخزن کد یا به صورت آنلاین قرار داده شده است.
ویرایش چهارم بحث درباره GUI Swing و گرافیک AWT را حذف کرد، هرچند که اینها هنوز در برخی مثالها استفاده میشوند. کد دسترسی به پایگاه داده نیز حذف شده است. کد مربوطه اکنون در پروژه دسکتاپ در مخزن javasrc بر روی GitHub باقی مانده است. برای دسترسی به کد پایگاه داده، به مخزن jpademo من مراجعه کنید.
دستورات حذف شده به وبسایت من منتقل شدهاند.
سازماندهی کتاب Java Cookbook:
بگذارید سازماندهی این کتاب را بررسی کنیم. هر فصل شامل تعدادی دستور راهما است—بخشهای کوتاهی که یک مشکل و راه حل آن را توصیف میکنند به همراه یک مثال کد. کد در هر دستور پخت به طور عمده خودکفا است؛ لطفاً از هر جزئی از آن برای استفاده در پروژههای خود بهره ببرید. کد با حق نشر به سبک برکلی “استفاده با ذکر منبع” توزیع شده است. بیشتر دستور پختها پوشش کاملی از موضوع خود ارائه میدهند.
با این حال، برخی موضوعات دارای جزئیات و ظرافت بیشتری هستند که نمیتوان آنها را در قالب دستور پخت پوشش داد؛ این موارد با ارجاعات به منابع اضافی برای توضیحات و مثالهای بیشتر پایان مییابند.
فصل ۱ کتاب Java Cookbook با عنوان “آغاز کار: کامپایل کردن و اجرای جاوا”، با توصیف برخی روشهای کامپایل برنامه شما بر روی پلتفرمهای مختلف و اجرای آنها در محیطهای متفاوت (خط فرمان، IDE و دسکتاپ پنجرهای) آغاز میشود. سپس به فصل ۲ کتاب Java Cookbook، “توسعه نرمافزار، تست و نگهداری” میرسد که تکنیکهایی برای ساخت برنامههای واقعی را بررسی میکند. موضوعاتی مانند ماژولهای جاوا، ابزارهای ساخت، تست واحد و یکپارچهسازی مداوم در اینجا بحث میشوند.
چند فصل بعدی به APIهای پایهای اختصاص دارد. فصل ۳ کتاب Java Cookbook، “رشتهها و موارد”، بر روی یکی از ابتداییترین اما قدرتمندترین نوعهای داده در جاوا تمرکز دارد و به شما نشان میدهد که چگونه “رشتهها” را مونتاژ، تجزیه، مقایسه و reorganize کنید، چیزی که ممکن است به عنوان متن معمولی در نظر بگیرید. این فصل همچنین موضوع بینالمللیسازی/محلیسازی را پوشش میدهد به طوری که برنامههای شما بتوانند در مکانهایی مانند اکبر، افغانستان، الجزایر، آمستردام و انگلستان نیز به خوبی عمل کنند.
فصل ۴ کتاب Java Cookbook، “مطابقت رشتهها با عبارات منظم”، به شما میآموزد که چگونه از فنآوری قدرتمند عبارات منظم از یونیکس بر روی رشتهها در بسیاری از حوزههای مشکل تطابق رشته و الگو استفاده کنید. پردازش Regex سالها در جاوا استاندارد بوده است، اما اگر نمیدانید چگونه از آن استفاده کنید، ممکن است در حال دوبارهسازی چرخ باشید.
فصل ۵ کتاب Java Cookbook، “اعداد”، به انواع عددی داخلی مانند int و double و همچنین کلاسهای API مربوطه (Integer، Double و غیره) و امکانات تبدیل و تستی که ارائه میدهند، میپردازد. همچنین به طور مختصر به کلاسهای “عدد بزرگ” اشاره شده است.
از آنجایی که برنامه نویسان جاوا معمولاً نیاز دارند تا با تاریخ و زمان، چه محلی و چه بینالمللی، سر و کار داشته باشند، فصل ۶ کتاب Java Cookbook، “تاریخها و زمانها”، به این موضوع مهم میپردازد.
فصل بعدی به ساختاردهی دادههای برنامه شما میپردازد. مانند اکثر زبانها، آرایهها در جاوا مجموعههای خطی و ایندکس شده از اشیاء مشابه هستند، همانطور که در فصل ۷، “ساختاردهی داده با جاوا” مورد بحث قرار میگیرد. این فصل از کتاب Java Cookbook، به بسیاری از کلاسهای Collection میپردازد: روشهای قدرتمند ذخیرهسازی مقادیر اشیاء در بسته java.util، از جمله استفاده از Genericهای جاوا.
با وجود برخی شباهتهای نحوی با زبانهای روالگرا مانند C، جاوا در قلب خود یک زبان برنامهنویسی شیگرا (OOP) است که برخی ساختارهای مهم برنامهنویسی تابعی (FP) به طور ماهرانهای در آن گنجانده شدهاند.
فصل ۸، “تکنیکهای شیگرا”، برخی از مفاهیم کلیدی OOP را که به جاوا مربوط میشود مورد بحث قرار میدهد، از جمله متدهای معمولاً بازنویسی شده از java.lang.Object و موضوع مهم الگوهای طراحی. جاوا یک زبان کامل FP نیست و هرگز نخواهد بود. با این حال، ممکن است برخی جنبههای FP را استفاده کنید و این موضوع به ویژه با جاوا ۸ و پشتیبانی از عبارات لامبدا (به اصطلاح closures) بیشتر شده است. این موضوع در فصل ۹ کتاب Java Cookbook، “تکنیکهای برنامهنویسی تابعی: رابطهای تابعی، جریانات و مجموعههای موازی” مورد بحث قرار میگیرد.
فصل ۱۰، “ورودی و خروجی: خواندن، نوشتن و ترفندهای دایرکتوری”، قوانین مربوط به خواندن و نوشتن فایلها را توضیح میدهد (اگر فکر میکنید فایلها کسلکننده هستند، این فصل را از دست ندهید؛ شما به برخی از این اطلاعات در فصلهای بعدی نیاز خواهید داشت). این فصل از کتاب Java Cookbook همچنین هر چیز دیگری درباره فایلها—مانند یافتن اندازه و زمان آخرین ویرایش—و همچنین درباره خواندن و ویرایش دایرکتوریها، ایجاد فایلهای موقتی و تغییر نام فایلها در دیسک را به شما نشان میدهد.
جاوا یکی از اولین زبانهای اصلی بود که پشتیبانی زبانی برای رشتهها را ارائه میداد، یعنی مفهوم جریانهای چندگانه کنترل درون یک فرایند واحد. فصل ۱۱، “جاوای چندنخی”، به شما میآموزد چگونه کلاسهایی بنویسید که به نظر میرسد بیشتر از یک کار را در یک زمان انجام میدهند و به شما اجازه میدهند از سختافزار چندپردازنده قدرتمند استفاده کنید.
دادههای بزرگ و علم داده به یک موضوع داغ تبدیل شدهاند و جاوا نیز در این حوزه حضور دارد. فصل ۱۲ کتاب Java Cookbook، “علم داده و R” به برخی نرمافزارهای کلیدی علم داده و زبان R میپردازد. آپاچی هدوپ، آپاچی اسپارک و بسیاری از زیرساختهای دادههای بزرگ دیگر به زبان جاوا نوشته شده و قابل گسترش هستند.
اسپارک همچنین در این فصل معرفی میشود. زبان برنامهنویسی R برای دانشمندان داده، آمارگران و سایر دانشمندان محبوب است. R، مانند زبان S اصلی که از آن کپی شده بود، به زبان C/C++ نوشته شده است. حداقل دو پیادهسازی مجدد از R در جاوا نوشته شده و جاوا نیز میتواند به طور مستقیم با پیادهسازی استاندارد R در هر دو جهت مرتبط شود.
یادگیری ماشین (ML) و همچنین مدلهای زبانی بزرگ مولد (LLMs) از اجزای کلیدی چیزی هستند که هوش مصنوعی (AI) نامیده میشود. AI از زمان انتشار ChatGPT و رقبایش و فرزندانش به یک موضوع داغ تبدیل شده است. فصل ۱۳ کتاب Java Cookbook، “یادگیری ماشین/هوش مصنوعی”، درباره AI به طور کلی صحبت کرده و سپس بر روی چندین کتابخانه جاوا برای اعمال AI تمرکز میکند.
از آنجا که جاوا در اصل به عنوان زبان برنامهنویسی اینترنت معرفی شد، فقط عادلانه است که مدتی را به شبکهسازی در جاوا اختصاص دهیم. فصل ۱۴ کتاب Java Cookbook، “کلاینتهای شبکه”، مبانی برنامهنویسی شبکه را از سمت کلاینت پوشش میدهد و بر روی سوکتها تمرکز دارد.
امروزه بسیاری از برنامهها نیاز دارند که به یک وبسرویس، به ویژه وبسرویسهای RESTful، دسترسی پیدا کنند، که این موضوع به نظر ضروری میرسد. سپس به سمت سرور در فصل ۱۵ کتاب Java Cookbook، “جاوای سمت سرور” میروم، جایی که شما برخی تکنیکهای برنامهنویسی سمت سرور را یاد خواهید گرفت.
یکی از سادهترین نمایشهای مبتنی بر متن برای تبادل دادهها JSON، فرمت نوشتاری JavaScript Object Notation است. فصل ۱۶ کتاب Java Cookbook، “پردازش دادههای JSON”، فرمت و برخی از بسیاری APIهایی که برای مدیریت آن ظهور کردهاند را توصیف میکند.
فصل ۱۷، “بازتاب، یا “کلاسی به نام کلاس”، شما را با رازهایی آشنا میکند مانند اینکه چگونه میتوان به طور مکانیکی مدارک ارجاع متقابل API را نوشت و چطور وبسرورها میتوانند هر سرویلت قدیمی را بارگذاری کنند—حتی اگر هرگز آن کلاس خاص را ندیده باشند—و آن را اجرا کنند.
گاهی اوقات شما قبلاً کدی را در زبان دیگری نوشته و کار میکند که میتواند بخشی از کار شما را انجام دهد، یا میخواهید از جاوا به عنوان بخشی از یک بسته بزرگتر استفاده کنید. فصل ۱۸ کتاب Java Cookbook، “استفاده از جاوا با زبانهای دیگر”، به شما نشان میدهد چگونه یک برنامه خارجی (کامپایل شده یا اسکریپت) را اجرا کنید و همچنین به طور مستقیم با کد بومی در C/C++ یا زبانهای دیگر تعامل کنید.
در کتاب Java Cookbook فضای کافی برای تمام مواردی که میخواهم درباره جاوا به شما بگویم وجود ندارد. در بخشی کوتاه پسگفتار، برخی افکار پایانی و لینکی به مرور آنلاین من از APIهای جاوا که هر توسعهدهنده جاوا باید درباره آنها بداند، ارائه شده است.
در نهایت، ضمیمه A، “جاوا دیروز و امروز”، تاریخ داستانی جاوا را در یک زمانبندی بروز به بروز ارائه میدهد، بنابراین هر نسخه از جاوا را که یاد گرفتهاید، میتوانید به راحتی در اینجا وارد شده و بهروز شوید. نسخههای قبل از ۱۶ به وبسایت خودم منتقل شدهاند.
بسیاری از موضوعات و تعداد صفحات کم! بسیاری از موضوعات شامل پوشش ۱۰۰ درصدی نیستند؛ من سعی کردهام مهمترین یا مفیدترین بخشهای هر API را شامل کنم. برای اطلاعات بیشتر، صفحات Javadoc رسمی هر بسته را بررسی کنید. بسیاری از این صفحات اطلاعات آموزشی مختصری درباره نحوه استفاده از بسته دارند.
علاوه بر بخشهای جاوا که در کتاب Java Cookbook پوشش داده شده است، دو ویرایش دیگر پلتفرم، ویرایش میکرو جاوا (Java ME) و ویرایش سازمانی جاوا (Java EE)، استاندارد شدهاند. جاوا ME به دستگاههای کوچک مانند دستیارهای الکترونیکی، تلفنهای “ویژگی” کوچک (نه واقعاً اسمارتفونها)، ماشینهای فکس و غیره مربوط میشود. در انتهای دیگر مقیاس اندازه—ماشینهای سرور بزرگ—Eclipse Jakarta EE وجود دارد. این ادامهای بر Java EE قبلی است که در قرن گذشته به طور مختصر به عنوان J2EE شناخته میشد.
Jakarta EE به ساخت برنامههای بزرگ، مقیاسپذیر و توزیع شده اختصاص دارد. APIهایی که بخشی از Jakarta EE هستند عبارتند از: Servlets، JavaServer Pages، JavaServer Faces، JavaMail، Contexts and Dependency Injection (CDI)، JAX-RS برای وبسرویسهای RESTful، JSON-P و JSON-B برای پردازش دادههای فرمت JSON و Transactions. نام بستههای Jakarta EE در اصل با “javax.” آغاز میشدند زیرا آنها بستههای اصلی نبودند، اما اکنون به “jakarta.” منتقل شدهاند.
این کتاب فقط به چند مورد از اینها اشاره میکند. “کتاب آشپزی Jakarta EE” نوشته الدر مورهس (Packt Publishing) به برخی از APIهای Jakarta EE میپردازد، مشابه کتاب قدیمیتر “کتاب آشپزی Servlet و JSP جاوا” نوشته بروس پری (O’Reilly).
کتاب Java Cookbook به هیچ وجه به جاوا ME نمیپردازد. اما با صحبت کردن درباره تلفنهای همراه و دستگاههای همراه، احتمالاً میدانید که اندروید از جاوا به عنوان زبان خود استفاده میکند، همچنین از کاتلین که یک سادگی و توسعهی جاوا است. چیزی که باید برای توسعهدهندگان جاوا تسلیبخش باشد این است که اندروید همچنین از اکثر APIهای اصلی جاوا استفاده میکند، به جز Swing و AWT که برای آنها جایگزینهای خاص Android ارائه میدهد.
توسعهدهنده جاوا که میخواهد اندروید را یاد بگیرد ممکن است به نگاه کردن به “کتاب آشپزی اندروید” من (O’Reilly) یا وبسایت کتاب علاقهمند باشد.
سرفصلهای کتاب Java Cookbook:
- Preface
- 1. Getting Started: Compiling and Running Java
- 2. Software Development, Testing, and Maintenance
- 3. Strings and Things
- 4. String Matching with Regular Expressions
- 5. Numbers
- 6. Dates and Times
- 7. Structuring Data with Java
- 8. Object-Oriented Techniques
- 9. Functional Programming Techniques: Functional Interfaces, Streams, and Parallel Collections
- 10. Input and Output: Reading, Writing, and Directory Tricks
- 11. Threaded Java
- 12. Data Science and R
- 13. Machine Learning/Artificial Intelligence
- 14. Network Clients
- 15. Server-Side Java
- 16. Processing JSON Data
- 17. Reflection, or “A Class Named Class”
- 18. Using Java with Other Languages
- Afterword
- Java Then and Now
- Index
- About the Author
جهت دانلود کتاب Java Cookbook میتوانید پس از پرداخت، دریافت کنید.
دیدگاهها
هیچ دیدگاهی برای این محصول نوشته نشده است.