محتوا:
- بخش صفر - Java Core
- ابزار
- JDK API
- موارد جدید در جاوا 8
- SQL، پایگاه داده، JDBC
- چارچوب ها
- کتابخانه ها و چارچوب هایی برای آزمایش
- کتابخانه های خدماتی
- مشتریان API
- الگوهای طراحی
- دانش اضافی
0. بخش صفر - Java Core
ما بخش صفر را در مقاله درج کردیم، در صورتی که شخصی که تازه قصد یادگیری جاوا را دارد و نمی داند از کجا شروع کند به اینجا بیاید. Java Core چیزی است که حتی یک مبتدی نیز باید آن را به خوبی بداند. یعنی دانستن چیزهای اساسی، درک آنچه که زبان برای حل یک مشکل خاص ارائه می دهد و در موارد ساده بتوان این دانش را به کار گرفت. شما می توانید Java Core را در JavaRush تمرین کنید، و اگر هنوز این کار را انجام نداده اید، از شما دعوت می کنیم در این دوره شرکت کنید ! خوب، برای بقیه، اجازه دهید نقاط عطف اصلی Java Core را به شما یادآوری کنیم:- سازه های اصلی جاوا، عملگرها و انواع داده ها
- OOP و پیاده سازی آن در جاوا
- استثناها
- مجموعه های جاوا
- ژنریک ها
- چند رشته ای
1. ابزار
IDE یا محیط توسعه یکپارچه
ابزار اصلی یک توسعه دهنده مدرن یک IDE است. امروزه تعداد زیادی از آنها در بازار وجود دارد، اما در توسعه حرفه ای جاوا معمولا فقط دو نام وجود دارد. این Eclipse رایگان است که بر روی پلاگین ها ساخته شده است ، که سالیان متوالی کف دست را نگه داشته است، و IntelliJ IDEA است که در سال های اخیر به طور فعال Eclipse را جایگزین کرده است، و این با وجود این واقعیت است که اشتراک نسخه Ultimate مورد نیاز است. حرفه ای ها هزینه دارند یادآوری می کنیم که در دوره JavaRush از نسخه رایگان Community IntelliJ IDEA استفاده می کنیم که محدودیت های عملکردی خاصی در مقایسه با Ultimate دارد. عبارت “I know the IDE” به این معنی است که شما با قابلیتهای اولیه محیط توسعه آشنا هستید، میدانید چگونه فایلها را کامپایل، اجرا، اشکالزدایی و تست کنید و کد Refactor کنید. تسلط بر کلیدهای داغ کمک خوبی برای سرعت بخشیدن به کار شما خواهد بود. تنبل نباشید، چند ساعتی را صرف یادگیری در مورد ویژگی های IDE کنید که نمی دانستید و شروع به استفاده از آنها در عمل کنید. و از اشکال زدایی غافل نشوید، این یک مهارت بسیار مفید است. همه این اقدامات به بهبود قابل توجه سرعت و کیفیت کار شما کمک می کند.ابزار برای مونتاژ خودکار
امروزه پروژه های جاوا بیشتر از ابزارهایی مانند Maven و Gradle استفاده می کنند. مطالعه کامل آنها ضروری نیست، اما درک تفاوت آنها با یکدیگر، بر اساس چه چیزهایی، چه وظایفی (در Gradle) و مراحل با اهداف در Maven مفید خواهد بود. خواندن در مورد سیستم ها و استقرار چند پروژه کوچک روی آنها کافی است. انجام این کار بسیار ساده است و شما جزئیات را در شرایط کاری واقعی درک خواهید کرد.سیستم های کنترل نسخه و خدمات میزبانی آنلاین
یک سیستم کنترل نسخه چیزی است که به برنامه نویسان کمک می کند تا در یک تیم روی یک پروژه مشترک بدون "شکستن" آن کار کنند، تکه های کد متفاوت ساخته شده توسط افراد مختلف را همگام سازی کنند، به روز رسانی های ناموفق را برگردانند و موارد جدید اضافه کنند. رایج ترین آنها دو سیستم کنترل نسخه هستند. یکی از آنها توزیع شده است و Git نام دارد، دومی متمرکز است، به نام SVN (معروف به براندازی). امروزه Git استاندارد عملی است. کار با این سیستم راحتتر و راحتتر است؛ این سیستم توسط همه IDEها (و همچنین SVN) پشتیبانی میشود. می توانید به سرعت و به راحتی کار با Git را امتحان کنید؛ خوشبختانه اطلاعات زیادی در مورد این موضوع در اینترنت وجود دارد. به عنوان مثال، کتاب درسی تعاملی GitHowTo که به زبان روسی موجود است (خیلی سریع از طریق آن می گذرد). برای یک توسعه دهنده مبتدی تسلط بر خدمات میزبانی آنلاین برای سیستم های کنترل نسخه بسیار مهم است. اغلب آنها مبتنی بر Git هستند و پلتفرم های Git نامیده می شوند (اگرچه برخی از آنها می توانند با سیستم های کنترل نسخه های مختلف کار کنند). محبوب ترین آنها GitHub است. BitBucket و GitLab نیز بسیار رایج هستند. این سیستمها به شما کمک میکنند کد را ذخیره و بازیابی کنید، و همچنین کارهایی را که Git میتواند انجام دهد، نه از طریق خط فرمان، بلکه از طریق رابط انجام دهید. GitHub همچنین به شما امکان می دهد کد را بررسی کنید و راه حل هایی را برای مشکلات به طور مستقیم در سایت ارائه دهید. در آنجا می توانید پروژه منبع باز شخص دیگری را نیز پیدا کنید و سعی کنید راه حل های خود را برای بهبود آن ارائه دهید. در اصل، GitHub نوعی شبکه اجتماعی برای توسعه دهندگان است. بنابراین اگر قبلاً این کار را نکرده اید، حتماً یک حساب کاربری در GitHub ایجاد کنید و پروژه های خود را در آنجا میزبانی کنید. همچنین در مورد GitLab و BitBucket بخوانید و اگر وقت دارید می توانید آنها را امتحان کنید، آنها نسخه های رایگان دارند. به هر حال، همه این پلتفرم ها به طور کامل با IDE های مدرن یکپارچه شده اند.2. JDK API
این بخش آن دسته از APIهای JDK را که یک توسعهدهنده جاوا مدرن باید با اطمینان کامل بداند، برجسته میکند. برای یک برنامه نویس ضرری ندارد که هر از گاهی به کد منبع این کتابخانه ها نگاه کند، آنها را پیمایش کند و بفهمد که چه زمانی و چرا باید از آنها استفاده شود. عواقب جانبی: اگر به خوبی در این API ها مسلط باشید، احتمالاً زمان مصاحبه خود را بسیار راحت تر خواهید داشت. Java Collection Framework یکی از مهمترین APIهای زبان جاوا است و هر توسعه دهنده ای باید آن را بداند. این نشان دهنده سلسله مراتبی از رابط ها و پیاده سازی ساختارهای داده استاندارد در جاوا مانند لیست، لیست پیوندی، مجموعه، پشته، صف، جدول هش و بسیاری موارد دیگر است. توسعهدهنده باید درک خوبی از کلاسهای ArrayList، HashMap، HashSet، LinkedHashSet، TreeSet و سایر کلاسها داشته باشد و از ویژگیهای آنها اطلاع داشته باشد. به ویژه، شما باید هزینه های زمان و حافظه یک مجموعه خاص را برای عملیات استاندارد (شاخص، جستجو، درج، حذف) درک کنید و بر این اساس، آنها را به درستی در پروژه های خود اعمال کنید. مجموعه ها در جاوا بسیار خوب پیاده سازی می شوند، اما در صورت نیاز، توسعه دهنده می تواند پیاده سازی خود را ارائه دهد. برنامه نویسی که به خوبی در مجموعه ها مسلط است، می تواند منطق را در کلاس های قبلاً نوشته شده گسترش دهد یا دوباره تعریف کند، یا همه چیز را از ابتدا پیاده سازی کند.Java Concurrency API
جاوا در ابتدا برای پشتیبانی از برنامه نویسی موازی طراحی شده بود و از نسخه 5.0 این زبان شامل API های سطح بالا برای رشته های موازی است. بنابراین، یک توسعهدهنده جاوا باید به سادگی درک خوبی از چند رشتهای داشته باشد و درک درستی از APIهای اصلی بستههای java.util.concurrent.* داشته باشد . حداقل باید بدانید و به وضوح درک کنید که Thread، Runnable، قفل شی و همگام سازی چیست. مطمئن شوید که مفاهیم بن بست، زنده ماندن، شرایط مسابقه و اینکه با همه آن چه باید کرد را درک کنید. برای احساس اطمینان، همگامکنندههایی را از java.util.concurrent.* یاد بگیرید، مانند Semaphore، CyclicBarrier، CountDownLatch، Phaser، Exchanger<V>، CompleteableFuture و غیره. و همچنین رابط های Callable و Future.Java I/O API
توسعه دهندگان تازه کار اغلب مطالعه عمیق Java I/O و Java Nonblocking I/O را نادیده می گیرند . اما بیهوده: این API های جاوا کار با رشته ها را آسان تر می کنند و به طور منظم در برنامه های واقعی استفاده می شوند. به خصوص کلاس هایی مانند File، InputStream، OutputStream، Reader و Writer از بسته java.io، که هسته Java IO API است. Java Non-blocking I/O (java.nio) مجموعه ای از رابط های برنامه نویسی کاربردی است که برای اجرای عملیات I/O با کارایی بالا طراحی شده است. اینها به طور خاص شامل ByteBuffer، FileChannel و Selector و غیره هستند. برای درک این API ها زحمت بکشید، پشیمان نخواهید شد.- I/O در جاوا. کلاس های FileInputStream، FileOutputStream، BufferedInputStream
- صفحه کلید خواندن - خوانندگان
شی کلاس دستگاه
هنگامی که سوپرکلاس Object را درک کردید، به یک معنا تبدیل به یک "گوینده بومی جاوا" می شوید و از ساختار OOP و بسیاری از فرآیندها آگاه تر می شوید. کلاس java.lang.Object در بالای سلسله مراتب کلاس قرار دارد. علاوه بر درک بهتر آنچه در جریان است، دانستن روشهای کلاس مصاحبه را بسیار آسانتر میکند—مصاحبهگران فقط دوست دارند داوطلبان را با کلاس Object و اشیاء آن آزمایش کنند.3. ویژگی های جدید در جاوا 8
علیرغم اینکه زمان زیادی از انتشار جاوا 8 می گذرد و به روز رسانی های شماره گذاری شده دیگری قبلاً ظاهر شده است، این نسخه هشتم بود که نمادین شد. نوآوری های مهمی را معرفی کرد که رویکردهای برنامه نویسی در جاوا را ساده می کند و به نوعی تغییر می دهد. باید نحوه استفاده از عبارات لامبدا و همچنین Stream API در جاوا 8 و APIهای تاریخ و زمان جدید را بدانید.4. SQL، پایگاه داده، JDBC
تعداد کمی از توسعه دهندگان جاوا در کار خود با پرس و جوهای SQL و پایگاه داده مواجه نمی شوند. بنابراین، مهم است که بدانیم پایگاه داده های SQL و رابطه ای چیست، چگونه کار می کنند، و بتوانیم پرس و جوهای ساده را برای پیوستن به دو جدول بنویسیم. برای آموزش، می توانید با یکی از DBMS ها، به عنوان مثال، PostgreSQL یا MySQL کار کنید . همچنین خوب است که دانش پایه ای از پایگاه های داده غیر رابطه ای، رویکردهای noSQL و آشنایی سطحی با DBMS MongoDB سند گرا به دست آوریم . برای کار با پایگاه های داده در جاوا خالص می توانید از استاندارد JDBC به همراه API به همین نام استفاده کنید. این بسته به عنوان بسته java.sql که در JDK موجود است پیاده سازی شده است. امروزه به ندرت به شکل خالص خود استفاده می شود، اما اغلب می توان آن را در برنامه های کاربردی پشتیبانی قدیمی تر یافت، و ابزارهای مدرن و پذیرفته شده تر اغلب بر اساس این استاندارد هستند.5. چارچوب ها
امروزه در میان الزامات یک برنامهنویس جاوا جوان، میتوانید بهطور فزایندهای «دانش Spring، Hibernate، Spring Boot» را بیابید. یادگیری این فناوری ها به تنهایی کار بسیار دشواری است، اما با این وجود، به خصوص در سطح سطحی امکان پذیر است. در حین کار، درک عمیقتری حاصل خواهد شد. بنابراین. این روزها تقریباً هر برنامه ای که در جاوا ساخته می شود از Spring Framework استفاده می کند. این چارچوب قدرتمند یک سیستم مختصات خاص را فراهم می کند، ستون فقرات که برنامه با آن ساخته می شود. آزمایش و نگهداری برنامه Spring بسیار ساده تر است. و همه به لطف تزریق وابستگی. یکی دیگر از مهمترین چارچوب ها برای توسعه دهندگان جاوا Hibernate است. این ویژگی JPA (Java Persistence API) را پیاده سازی می کند که مشکلات نگاشت شی رابطه ای (ORM) را حل می کند. اکثر برنامه های جاوا با پایگاه های داده تعامل دارند و اگر در مورد پایگاه داده های رابطه ای صحبت می کنیم، کار با آنها بدون Hibernate ناخوشایند است. این فریم ورک تعدادی ویژگی مهم را در اختیار توسعهدهندگان قرار میدهد، بهویژه، حافظه پنهان و تراکنشهای خارج از جعبه، که به نوبه خود به آنها اجازه میدهد تا تلاشهای خود را بر توسعه منطق برنامه متمرکز کنند و برنامهنویس را از بسیاری از وظایف سطح پایین در هنگام کار با پایگاههای داده رابطهای رها کند. . این به طور قابل توجهی بهره وری توسعه دهندگان را بهبود می بخشد. این فریم ورک توسعه برنامه را مطابق با الگوی Model - View - Controller، با استفاده از اجزای آماده که بهطور آزاد متصل شدهاند، تضمین میکند. این الگو (الگوهای طراحی در زیر مورد بحث قرار گرفته است) و منطق Spring MVC را مطالعه کنید. در عمل اغلب از آن استفاده می شود. با مهارت مناسب، Spring ایجاد یک برنامه جاوا را آسان می کند. به نوبه خود، Spring Boot ایجاد یک برنامه جاوا را بر اساس Spring آسان می کند. Spring Boot به شما این امکان را می دهد که به راحتی برنامه های Enterprise Spring کاملی ایجاد کنید که می توانند با کمترین تلاش راه اندازی شوند: پیکربندی خودکار بیشتر مشکلات مربوط به پیکربندی برنامه های Spring را از بین می برد.6. کتابخانه ها و چارچوب ها برای آزمایش
برخی از توسعه دهندگان آینده مطمئن هستند که تست کد به هیچ وجه دغدغه آنها نیست، بلکه مربوط به افراد خاصی است که به آنها تستر می گویند. در عمل، این کاملاً صادق نیست. تست کردن، به ویژه تست واحد (که اغلب تست واحد نامیده می شود)، یک مهارت بسیار مهم برای هر برنامه نویسی است. علاوه بر این، افراد تازه واردی که به تازگی وظایف خود را آغاز کرده اند، اغلب وظیفه دارند کد شخصی را با تست های واحد پوشش دهند. بنابراین ما به شدت توصیه می کنیم کتابخانه JUnit را یاد بگیرید و عادت به نوشتن تست های واحد برای کد خود را ایجاد کنید. همچنین چارچوب Mockito را بررسی کنید، که می تواند با JUnit برای ایجاد کلاس های وابستگی ساختگی استفاده شود.7. کتابخانه های خدماتی
جاوا دارای تعداد زیادی کتابخانه خدماتی است که به حل تقریباً هر مشکلی که یک توسعه دهنده با آن مواجه است کمک می کند. مطالعه همه آنها غیرممکن است و انجام این کار فایده خاصی ندارد. اما پیمایش در میان آنها ایده خوبی است. در اینجا ما فقط چند مورد از مواردی را که اغلب در عمل استفاده می شوند برجسته می کنیم.کتابخانه هایی برای ورود به سیستم
اول از همه می توان به log4j و Slf4j اشاره کرد . این کتابخانه ها به گونه ای طراحی شده اند که اجرای عملیات لاگ معمولی را که در حین اجرای برنامه های جاوا اتفاق می افتد، پنهان کنند.کتابخانه ها برای JSON
JSON، فرمت انتقال اطلاعات از کلاینت به سرور، رایج ترین فرمت امروزی است. چندین کتابخانه خوب وجود دارد که با JSON کار می کنند که محبوب ترین آنها Jackson و google-gson هستند .گواوا گوگل
Guava یک پروژه با کتابخانه های اصلی جاوا است که توسط گوگل توسعه یافته است. در اینجا میتوانید انواع جدیدی از مجموعهها (چند نقشه، چند مجموعه و موارد دیگر)، مجموعههای تغییرناپذیر، نمودارها، موارد کاربردی، ابزارهای کاربردی برای موازیسازی، ورودی/خروجی، هش کردن، پردازش رشتهها و موارد دیگر را بیابید.آپاچی کامانز
Commons یک پروژه عظیم است که شامل بسیاری از ابزارهای مفید جاوا برای اهداف مختلف است. بنابراین، کتابخانه های Apache Commons زیربنای Tomcat، Hibernate و تعدادی از پروژه های بزرگ دیگر هستند. کتابخانه های زیادی در Apache Commons وجود دارد. اجازه دهید به Commons IO که عملیات I/O را ساده می کند، Commons CSV برای کار با فایل های csv، Commons Math برای کار با عملیات و محاسبات پیچیده ریاضی و آماری، Commons CLI برای تجزیه و تحلیل آرگومان های خط فرمان را ذکر کنیم.8. مشتریان API
REST یک سبک نامگذاری برای نقاط پایانی برای دسترسی به منابع از طریق شبکه در قالبی قابل خواندن توسط انسان است. برای یک توسعهدهنده جاوا مدرن بهتر است ایدئولوژی REST را درک کند و Spring RestTemplate را نیز بشناسد ، یک کتابخانه بسیار مفید برای ایجاد یک کلاینت REST.9. الگوهای طراحی
اگر یک توسعه دهنده مبتدی با الگوهای طراحی، یعنی قواعد اخلاق خوب در برنامه نویسی جاوا آشنا باشد و حتی بداند چگونه آنها را در عمل به کار ببرد، فورا ارزش خود را در بازار کار افزایش می دهد. مبتدیان اغلب الگوها را دست کم می گیرند زیرا به ندرت برنامه های پیچیده ای را در حین مطالعه ایجاد می کنند. با این حال، اگر الگوها برای پروژه های جدی اعمال نشود، حفظ و تطبیق کد به یک کار بسیار دشوار تبدیل می شود. بنابراین تنبل نباشید، الگوها را مطالعه کنید و آنها را در پروژه های شخصی خود به کار ببرید. کارفرمای آینده شما از این بابت بسیار سپاسگزار خواهد بود.- الگوهای طراحی در جاوا
- الگوهای طراحی، قسمت 2
- الگوهای طراحی: Singleton
- الگوهای طراحی: FactoryMethod
- الگوهای طراحی: AbstractFactory
- الگوی طراحی "استراتژی"
10. دانش اضافی
الگوریتم ها و ساختارهای داده
"الگوریتم ها و ساختارهای داده" نام یک دوره آموزشی است که در دانشگاه های فنی تدریس می شود. این مبانی نظری برای ساخت ساختارهای داده مختلف را نشان می دهد. و در کلاس های عملی آنها یاد می گیرند که با آنها کار کنند - قرار دادن و بازیابی داده ها، جستجو و مرتب سازی آنها. در واقع "الگوریتم" در این عبارت دقیقاً به معنای مرتب سازی و جستجو است. در طول سال ها، دانشمندان کامپیوتر الگوریتم های زیادی را توسعه داده اند. برخی از آنها ماهیت آموزشی دارند، زیرا علیرغم سهولت نسبی اجرا، کارایی چندانی ندارند. به عنوان مثال، آنها به کندی کار می کنند، که می تواند در استخرهای داده بزرگ قابل توجه باشد. یا حافظه زیادی مصرف می کنند. الگوریتم های دیگر بسیار موثر هستند. به حدی که در کتابخانه های رسمی اکثر زبان های برنامه نویسی گنجانده شده اند. بر این اساس، امروزه نیازی به توسعه مستقل چنین الگوریتم هایی نیست. کافی است بدانیم کجا هستند.سرولت ها
servlet راهی برای رسیدگی به درخواست کاربر است. امروزه در همه جا و نه همیشه از آنها استفاده نمی شود، اما ایده گرفتن در مورد آنها مفید خواهد بود.HTML و CSS
همه باید اصول چیدمان را بدانند. به دست آوردن این دانش بسیار آسان است و اگر هنوز آن را انجام نداده اید، چند روز را به این فعالیت اختصاص دهید. در عین حال، از موضوعات پیچیده تر استراحت خواهید کرد.XML
زبان نشانه گذاری توسعه پذیر در توسعه جاوا در همه جا وجود داشت. به تدریج با JSON جایگزین می شود، اما XML هنوز هم امروزه استفاده می شود. یادگیری آن سخت نیست، بنابراین می توانید کمی به این زبان توجه کنید.جاوا اسکریپت
نظرسنجیها از توسعهدهندگان نشان میدهد که حتی کسانی که مطلقاً هیچ ارتباطی با توسعه front-end ندارند، هر از گاهی اسکریپتهایی را با جاوا اسکریپت مینوشتند. دانستن اصول اولیه این زبان را می توان به عنوان یک قانون رفتار خوب در نظر گرفت، بنابراین تنبل نباشید، در مورد آن بخوانید و یک دوجین یا دو فیلمنامه ایجاد کنید. زائد نخواهد بود
GO TO FULL VERSION