Π’ ΠΌΠΈΡ€Π΅ программирования, гдС⁣ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‚ΡΡ с Π½Π΅Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΠΉβ€Œ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ, Java остаСтся ΠΎΠ΄Π½ΠΈΠΌ ⁒из самых​ Π²ΠΎΡΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½Π½Ρ‹Ρ…β€Œ ΠΈ ΡƒΠ½ΠΈΠ²Π΅Ρ€ΡΠ°Π»ΡŒΠ½Ρ‹Ρ… языков. Он ⁒лСТит Π² основС β€ŒΠΌΠ½ΠΎΠΆΠ΅ΡΡ‚Π²Π° ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ​систСм, ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ…β€ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ β€ΠΈβ€Œ сСрвСрных Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ. ΠΠΎβ€Œ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΡ‚Π°Ρ‚ΡŒ настоящим мастСром⁒ Java, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ ряд ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… Π½Π°Π²Ρ‹ΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ β€ŒΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ‚ Π²Π°ΠΌ Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒΡΡ срСди Π΄Ρ€ΡƒΠ³ΠΈΡ… β€ŒΡ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΈ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎβ€Œ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ слоТныС β€ŒΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹.

Π’ ⁒этой⁣ ΡΡ‚Π°Ρ‚ΡŒΠ΅ ​мы ⁀рассмотрим Π΄Π΅ΡΡΡ‚ΡŒ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… "ТСстких" ​навыков, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ ⁣каТдый⁣ Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ. ΠžΡ‚ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ понимания основ языка ⁣до владСния соврСмСнными инструмСнтами ΠΈβ€Œ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°ΠΌΠΈ – эти умСния станут вашим Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΌ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚ΠΎΠΌ Π² ⁀мирС ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования. НСзависимо⁣ ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, β€Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π»ΠΈ ⁒вы⁣ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚Π΅ свой ΠΏΡƒΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚Π΅ ΠΎΠΏΡ‹Ρ‚ Π² Java, эти Π½Π°Π²Ρ‹ΠΊΠΈ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ ​вам ΡƒΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒβ€‹ Π²Π°ΡˆΡƒ экспСртизу ΠΈ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Ρ‹.

ОглавлСниС

ΠžΡΠ½ΠΎΠ²Ρ‹ языка Java: НачнитС с ΠΊΡ€Π΅ΠΏΠΊΠΎΠ³ΠΎ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΡ‚Π°Ρ‚ΡŒ ΡƒΡΠΏΠ΅ΡˆΠ½Ρ‹ΠΌ разработчиком‍ Π½Π° ⁣Java, ваТно⁀ Π½Π°Ρ‡Π°Ρ‚ΡŒ с​ укрСплСния Π±Π°Π·ΠΎΠ²Ρ‹Ρ… Π·Π½Π°Π½ΠΈΠΉ ΠΈ Π½Π°Π²Ρ‹ΠΊΠΎΠ². Основа⁒ любого качСствСнного⁣ ΠΊΠΎΠ΄Π° — это ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² ΠΈ структур языка. ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ ⁣шагом Π½Π° этом ΠΏΡƒΡ‚ΠΈ ‍являСтся ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ синтаксиса Java. Бинтаксис — это Π½Π°Π±ΠΎΡ€ ΠΏΡ€Π°Π²ΠΈΠ», ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΡ…, ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ слова ΠΈ символы для создания⁀ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. НС мСнСС⁣ Π²Π°ΠΆΠ½ΠΎβ€Œ ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ основныС конструкции, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ​циклы (for, while), условныС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ (if, switch) ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρƒ с массивами.

