??? warning "ÐиÑклеймеÑ" - *в ÑÑководÑÑве ÑаÑÑмаÑÑиваеÑÑÑ ÑазвиÑие Java backend-ÑазÑабоÑÑика* - *ÑÑководÑÑво напиÑано иÑÑ Ð¾Ð´Ñ Ð¸Ð· Ñого, ÑÑо ÑиÑаÑÐµÐ»Ñ Ð½Ðµ полнÑй новиÑок в CS, и Ñ Ð½ÐµÐ³Ð¾ еÑÑÑ Ð±Ð°Ð·Ð¾Ð²Ñе знаниÑ* - *ÑÑководÑÑво намеÑенно напиÑано в неÑоÑмалÑном ÑÑиле, в ÑоÑмаÑе монолога. ÐÑе пÑедлагаемÑе Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð´Ð¾Ð»Ð¶Ð½Ñ ÑооÑвеÑÑÑвоваÑÑ Ð´Ð°Ð½Ð½Ð¾Ð¼Ñ ÑÑилÑ* - *ÑелÑÑ ÑÑководÑÑва не ÑвлÑеÑÑÑ ÑоÑÑавление полного ÑпиÑка вÑÐµÑ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½ÑÑ ÐºÑÑÑов, книг или обÑÑаÑÑÐ¸Ñ Ð¼Ð°ÑеÑиалов. СоÑÑав должен пÑедÑÑавлÑÑÑ Ñобой кÑаÑкий, но не кÑаÑÑайÑий ÑпиÑок из макÑималÑно полезнÑÑ Ð¾Ð±ÑÑаÑÑÐ¸Ñ Ð¼Ð°ÑеÑиалов, ÑовеÑов и ÑекомендаÑий* - *ÐÑполÑзование изобÑажений в ÑÑководÑÑве ÑазÑеÑено ÑолÑко в кÑÐ°Ð¹Ð½Ð¸Ñ ÑлÑÑаÑÑ . ÐÑÑавÑÑе каÑÑинки пÑоÑилÑнÑм ÑÑаÑÑÑм*. ## ÐлагодаÑноÑÑи ÐÑделÑное ÑпаÑибо ÐиÑе за вÑе запÑÑÑе, деÑиÑÑ Ð¸ ÑиÑе. ÐÑÐ¾Ð±Ð°Ñ Ð¿ÑизнаÑелÑноÑÑÑ Ð²Ñем Ñем замеÑаÑелÑнÑм лÑдÑм, коÑоÑÑе помогали ÑовеÑами, кÑиÑикой и ÑобÑÑвеннÑми дополнениÑми маÑеÑиала. ÐÑ Ð»ÑÑÑие. ## ÐоÑÐµÐ¼Ñ Java? ÐеÑвÑй вопÑÐ¾Ñ ÐºÐ¾ÑоÑÑй пÑÐ¸Ñ Ð¾Ð´Ð¸Ñ Ð² головÑ, когда вÑбиÑаеÑÑ ÑзÑк. Ðа Ñо, ÑÑÐ¾Ð±Ñ Ð²ÑбÑаÑÑ Java еÑÑÑ ÑелÑй ÑÑд пÑиÑин: 1. **ÐгÑÐ¾Ð¼Ð½Ð°Ñ Ð±Ð°Ð·Ð° кода.** ÐÑли ÑÑ Ñ Ð¾ÑеÑÑ ÑÑо-Ñо ÑделаÑÑ, Ñ Ð±Ð¾Ð»ÑÑой веÑоÑÑноÑÑÑÑ Ð´Ð»Ñ ÑÑого Ñже еÑÑÑ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñека; 2. **ÐÑлиÑÐ½Ð°Ñ Ð´Ð¾ÐºÑменÑаÑиÑ.** ÐодÑобнейÑее опиÑание API ÑзÑка (Javadoc), доÑоÑно опиÑÐ°Ð½Ð½Ð°Ñ ÑпеÑиÑикаÑÐ¸Ñ Ñамого ÑзÑка (JLS) и ÑпеÑиÑикаÑÐ¸Ñ Ð¼Ð¾Ð´ÐµÐ»Ð¸ памÑÑи (JMM) добавлÑÑÑ ÑвеÑенноÑÑи, ÑÑо еÑли Ñ ÑÐµÐ±Ñ Ð¿Ð¾ÑвилÑÑ Ð²Ð¾Ð¿ÑоÑ: «Ðак ÑÑо ÑабоÑаеÑ?» или «ÐоÑÐµÐ¼Ñ ÑÑо ÑабоÑÐ°ÐµÑ Ð¸Ð¼ÐµÐ½Ð½Ð¾ Ñак?» â на него полÑÑиÑÑÑ Ð½Ð°Ð¹Ñи оÑвеÑ; 3. **ÐибкоÑÑÑ.** Java â ÑÑо не ÑолÑко ÑзÑк, но и JVM плаÑÑоÑма. С иÑполÑзованием ÑÑой плаÑÑоÑÐ¼Ñ Ð½Ð°Ð¿Ð¸ÑанÑ, напÑимеÑ, Kotlin (пÑивеÑ, Android), Scala (пÑивеÑ, Ð¤Ð¸Ð½Ð¢ÐµÑ ) и Clojure. ÐÑÑ ÑÑо позволÑÐµÑ Ð½Ð°Ð¼, оÑедлав Java и поÑÑаÑив некоÑоÑое вÑемÑ, дÑейÑоваÑÑ Ð² ÑÑоÑÐ¾Ð½Ñ Ñой пÑедмеÑной облаÑÑи, коÑоÑÐ°Ñ Ð½Ð°Ð¸Ð±Ð¾Ð»ÐµÐµ инÑеÑеÑна; 4. **СообÑеÑÑво.** ÐÑли Ñ ÑÐµÐ±Ñ Ð¿Ð¾ÑвилÑÑ Ð²Ð¾Ð¿ÑоÑ, на него, ÑкоÑее вÑего, оÑвеÑили еÑÑ Ð² 2010. ÐÑли Ñ ÑÐµÐ±Ñ Ð¿Ð¾ÑвилаÑÑ Ð³ÐµÐ½Ð¸Ð°Ð»ÑÐ½Ð°Ñ Ð¸Ð´ÐµÑ Ð¿ÑоекÑа, на гиÑÑ Ð°Ð±Ðµ, веÑоÑÑно, Ñже еÑÑÑ Ð´ÐµÑÑÑок ÑазлиÑнÑÑ ÑеализаÑий. ÐовиÑкам вÑегда ÑадоÑÑно помогÑÑ ÑовеÑами пÑоÑиÑаÑÑ, наконеÑ, Javadoc; 5. **ÐаÑÑеÑнÑе возможноÑÑи.** Java повÑÑдÑ: backend, mobile, desktop (неÑ, он не ÑмеÑ). Ðез ÑабоÑÑ ÑоÑно не оÑÑанеÑÑÑÑ. ÐÑÑÑ Ð¸ воÑÐ¾Ñ Ð½ÐµÐ´Ð¾ÑÑаÑков: 1. **ÐногоÑловноÑÑÑ**. Java многоÑловна. То, ÑÑо ÑейÑÐ°Ñ Ð² Python Ð·Ð°Ð½Ð¸Ð¼Ð°ÐµÑ Ð¾Ð´Ð½Ñ ÑÑÑокÑ, в Java займÑÑ 10. Ðе Ñакой болÑÑой минÑÑ Ð² ÑовÑеменном миÑе, где еÑÑÑ Intellij и авÑодополнение, плÑÑ Ð² ÑзÑк добавлÑÑÑÑÑ Ð¼Ð¾Ð´Ð½Ñе ÑиÑи вÑоде `var`. Ð ÑÐ¾Ð¼Ñ Ð¶Ðµ в ÑзÑÐºÐ°Ñ Ð²Ñоде Kotlin или Scala можно пиÑаÑÑ Ð´Ð¾ÑÑаÑоÑно компакÑнÑй код; 2. **Ðбилие ÑÑÑаÑевÑего кода.** Java поÑвилаÑÑ Ð² 1995 годÑ, и Ñ ÑÐµÑ Ð¿Ð¾Ñ Ð±Ñло напиÑано много кода. ЧеÑÑовÑки много. ÐÑÑ ÑÑо нÑжно поддеÑживаÑÑ, ÑазвиваÑÑ Ð¸ лелеÑÑÑ, Ñак как Ð±Ð¸Ð·Ð½ÐµÑ Ð¾ÑÐµÐ½Ñ Ð½Ðµ лÑÐ±Ð¸Ñ ÑÑаÑиÑÑ Ð´ÐµÐ½Ñги. ÐапÑимеÑ, Java 8 вÑÑла в 2014 годÑ, а ÑоглаÑно [опÑоÑÑ](https://www.jetbrains.com/ru-ru/lp/devecosystem-2020/java/) JetBrains в 2020 годÑ, ÐµÑ Ð´Ð¾Ð»Ñ ÑоÑÑавлÑÐµÑ 75%! Так ÑÑо, залеÑев на ÑабоÑÑ, Ñ Ð²ÑÑокой долей веÑоÑÑноÑÑи ÑÑ Ð±ÑдеÑÑ Ð¿Ð¸ÑаÑÑ Ð½Ð° ÑÑаÑой веÑÑии, в коÑоÑой Ð½ÐµÑ ÑовÑеменного ÑÐ°Ñ Ð°Ñа, ÑвÑ; 3. **ÐгÑаниÑÐµÐ½Ð½Ð°Ñ ÑÑеÑа пÑименениÑ.** Ð ÑовÑеменном миÑе Java по наÑÑоÑÑÐµÐ¼Ñ Ð±Ð»Ð¸ÑÑÐ°ÐµÑ Ð² каÑеÑÑве backend-ÑзÑка. Ðа, ÑÑ Ð¼Ð¾Ð¶ÐµÑÑ Ð¿Ð¸ÑаÑÑ mobile, но Ñам ÑазвиваеÑÑÑ Kotlin. Ðа, ÑÑ Ð¼Ð¾Ð¶ÐµÑÑ Ð¿Ð¸ÑаÑÑ desktop, но лÑди вÑбиÑаÑÑ Electron. ÐокомоÑив Ñ Ð°Ð¹Ð¿Ð° Ð½Ð°Ñ Ð¾Ð´Ð¸ÑÑÑ Ð² вебе, поÑÑÐ¾Ð¼Ñ Ð¼Ñ ÑадимÑÑ Ð¸Ð¼ÐµÐ½Ð½Ð¾ в него. ## ÐодгоÑовка ÐеÑед обÑÑением Ñебе понадобиÑÑÑ: - **УÑÑановка Java**. ÐÑегда беÑи ÑамÑÑ ÑвежÑÑ Ð²ÐµÑÑиÑ. Ðаже еÑли на ÑабоÑе бÑдеÑÑ Ð¿Ð¸ÑаÑÑ Ð½Ð° воÑÑмеÑке, ÑÑÐ¾Ð¸Ñ Ð´ÐµÑжаÑÑ ÑÑÐºÑ Ð½Ð° пÑлÑÑе и бÑÑÑ Ð² кÑÑÑе вÑÐµÑ ÑовÑеменнÑÑ Java ÑиÑек. - **СÑеда ÑазÑабоÑки.** ÐÑполÑзÑй intellij IDEA Community, ÑкажеÑÑ ÑпаÑибо поÑом. Ðз алÑÑеÑнаÑив еÑÑÑ: - Eclipse. СÑаÑÑй, неÑдобнÑй, но еÑÑ Ð¾ÑноÑиÑелÑно попÑлÑÑнÑй в некоÑоÑÑÑ Ð¼ÐµÑÑÐ°Ñ ; - VS Code. ÐÑо не IDE, но Ñ Ð¾ÑоÑий ÑедакÑÐ¾Ñ ÐºÐ¾Ð´Ð°, коÑоÑÑй обвеÑиваÑÑ ÐºÑÑей плагинов. - **ÐнакомÑÑво Ñ Git**. ÐÐ¸Ñ â ÑиÑÑема конÑÑÐ¾Ð»Ñ Ð²ÐµÑÑий. ÐÑли ÑÑ ÐºÐ¾Ð³Ð´Ð°-нибÑÐ´Ñ ÑлÑÑал Ñлова "коммиÑÑ", "веÑки" и "PR" â ÑÑо оно. ÐÐ»Ñ Ð½Ð°Ñала Ñ Ð²Ð°ÑÐ¸Ñ Ð¿ÑоÑÑого [гайда](https://rogerdudler.github.io/git-guide/index.ru.html), ÑÑÐ¾Ð±Ñ Ð¿Ð¾Ð½Ð¸Ð¼Ð°ÑÑ Ð±Ð°Ð·Ð¾Ð²Ñе ÑеÑминÑ. ÐоÑом ÑÑÐ¾Ð¸Ñ Ð¿Ð¾ÑиÑаÑÑ Ð´Ð¾ÐºÑменÑаÑÐ¸Ñ Ðº Ñвоей IDE. IDEA, напÑимеÑ, поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ ÑабоÑÑ Ñ Ð³Ð¸Ñ Ð¸Ð· коÑобки. - **ÐÑоÑÐ¸Ð»Ñ Ð½Ð° GitHub**. ÐиÑÑ Ð°Ð± â ÑÑо ÑÐ°ÐºÐ°Ñ ÑоÑиалÑÐ½Ð°Ñ ÑеÑÑ Ð´Ð»Ñ ÑазÑабоÑÑиков. СÑÐ°Ð²Ñ Ð»Ð°Ð¹ÐºÐ¸ библиоÑекам, коÑоÑÑе иÑполÑзÑеÑÑ, и изÑÑай ÑÑендÑ. Ðе ÑÑеÑнÑйÑÑ Ð²ÑкладÑваÑÑ ÑÑда вÑе Ñвои мелкие пÑоекÑÑ, ÑолÑко не забÑвай пÑо Readme. ÐоÑом бÑдеÑÑ Ñад, когда понадобиÑÑÑ Ð½Ð°Ð¹Ñи пÑоекÑ, в коÑоÑом ÑÑ Ñже делал ÑабоÑаÑÑие аÑпекÑÑ Ð¸Ð»Ð¸ ÑабоÑÑ Ñ Ð°Ð²ÑоÑизаÑией. - **Ðедение замеÑок.** ÐÑÐµÐ½Ñ Ð²Ð°Ð¶Ð½Ñй пÑнкÑ. Тебе пÑедÑÑÐ¾Ð¸Ñ Ð¿Ð¾Ð³Ð»Ð¾ÑаÑÑ Ð¾Ð³Ñомное колиÑеÑÑво инÑоÑмаÑии, болÑÑÑÑ ÑаÑÑÑ ÐºÐ¾ÑоÑой ÑÑ Ð·Ð°Ð±ÑдеÑÑ Ñже на ÑледÑÑÑий денÑ. ЧÑÐ¾Ð±Ñ Ð¿Ð¾Ð¼Ð¾ÑÑ ÑÐ²Ð¾ÐµÐ¼Ñ Ð¼Ð¾Ð·Ð³Ñ, наÑни веÑÑи замеÑки по меÑодике ZettelKasten, напÑимеÑ, в notion.io https://habr.com/ru/post/509756/. - **ÐÑÐ´Ñ Ð² кÑÑÑе**. Java акÑивно ÑазвиваеÑÑÑ. ЧÑÐ¾Ð±Ñ Ð½Ðµ оÑÑаÑÑÑÑ Ð² ÑÑоÑоне Ð¾Ñ Ð²Ð°Ð¶Ð½ÑÑ Ð½Ð¾Ð²Ð¾ÑÑей, ÑÑ Ð´Ð¾Ð»Ð¶ÐµÐ½ Ð¸Ñ ÑиÑаÑÑ. ÐаÑни Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñки на ежемеÑÑÑнÑÑ Ð¿Ð¾Ð´Ð±Ð¾ÑÐºÑ [Java Annotated](https://blog.jetbrains.com/idea/tag/java-annotated/) и подпиÑÑвайÑÑ Ð½Ð° инÑеÑеÑнÑÑ Ð°Ð²ÑоÑов. ## ÐбÑÑение ÐÑли Ñ Ð¾ÑоÑенÑко поиÑкаÑÑ, можно найÑи деÑÑÑки ÑÑаÑей о Ñом, какие книги лÑÑÑе ÑиÑаÑÑ Ð¸ какие кÑÑÑÑ Ð»ÑÑÑе пÑÐ¾Ñ Ð¾Ð´Ð¸ÑÑ. ÐабоÑливÑе лÑди ÑиÑÑÑÑ Ð´Ð¾ÑожнÑе каÑÑÑ Ð¸, казалоÑÑ Ð±Ñ, пÑоÑÑо беÑи и ÑледÑй гайдам. Ðо пÑоблема в Ñом, ÑÑо Ð¸Ñ ÑлиÑком много! СовÑеменнÑй Ð¼Ð¸Ñ backend-ÑазÑабоÑки ÑÑебÑÐµÑ Ð¾Ñ ÑÐµÐ±Ñ ÑазбиÑаÑÑÑÑ Ð² кÑÑе веÑей, и пÑоÑÑой Ñеловек ÐаÑилий, попÑобовав во вÑÑм ÑÑом ÑазобÑаÑÑÑÑ, оÑÐµÐ½Ñ ÑкоÑо поÑÑвÑÑвÑÐµÑ Ð±ÐµÑпомоÑноÑÑÑ, гÑÑÑÑÑ Ð¸ оÑÑаÑние. Ðднако, вÑÑ Ð½Ðµ Ñак ÑÑÑаÑно. УÑиÑÑÑÑ Ð¿ÑидеÑÑÑ Ð¾ÑÐµÐ½Ñ Ð¼Ð½Ð¾Ð³Ð¾, к ÑÑаÑÑÑÑ, Ð¼Ñ Ð¾ÑобÑали ÑолÑко ÑамÑе лÑÑÑие маÑеÑиалÑ.