Π”Π°Π»Π΅Π΅, Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ​ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎβ€Œ программирования⁒ (ООП), ⁀которыС ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚ΠΎΠΌ для Java. К Π½ΠΈΠΌ относятся инкапсуляция, наслСдованиС, ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ ΠΈ абстракция. Π Π°Π±ΠΎΡ‚Π° с классами⁣ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, ⁒а ‍такТС ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² SOLID ⁒ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ ​вам ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹ΠΉ ΠΈ ​лСгко ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ ΠΊΠΎΠ΄. НиТС ⁒прСдставлСн список ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… Π½Π°Π²Ρ‹ΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ долТСн⁣ ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ β€ŒΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ:

  • Бинтаксис​ и⁀ структура языка
  • ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ конструкции β€Œ(Ρ†ΠΈΠΊΠ»Ρ‹,⁣ условныС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, массивы)
  • ООП (инкапсуляция, β€ŒΠ½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΏΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌ, ⁀абстракция)
  • ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ β€ŒSOLID β€ŒΠΈ ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ β€ŒΠ² Java
  • Π Π°Π±ΠΎΡ‚Π° с ​ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡΠΌΠΈ ⁒и⁣ ΠΈΡ… ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°
  • ΠžΡΠ½ΠΎΠ²Ρ‹ Π²Π²ΠΎΠ΄Π°/Π²Ρ‹Π²ΠΎΠ΄Π° (IO) ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ
  • ИспользованиС ⁣ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΉ ΠΈ ΠΎΠ±ΠΎΠ±Ρ‰Π΅Π½ΠΈΠΉ (Generics)
  • ΠžΡΠ½ΠΎΠ²Ρ‹ многопоточности ΠΈ синхронизации
  • Π Π°Π±ΠΎΡ‚Π° с базами​ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈβ€Œ JDBC
  • ПониманиС ⁣и использованиС Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ⁒Spring)

ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅
Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡΠ‘ΠΎΠΊΡ€Ρ‹Ρ‚ΠΈΠ΅ Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ объСдинСниС Π΄Π°Π½Π½Ρ‹Ρ… β€ŒΠΈβ£ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ⁀в ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚
ΠΠ°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅Π‘ΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠ»ΠΈ класса Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ β€ŒΠ½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ классС, наслСдуя Π΅Π³ΠΎ ⁣свойства ΠΈ β€ŒΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹
ΠŸΠΎΠ»ΠΈΠΌΠΎΡ€Ρ„ΠΈΠ·ΠΌΠ’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ β€ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ с ΠΎΠ΄Π½ΠΈΠΌ интСрфСйсом ⁣бСз ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΈΠΏΠ΅ и‍ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ структурС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°
АбстракцияВыдСлСниС ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ…, сущСствСнных характСристик ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΈΡΠΊΠ»ΡŽΡ‡Π°Ρ из​ рассмотрСния нСсущСствСнныС

Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ΅ использованиС β€ŒJava Frameworks: Spring и⁣ Hibernateβ€Œ Π² дСйствии

ОвладСниС⁣ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°ΠΌΠΈ Spring ΠΈ Hibernate являСтся⁒ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ β€ŒΠ½Π°Π²Ρ‹ΠΊΠΎΠΌ для⁣ Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, стрСмящСгося ΠΊ эффСктивности ΠΈ соврСмСнности Π² своих ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°Ρ…. ⁒Spring прСдоставляСт ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнтарий для создания Π³ΠΈΠ±ΠΊΠΈΡ… ΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, в​ то​ врСмя ΠΊΠ°ΠΊ Hibernate ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ с Π±Π°Π·Π°ΠΌΠΈ β€ŒΠ΄Π°Π½Π½Ρ‹Ρ…, обСспСчивая ⁀эффСктивноС⁣ взаимодСйствиС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ORM ​(Object-Relational Mapping). Рассмотрим, ΠΊΠ°ΠΊ эти⁣ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Ρ‹ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅:

  • Spring Boot β€Œ- ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ процСсс настройки⁣ ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½ΠΎΠ²Ρ‹Ρ… Spring-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Spring ⁒Boot,⁒ разработчики⁀ могут​ ΡΠΎΡΡ€Π΅Π΄ΠΎΡ‚ΠΎΡ‡ΠΈΡ‚ΡŒΡΡ ⁀на бизнСс-Π»ΠΎΠ³ΠΈΠΊΠ΅, Π½Π΅ тратя врСмя Π½Π°β€Œ Ρ€ΡƒΡ‚ΠΈΠ½Π½ΡƒΡŽ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ.
  • Spring ​MVC — позволяСт β’ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π²Π΅Π±-прилоТСния с Ρ‡Π΅Ρ‚ΠΊΠΎΠΉ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ Π½Π° модСль, прСдставлСниС ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€, Ρ‡Ρ‚ΠΎ способствуСт⁀ Π»ΡƒΡ‡ΡˆΠ΅ΠΉ β’ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈβ€Œ кода⁀ ΠΈ ΡƒΠΏΡ€ΠΎΡ‰Π°Π΅Ρ‚ тСстированиС.
  • Spring Security — ​обСспСчиваСт ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΡƒΡŽ Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΡŽ,⁣ Π·Π°Ρ‰ΠΈΡ‚Ρƒ ΠΎΡ‚ ⁒атак Ρ‚ΠΈΠΏΠ° CSRF ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅.
  • Hibernate — позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π»Π΅Π³ΠΊΠΎ ΠΈ быстро Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ…, Π°Π±ΡΡ‚Ρ€Π°Π³ΠΈΡ€ΡƒΡΡΡŒ от⁣ слоТности ‍SQL-запросов β€ŒΠΈ управлСния рСсурсами.

ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅β€ Π΄Π°Π½Π½Ρ‹Ρ… Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ² Π² проСктах‍ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ β€ŒΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ ΠΈΡ… основных ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ ΠΈ ‍возмоТностСй. НиТС⁣ прСдставлСна таблица⁒ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ Π·Π°Π΄Π°Ρ‡, которыС​ ΠΌΠΎΠ³ΡƒΡ‚β€Œ Π±Ρ‹Ρ‚ΡŒ β€Ρ€Π΅ΡˆΠ΅Π½Ρ‹ ​с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ⁀Spring и⁀ Hibernate:

Π—Π°Π΄Π°Ρ‡Π°Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ Π΅ΡˆΠ΅Π½ΠΈΠ΅
Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° RESTful​ APISpringИспользованиС Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΉ @RestController ΠΈ @RequestMapping
УправлСниС⁒ транзакциямиSpringАннотация @Transactional для обСспСчСния цСлостности⁒ Π΄Π°Π½Π½Ρ‹Ρ…
Маппинг⁣ сущностСйHibernateАннотации β€Œ@Entity ⁣и @Table ⁀для связывания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Java с Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…
ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡβ€ запросовHibernateΠšΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΈ API ΠΈβ€Œ HQL для формирования ‍эффСктивных запросов

ΠžΡΠ²ΠΎΠ΅Π½ΠΈΠ΅β€Œ Spring ΠΈ Hibernate ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ ‍пСрСд⁀ Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ ⁣двСри ⁀к созданию β€Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΈ бСзопасных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, способных ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡ‚ΡŒ самыС Ρ€Π°Π·Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹Π΅ бизнСс-трСбования.

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…: JDBC ΠΈ JPA для профСссионалов

Π’Π»Π°Π΄Π΅Π½ΠΈΠ΅ тСхнологиями JDBC ΠΈ ⁣JPA являСтся ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ Π½Π°Π²Ρ‹ΠΊΠΎΠΌ Π΄Π»Ρβ€Œ Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², стрСмящихся ΠΊ профСссионализму⁀ Π² ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ базами⁀ Π΄Π°Π½Π½Ρ‹Ρ…. JDBC (Java Database ​Connectivity) — ‍это Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΉ API β€ŒΠ΄Π»Ρ выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… в⁒ Java, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ‍позволяСт разработчику‍ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с Π±Π°Π·ΠΎΠΉ β€ŒΠ΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ SQL-запросов. Б⁒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, JPA (Java⁒ Persistence⁒ API) ⁀прСдставляСт собой ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-рСляционного отобраТСния, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΡƒΡŽ β£ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ рСляционными‍ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π² Java-прилоТСниях.

ΠŸΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ использованиС этих⁒ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π½Π°Π½ΠΈΠ΅ ΠΈΡ… основ, Π½ΠΎ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ‍продвинутых ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ ΠΈ Π»ΡƒΡ‡ΡˆΠΈΡ… ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊ.⁒ НапримСр, с JDBC Π²Π°ΠΆΠ½ΠΎ ΡƒΠΌΠ΅Ρ‚ΡŒ эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ PreparedStatement для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ β€ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ прСдотвращСния SQL-ΠΈΠ½ΡŠΠ΅ΠΊΡ†ΠΈΠΉ, Π° такТС​ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ транзакциями с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Transaction Management.⁣ В​ ΡΠ»ΡƒΡ‡Π°Π΅β€Œ с JPA, ⁣ваТным Π½Π°Π²Ρ‹ΠΊΠΎΠΌ являСтся оптимизация запросов с использованиСм Criteria API ΠΈ JPQL, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ β€Œ Entity Lifecycle ΠΈ Caching.

Π’Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ Π½Π°Π²Ρ‹ΠΊΠΈ
JDBC
  • ИспользованиС PreparedStatement
  • Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ транзакциями
  • ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ соСдинСний с ΠΏΡƒΠ»ΠΎΠΌ
JPA
  • ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ с ⁣Criteria API β€ŒΠΈ ⁒JPQL
  • Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Entity ⁣Lifecycle
  • ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ стратСгий​ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ

ОсвоСниС⁣ этих Π½Π°Π²Ρ‹ΠΊΠΎΠ² ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ β€‹ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Π΅, бСзопасныС ⁀и Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ прилоТСния, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. ⁣Это Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ β’ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ качСство Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, но⁒ и⁒ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ повысит Ρ†Π΅Π½Π½ΠΎΡΡ‚ΡŒβ£ спСциалиста Π½Π° Ρ€Ρ‹Π½ΠΊΠ΅ Ρ‚Ρ€ΡƒΠ΄Π°.

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ сборки и⁀ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ: Maven ⁣и Gradle Π±Π΅Π· ⁣сСкрСтов

Π’ арсСналС ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ⁣долТны Π±Ρ‹Ρ‚ΡŒ инструмСнты для​ эффСктивной сборки ΠΈ управлСния зависимостями ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°. ⁒ Maven ΠΈ Gradle ΡΠ²Π»ΡΡŽΡ‚ΡΡ двумя​ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌΠΈ инструмСнтами Π² этой области. β€ŒMaven, ​староТил⁀ срСди систСм ‍сборки, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ XML для ⁣описания ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ⁒и Π΅Π³ΠΎ β€ŒΠ·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚Π΅ΠΉ. β€ΠžΠ½ ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ структуру ⁀проСкта ΠΈ Π»Π΅Π³ΠΊΠΎ управляСтся Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку. Π‘ β€ŒΠ΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, Gradle привносит Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ своСго DSL ⁣(Domain-Specific Language) Π½Π° основС Groovy,‍ позволяя Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌβ€Œ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ болСС⁀ слоТныС‍ ΠΈ ⁣настраиваСмыС сцСнарии сборки.

Π’Π°ΠΆΠ½ΠΎβ€Œ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠΌΠ΅Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒβ€Œ эти инструмСнты, ​но ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΈΡ… основныС отличия ΠΈ прСимущСства. ⁣НиТС прСдставлСны ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ ‍аспСкты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ ⁣в выборС​ ΠΌΠ΅ΠΆΠ΄Ρƒ Maven ΠΈ Gradle для ⁒вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°:

ΠšΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠΉMavenGradle
Π―Π·Ρ‹ΠΊ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈXMLGroovy/Kotlin DSL
ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΠ‘Ρ‚Π°Π±ΠΈΠ»ΡŒΠ½Π°Ρ, Π½ΠΎ ⁒моТСт Π±Ρ‹Ρ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ ΠΈΠ·-Π·Π° фазовой​ ΠΌΠΎΠ΄Π΅Π»ΠΈβ€Œ сборкиБыстрСС благодаря ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π½ΠΎΠΉ сборкС и​ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ
Π“ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Π°Ρ, стандартизированная структура⁒ проСктаВысокая, с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ написания ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… ‍скриптов
Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ зависимостямиЦСнтрализованноС, с ⁒автоматичСским Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ ⁒конфликтовГранулярноС,⁀ с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ настройки
  • ОсвоСниС Maven β€ŒΠ½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ΡΡ с понимания ⁣Сго ТизнСнного⁒ Ρ†ΠΈΠΊΠ»Π° сборки, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ‚Π°ΠΊΠΈΠ΅ Ρ„Π°Π·Ρ‹,⁣ ΠΊΠ°ΠΊ compile, test, ΠΈ package.
  • Для⁣ Gradle⁒ Π²Π°ΠΆΠ½ΠΎβ€Œ ΡƒΠΌΠ΅Ρ‚ΡŒ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ build.gradle Ρ„Π°ΠΉΠ», ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π΅Π³ΠΎ ΠΌΠΎΡ‰Π½Ρ‹Π΅ возмоТности​ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ⁒процСсса⁣ сборки ΠΈ управлСния зависимостями.

Π’Ρ‹Π±ΠΎΡ€ ΠΌΠ΅ΠΆΠ΄Ρƒβ€Œ Maven β€ŒΠΈ Gradle ⁣зависит ΠΎΡ‚ спСцифики ⁣проСкта β€ŒΠΈ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚Π΅Π½ΠΈΠΉ ⁒команды. Однако ⁒знаниС обоих‍ этих инструмСнтов открываСт​ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ Π΄Π²Π΅Ρ€ΠΈ ΠΊ Π±ΠΎΠ»Π΅Π΅ Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠΌΡƒ пониманию ​процСссов сборки и‍ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ в‍ ΠΌΠΈΡ€Π΅ Java.

ВСстированиС ΠΊΠΎΠ΄Π°:‍ JUnit ΠΈ Mockito ⁣для Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ

Π’ арсСналС ⁀каТдого Java-разработчика‍ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ инструмСнты для тСстирования ΠΊΠΎΠ΄Π°, вСдь β€ŒΠΊΠ°Ρ‡Π΅ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ зависит ΠΎΡ‚ надСТности ΠΈ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹. JUnit являСтся Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ для написания ΠΈ ​выполнСния тСстов Π² ⁀Java-экосистСмС. Она позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Π΅β€ тСсты для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² прилоТСния, Ρ‡Ρ‚ΠΎ способствуСт Ρ€Π°Π½Π½Π΅ΠΌΡƒ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΡŽ ошибок⁣ ΠΈ ​упрощаСт процСсс ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ.

Π’ Ρ‚ΠΎ врСмя ​как JUnit β€ŒΠ·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ΡΡ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ коррСктности Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΠ΄Π°,⁀ Mockito ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ ‍на⁣ ΠΏΠΎΠΌΠΎΡ‰ΡŒβ€Œ для ΠΈΠΌΠΈΡ‚Π°Ρ†ΠΈΠΈ ‍повСдСния β€ŒΠ·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚Π΅ΠΉ Π² ⁒тСстовой срСдС.​ Π­Ρ‚ΠΎ позволяСт ⁒разработчикам Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π² изоляции, Π½Π΅ бСспокоясь ΠΎ Π²Π½Π΅ΡˆΠ½ΠΈΡ… взаимодСйствиях. Π’Π°ΠΆΠ½ΠΎ ΠΎΡΠ²ΠΎΠΈΡ‚ΡŒ созданиС ΠΌΠΎΠΊΠΎΠ² ΠΈ шпионов, Ρ‡Ρ‚ΠΎΠ±Ρ‹ эффСктивно β£ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ тСстируСмых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². НиТС прСдставлСн ΡΠΏΠΈΡΠΎΠΊβ€Œ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ…β€Œ возмоТностСй, которыС⁣ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ JUnit​ ΠΈ ⁒Mockito для создания Π½Π°Π΄Π΅ΠΆΠ½Ρ‹Ρ… тСстов:

  • Аннотации JUnit (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, @Test, @Before, ‍ @After), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ тСстовый ⁣код.
  • Assert-ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ β€Œ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ⁣оТидаСмых Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ².
  • Mockito ⁣для создания ΠΌΠΎΠΊΠΎΠ² и‍ шпионов, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… ΠΈΠΌΠΈΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ слоТныС ⁣зависимости.
  • ВСрификация Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ⁒ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π½Π° ΠΌΠΎΠΊΠ°Ρ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Π² ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ взаимодСйствия ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².
Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ΠžΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅
JUnitНаписаниС ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ β€ŒΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½Ρ‹Ρ… тСстов
MockitoΠ˜ΠΌΠΈΡ‚Π°Ρ†ΠΈΡβ’ повСдСния зависимостСй

ОвладСниС JUnit ΠΈ Mockito⁀ позволяСт Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ тСсты, ⁒которыС β€ΡƒΡΠΊΠΎΡ€ΡΡŽΡ‚ процСсс Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ β€ŒΠΈ ΠΏΠΎΠ²Ρ‹ΡˆΠ°ΡŽΡ‚ ΡƒΠ²Π΅Ρ€Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π² качСствС ΠΈ надСТности создаваСмого ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. β€ŒΠ­Ρ‚ΠΈ инструмСнты ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌΠΈ для поддСрТания высокого уровня профСссионализма ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² Π½Π°Π±ΠΎΡ€ Π½Π°Π²Ρ‹ΠΊΠΎΠ² ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ спСциалиста.

Π Π°Π±ΠΎΡ‚Π° с⁀ вСрсиями:β€Œ Git для соврСмСнного Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°

ВладСниС⁀ систСмой контроля вСрсий ⁒Git являСтся‍ Π½Π΅ΠΎΡ‚ΡŠΠ΅ΠΌΠ»Π΅ΠΌΡ‹ΠΌ Π½Π°Π²Ρ‹ΠΊΠΎΠΌ для Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°, стрСмящСгося ΠΊ эффСктивной Ρ€Π°Π±ΠΎΡ‚Π΅ β€ŒΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π΅ и‍ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ измСнСниями Π² ΠΊΠΎΠ΄Π΅. ​Git позволяСт ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΌβ€Œ вСрсиям,‍ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π²Π΅Ρ‚ΠΊΠΈ для экспСримСнтов ΠΈ β€ΡΠ»ΠΈΠ²Π°Ρ‚ΡŒ ΠΈΡ… послС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ тСстирования. ΠžΡΠ²ΠΎΠ΅Π½ΠΈΠ΅β€Œ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… команд​ ΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊ Git ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ ΡΡ‚Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Ρ†Π΅Π½Π½Ρ‹ΠΌ спСциалистом:

  • git​ clone ⁀– β€ŒΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ рСпозитория‍ для β€ŒΠ»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠΉβ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹.
  • git branch – ⁒управлСниС Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π΅ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ⁀функционал нСзависимо ΠΎΡ‚ основной ​кодовой Π±Π°Π·Ρ‹.
  • git merge ΠΈ git rebase – инструмСнты для слияния измСнСний⁣ и⁀ пСрСбазирования Π²Π΅Ρ‚ΠΎΠΊ, соотвСтствСнно.
  • git‍ status,⁒ git add,⁒ git commit – Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ рабочий‍ процСсс, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉβ£ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ статуса, ΠΈΠ½Π΄Π΅ΠΊΡΠ°Ρ†ΠΈΡŽβ€ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΈ Ρ„ΠΈΠΊΡΠ°Ρ†ΠΈΡŽ ΠΊΠΎΠΌΠΌΠΈΡ‚ΠΎΠ².
  • git pull ΠΈ git ⁀push – ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ для ⁣обновлСния‍ локальной вСрсии рСпозитория ΠΈ ⁣отправки ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.

ΠŸΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅β€Œ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² работы‍ с⁒ Git ​позволяСт ⁒разработчику ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΏΡ€ΠΈ слиянии кода⁒ ΠΈ обСспСчиваСт Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ΅ восстановлСниС ΠΏΠΎΡΠ»Π΅β€Œ ошибок. НиТС⁀ прСдставлСна таблица​ с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ использования ΠΊΠΎΠΌΠ°Π½Π΄ Git Π² повсСднСвной⁀ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°:

ΠšΠΎΠΌΠ°Π½Π΄Π°ΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования
git fetchΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ​измСнСний ΠΈΠ· ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ рСпозитория Π±Π΅Π· ​их слияния с локальной Π²Π΅Ρ‚ΠΊΠΎΠΉΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ° ΠΊ просмотру измСнСний⁣ ΠΏΠ΅Ρ€Π΅Π΄ git merge
git stashΠ‘ΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ нСзафиксированных измСнСний​ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ΠžΡ‡ΠΈΡΡ‚ΠΊΠ° Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ Π΄Π΅Ρ€Π΅Π²Π° ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π²Π΅Ρ‚ΠΎΠΊ
git logΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ истории коммитовАнализ ‍измСнСний Π² проСктС⁒ для β€ŒΠΎΡ‚Π»Π°Π΄ΠΊΠΈ ΠΈΠ»ΠΈ понимания истории Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ
git diffΠ‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅β€Œ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠΌΠΌΠΈΡ‚Π°ΠΌΠΈ, Π²Π΅Ρ‚ΠΊΠ°ΠΌΠΈ, Ρ„Π°ΠΉΠ»Π°ΠΌΠΈΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°β’ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΉ ΠΏΠ΅Ρ€Π΅Π΄ ⁣коммитом

ПониманиС многопоточности: Concurrency β€ŒΠ² ⁀Java для β’Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ

ΠœΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ ⁒— ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ элСмСнт ⁣для ‍разработки Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ на‍ Java. Она β€ŒΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ эффСктивно β€ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ рСсурсы процСссора, выполняя нСсколько ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. Основой для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ​с β’ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽβ£ слуТат классы из⁒ ΠΏΠ°ΠΊΠ΅Ρ‚Π° java.util.concurrent,⁀ Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Executors, CountDownLatch ΠΈ Semaphore. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡƒΠΌΠ΅Ρ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒβ€ ΠΏΠΎΡ‚ΠΎΠΊΠΈ, чтобы‍ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ проблСм⁀ с состояниСм Π³ΠΎΠ½ΠΊΠΈ ΠΈ ΠΌΠ΅Ρ€Ρ‚Π²Ρ‹Ρ… Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΎΠΊ.

Π’Π°ΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΡβ€Œ ΠΌΠ΅ΠΆΠ΄Ρƒ модСлями ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° ΠΈ асинхронности. ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌ ⁒прСдполагаСт ⁣одноврСмСнноС Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡, Ρ‡Ρ‚ΠΎ идСально ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для Π·Π°Π΄Π°Ρ‡, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° ⁒нСзависимыС ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡ΠΈ. ΠΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΠΎΡΡ‚ΡŒβ€ ΠΆΠ΅ позволяСт ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ β€ŒΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹,​ Π½Π΅ β€ŒΠΎΠΆΠΈΠ΄Π°Ρ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π²Π²ΠΎΠ΄Π°-Π²Ρ‹Π²ΠΎΠ΄Π° ΠΈΠ»ΠΈ сСтСвых запросов. Π—Π½Π°Π½ΠΈΠ΅ ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ΅ примСнСниС​ классов, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Future ‍и CompletableFuture, обСспСчиваСт Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ Π² ⁣управлСнии ⁀асинхронными⁒ Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ.

ΠšΠ»Π°ΡΡΠžΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования
ExecutorsΠ€Π°Π±Ρ€ΠΈΠΊΠ° для β€ŒΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ExecutorServiceExecutors.newFixedThreadPool(10)
CountDownLatchΠ‘ΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·Π°Ρ‚ΠΎΡ€ для⁀ оТидания Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉnew CountDownLatch(1)
SemaphoreΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ количСство ​потоков, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ⁒рСсурсnew Semaphore(5)
  • Π˜Π·ΡƒΡ‡Π΅Π½ΠΈΠ΅ ⁣и ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ² ⁒проСктирования, таких⁀ ΠΊΠ°ΠΊ Singleton ⁣ и‍ Producer-Consumer, для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с β£ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ.
  • ПониманиС ‍внутрСннСго устройства Java Memory Model ΠΈ влияния Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅.
  • Π£ΠΌΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ инструмСнты для β€ŒΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈ отладки⁒ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ⁒напримСр,‍ JConsole ΠΈβ€Œ VisualVM.

Вопрос/ΠΎΡ‚Π²Π΅Ρ‚

**Вопрос**: β€‹ΠšΠ°ΠΊΠΈΠ΅ ‍навыки⁒ ΡΠ²Π»ΡΡŽΡ‚ΡΡ β€ŒΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ для Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°?

**ΠžΡ‚Π²Π΅Ρ‚**: β€ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ⁒Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Π»Π°Π΄Π΅Ρ‚ΡŒ рядом ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… Π½Π°Π²Ρ‹ΠΊΠΎΠ², β€Π²ΠΊΠ»ΡŽΡ‡Π°Ρβ’ Π·Π½Π°Π½ΠΈΠ΅ ‍основ языка программирования β€ŒJava, ΡƒΠΌΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ SQL, ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ принципов‍ ООП,⁒ знакомство с Π²Π΅Π±-тСхнологиями, ‍такими как⁒ HTML,⁀ CSS ΠΈ ⁀JavaScript, а⁀ Ρ‚Π°ΠΊΠΆΠ΅ опыт‍ использования Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΎΠ², ⁣напримСр Spring ΠΈ Hibernate.

**Вопрос**: ΠŸΠΎΡ‡Π΅ΠΌΡƒ ваТно‍ Π·Π½Π°Ρ‚ΡŒ основы​ Java?

**ΠžΡ‚Π²Π΅Ρ‚**: ΠžΡΠ½ΠΎΠ²Ρ‹ Java β£ΡΠ²Π»ΡΡŽΡ‚ΡΡ фундамСнтом⁒ для⁀ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡβ€Œ Π±ΠΎΠ»Π΅Π΅ ⁀слоТных ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ ΠΈ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ² проСктирования. Π‘Π΅Π·β€Œ Ρ‚Π²Π΅Ρ€Π΄ΠΎΠ³ΠΎ ⁀понимания Π±Π°Π·ΠΎΠ²Ρ‹Ρ… элСмСнтов, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ синтаксис,​ классы ΠΈ ‍интСрфСйсы, ⁒коллСкции ΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΈ ⁣ввода-Π²Ρ‹Π²ΠΎΠ΄Π°, разработчик⁣ Π½Π΅ смоТСт эффСктивно Ρ€Π΅ΡˆΠ°Ρ‚ΡŒβ’ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΈ ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄.

**Вопрос**: ⁀ЗачСм Java-разработчику‍ ΡƒΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с SQL?

**ΠžΡ‚Π²Π΅Ρ‚**: Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ с базами​ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ ΡƒΠΌΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с SQL⁒ позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ,⁣ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ, β€Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ ​и ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ⁀данными. Π­Ρ‚ΠΎ критичСски Π²Π°ΠΆΠ½Ρ‹ΠΉ Π½Π°Π²Ρ‹ΠΊ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ сСрвСрной части ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ⁒и⁣ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρβ€Œ транзакциями.

**Вопрос**: ⁣КакоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ​имССт ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² β€ŒΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования (ООП)?

**ΠžΡ‚Π²Π΅Ρ‚**: ⁀ООП ⁀- это Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ β€ŒΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ°β’ программирования, Π»Π΅ΠΆΠ°Ρ‰Π°Ρβ€Œ Π² основС ⁀Java. ПониманиС ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² ООП, Ρ‚Π°ΠΊΠΈΡ… β€ŒΠΊΠ°ΠΊ наслСдованиС,⁒ инкапсуляция, полиморфизм​ ΠΈ β€ŒΠ°Π±ΡΡ‚Ρ€Π°ΠΊΡ†ΠΈΡ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для создания ΠΌΠΎΠ΄ΡƒΠ»ΡŒΠ½ΠΎΠ³ΠΎ, ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ ⁣и Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

**Вопрос**: ΠŸΠΎΡ‡Π΅ΠΌΡƒ Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ Π²Π°ΠΆΠ½ΠΎ Π·Π½Π°Ρ‚ΡŒ Π²Π΅Π±-Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ?

**ΠžΡ‚Π²Π΅Ρ‚**:⁒ Π’ соврСмСнной ​разработкС‍ часто ‍трСбуСтся созданиС Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, β€ŒΠΈ Π·Π½Π°Π½ΠΈΠ΅ Π²Π΅Π±-Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ позволяСт​ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ β£Π±Ρ‹Ρ‚ΡŒ Π³ΠΈΠ±ΠΊΠΈΠΌ ⁒и‍ ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒβ£ Π² ΠΏΠΎΠ»Π½ΠΎΠΌ Ρ†ΠΈΠΊΠ»Π΅ ⁒разработки, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄ ​и⁀ бэкСнд.

**Вопрос**: КакиС Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°Ρ‚ΡŒ Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ?

**ΠžΡ‚Π²Π΅Ρ‚**: ⁀ЀрСймворки β€ŒΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‚ ΠΈ ΡƒΡΠΊΠΎΡ€ΡΡŽΡ‚ процСсс Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊβ€Œ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒβ€ Π·Π½Π°ΠΊΠΎΠΌ с ⁣такими Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠ°ΠΌΠΈ, ΠΊΠ°ΠΊ Spring для создания комплСксных ​прилоТСний ⁒и⁀ Hibernate для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с базами​ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· ORMβ€Œ (Object-Relational Mapping).

**Вопрос**: НуТно Π»ΠΈ Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ​алгоритмы ΠΈ структуры β€ŒΠ΄Π°Π½Π½Ρ‹Ρ…?

**ΠžΡ‚Π²Π΅Ρ‚**:⁀ Π”Π°, ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ⁒алгоритмов ΠΈ структур Π΄Π°Π½Π½Ρ‹Ρ… критичСски Π²Π°ΠΆΠ½ΠΎ β€ŒΠ΄Π»Ρβ’ написания ⁒эффСктивного ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎβ€Œ ΠΊΠΎΠ΄Π°,⁣ особСнно​ при⁣ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ слоТных Π·Π°Π΄Π°Ρ‡ ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.

**Вопрос**:β€Œ КакиС инструмСнты Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°Ρ‚ΡŒ Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ?

**ΠžΡ‚Π²Π΅Ρ‚**: Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ⁣знаком​ с ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌΠΈ ⁀срСдами Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ (IDE),⁒ Ρ‚Π°ΠΊΠΈΠΌΠΈ ‍как IntelliJ ⁣IDEA ΠΈΠ»ΠΈ ​Eclipse, систСмами контроля⁣ вСрсий, напримСр​ Git, ΠΈ ⁣инструмСнтами сборки ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Ρ‚Π°ΠΊΠΈΠΌΠΈ ‍как Maven ΠΈΠ»ΠΈ ⁒Gradle.

**Вопрос**: ΠΠ°ΡΠΊΠΎΠ»ΡŒΠΊΠΎβ€ ваТно​ Π·Π½Π°Π½ΠΈΠ΅ тСстирования⁣ для Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°?

**ΠžΡ‚Π²Π΅Ρ‚**:⁀ Π—Π½Π°Π½ΠΈΠ΅ мСтодов‍ ΠΈ инструмСнтов тСстирования, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΡŽΠ½ΠΈΡ‚-тСстированиС⁀ с JUnit ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ΅ тСстированиС,⁀ являСтся ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹ΠΌ для обСспСчСния β€ŒΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π° ΠΈ надСТности ⁣программного обСспСчСния.

**Вопрос**: Π”ΠΎΠ»ΠΆΠ΅Π½ Π»ΠΈ Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° Π½ΠΎΠ²Ρ‹ΠΌΠΈ тСндСнциями Π² тСхнологиях?

**ΠžΡ‚Π²Π΅Ρ‚**: ΠΠ±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ. ⁒ВСхнологичСский ΠΌΠΈΡ€ постоянно развиваСтся, ΠΈ слСдованиС β€ŒΠ½ΠΎΠ²Ρ‹ΠΌ тСндСнциям, Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ ‍микросСрвисы, ‍контСйнСризация ΠΈ ΠΎΠ±Π»Π°Ρ‡Π½Ρ‹Π΅ вычислСния, ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ вострСбованным ΠΈ конкурСнтоспособным Π½Π° Ρ€Ρ‹Π½ΠΊΠ΅ Ρ‚Ρ€ΡƒΠ΄Π°.

Π’Ρ‹Π²ΠΎΠ΄

ΠœΡ‹ ⁒надССмся, ‍что наш⁀ список ΠΈΠ· β€Œ10 ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… Π½Π°Π²Ρ‹ΠΊΠΎΠ² для Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Π²Π°ΠΌ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒ Π²Π°ΡˆΡƒ β€Ρ‚Π΅Ρ…Π½ΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π±Π°Π·Ρƒ, Π½ΠΎ ΠΈ β’Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ ​на Ρ„ΠΎΠ½Π΅ Π΄Ρ€ΡƒΠ³ΠΈΡ… спСциалистов Π² этой Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ Ρ€Π°Π·Π²ΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉΡΡ отрасли. ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, ⁣что ‍мастСрство Π½Π΅ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ сразу; это Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ постоянного⁀ обучСния, ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ и⁣ стрСмлСния к‍ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½ΡΡ‚Π²Ρƒ. НС β€ΠΎΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π° достигнутом, продолТайтС‍ ΠΈΠ·ΡƒΡ‡Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ инструмСнты ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ⁒и Π²Ρ‹ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ достигнСтС Π½ΠΎΠ²Ρ‹Ρ… высот Π² ΠΌΠΈΡ€Π΅ Java-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π£Π΄Π°Ρ‡ΠΈ ⁣в ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ!