ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ²ΡΡΠ°ΡΡ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠ΄Π° Java
ΠΡΡΠΎΡΠ½ΠΈΠΊ:
Dev.to
ΠΡΡΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± Π·Π°ΡΠΈΡΠΈΡΡ Π²Π°Ρ ΠΊΠΎΠ΄ ΠΎΡ ΠΎΡΠΈΠ±ΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΡ
ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ, β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π°. ΠΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠΌΠΎΡΡ Π²Π°ΠΌ Π½Π°ΠΉΡΠΈ ΠΈ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄ Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΎΠ½ Π²ΡΠΉΠ΄Π΅Ρ Π² ΠΏΡΠΎΠ΄. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ΄Π° Π² ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΡΠΈΡΡΠ°ΡΠΈΡΡ
.
![ΠΠΎΡΠ΅-Π±ΡΠ΅ΠΉΠΊ #61. ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ²ΡΡΠ°ΡΡ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠ΄Π° Java. Π―Π·ΡΠΊ Java ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΡ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ - 1]()
DeepSource
DeepSource β ΡΡΠΎ, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π»ΡΡΡΠΈΠΉ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ ΠΊΠΎΠ΄Π° Π΄Π»Ρ Java, ΠΈΠ· Π²ΡΠ΅Ρ
. DeepSource
ΠΎΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅Ρ Π±ΠΎΠ»Π΅Π΅ 170 ΠΏΡΠΎΠ±Π»Π΅ΠΌ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ
Ρ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΊΠΎΠ΄Π° Java, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΈ Π°Π½ΡΠΈΠΏΠ°ΡΡΠ΅ΡΠ½ΠΎΠ². Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΎΠ½ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΡΠΎΠ΅ΠΊΡΡ Java Π½Π° Gradle, Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ DeepSource ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Maven ΠΈ Android.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠΎΠ·Π΄Π°ΡΠ΅Π»ΠΈ DeepSource ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π°Π΄ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Autofix: ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Java-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΈΡΠΏΡΠ°Π²Π»ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π±Π΅Π· Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄Π°.
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ:
- ΠΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅Ρ Π±ΠΎΠ»Π΅Π΅ 170 ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΊΠΎΠ΄Π°.
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ Π²Π΅ΡΡΠΈΠΈ OpenJDK Ρ 8 ΠΏΠΎ 14.
- ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ: Gradle.
ΠΠΈΡΠ΅Π½Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅: Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΡΡΡΠ΄Π΅Π½ΡΠΎΠ² ΠΈ Π½Π΅ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΡ
ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΉ.
ΠΠ»Π°ΡΠ½ΡΠ΅ ΡΠ°ΡΠΈΡΡ Π½Π°ΡΠΈΠ½Π°ΡΡΡΡ ΠΎΡ 12 Π΄ΠΎΠ»Π»Π°ΡΠΎΠ² Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² ΠΌΠ΅ΡΡΡ.
SonarQube
SonarQube β ΡΡΠΎ Π½Π°Π±ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π° Java Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠ°ΠΊΠΈΡ
ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠ°ΠΊ FindBugs ΠΈ PMD.
ΠΠ½ΡΡΠΈΡΠΈΠ²Π½ΠΎ ΠΏΠΎΠ½ΡΡΠ½ΡΠ΅ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° SonarQube ΡΠΎΡ
ΡΠ°Π½ΡΡΡ ΠΈΡΡΠΎΡΠΈΡ, ΡΡΠΎ ΡΠ»ΡΡΡΠ°Π΅Ρ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΠΊΠΎΠ΄Π°. SonarQube ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅Π΄ΠΎΠ²ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π°Π½Π°Π»ΠΈΠ·Π°, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Ρ ΠΎΠ±ΡΠ°Π·ΡΠΎΠΌ. Π’Π°ΠΊΠΆΠ΅ ΠΎΠ½ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡ Π°Π½Π°Π»ΠΈΠ· ΠΏΠΎΡΠΎΠΊΠ° Π΄Π°Π½Π½ΡΡ
, Π½Π°Ρ
ΠΎΠ΄ΠΈΡ ΡΠ²Π½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² ΡΡΡΡΠΊΡΡΡΠ΅ ΠΊΠΎΠ΄Π°, ΠΎΡΠΈΠ±ΠΊΠΈ ΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ.
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ:
- Π‘ΠΎΠ΄Π΅ΡΠΆΠΈΡ 597 ΠΏΡΠ°Π²ΠΈΠ» Π΄Π»Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΊΠΎΠ΄Π°.
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π²ΡΠ΅ ΡΠ·ΡΠΊΠΎΠ²ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π΄ΠΎ Java 14.
- ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ: Maven, Gradle, Ant.
ΠΠΈΡΠ΅Π½Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅: Π²Π΅ΡΡΠΈΡ Community Edition Π±Π΅ΡΠΏΠ»Π°ΡΠ½Π°Ρ ΠΈ ΠΈΠΌΠ΅Π΅Ρ ΠΎΡΠΊΡΡΡΡΠΉ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄.
Π‘ΡΠΎΠΈΠΌΠΎΡΡΡ Π»ΠΈΡΠ΅Π½Π·ΠΈΠΈ Π½Π° ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ β ΠΎΡ 120 Π΅Π²ΡΠΎ.
SpotBugs
SpotBugs β ΡΡΠΎ ΠΏΡΠ΅Π΅ΠΌΠ½ΠΈΠΊ FindBugs: ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π° Java, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΡΠ»Π΅Π΄ΡΠ΅Ρ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ JVM, Π½Π°Ρ
ΠΎΠ΄ΠΈΡ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΈ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΡ
ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠ΅ΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, Π²ΡΡΠ²Π»ΡΡ Π΄Π΅ΡΠ΅ΠΊΡΡ ΠΊΠΎΠ΄ΠΈΠ½Π³Π°.
ΠΠ± ΡΡΠΈΡ
Π΄Π΅ΡΠ΅ΠΊΡΠ°Ρ
ΡΠΎΠΎΠ±ΡΠ°ΡΡ Π² ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡΡ
(warnings), Π½ΠΎ Π½Π΅ Π²ΡΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠ²Π»ΡΡΡΡΡ Π΄Π΅ΡΠ΅ΠΊΡΠ°ΠΌΠΈ: ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΠΎΠΏΠΎΠ²Π΅ΡΠ°ΡΡ ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ
ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°Ρ
Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ. Π ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ Π±ΠΎΠ»Π΅Π΅ 400 ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ, ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π½ΡΡ
Π½Π° ΡΠ΅ΡΡΡΠ΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΈ: (1) Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΎΠΏΠ°ΡΠ½ΡΠ΅, (2) ΠΎΠΏΠ°ΡΠ½ΡΠ΅, (3) ΡΠ΅ΡΡΠ΅Π·Π½ΡΠ΅, (4) ΡΡΠ΅Π±ΡΡΡΠΈΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ.
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ:
- ΠΠ±Π½Π°ΡΡΠΆΠΈΠ²Π°Π΅Ρ Π² ΠΊΠΎΠ΄Π΅ Π±ΠΎΠ»Π΅Π΅ 400 ΡΠΈΠΏΠΎΠ² ΠΎΡΠΈΠ±ΠΎΠΊ.
- ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ SpotBugs ΡΡΠ΅Π±ΡΠ΅ΡΡΡ JRE (ΠΈΠ»ΠΈ JDK) 1.8.0 ΠΈΠ»ΠΈ Π½ΠΎΠ²Π΅Π΅. ΠΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π΄Π»Ρ Π»ΡΠ±ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ Java, Π½Π°ΡΠΈΠ½Π°Ρ Ρ 1.0 ΠΈ Π΄ΠΎ 1.9.
- ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ: Ant, Maven, Gradle.
ΠΠΈΡΠ΅Π½Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅:
Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΈ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.
PMD
PMD Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Java, ΡΠ²Π΅ΡΡΠ΅Ρ Π΅Π³ΠΎ ΡΠΎ ΡΠ²ΠΎΠΈΠΌ ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΏΡΠ°Π²ΠΈΠ» ΠΈ ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ½ΡΡ
ΡΡΡΠΎΠΊΠ°Ρ
. PMD ΡΠΌΠ΅Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ ΠΎΠ±ΡΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Ρ
Π°ΡΠ΄ΠΊΠΎΠ΄ΠΈΠ½Π³ ΠΏΠ°ΡΠΎΠ»Π΅ΠΉ ΠΈ IP-Π°Π΄ΡΠ΅ΡΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΠΊΠ»Π° forEach Π²ΠΌΠ΅ΡΡΠΎ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ for, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°ΡΡΡΠ°Π΅Ρ
Π·Π°ΠΊΠΎΠ½ ΠΠ΅ΠΌΠ΅ΡΡΡ ΠΈΠ»ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ Π°Π½ΡΠΈΠΏΠ°ΡΡΠ΅ΡΠ½ God Class.
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ:
- ΠΠΎΠ»Π΅Π΅ 250 ΠΏΡΠ°Π²ΠΈΠ» Π΄Π»Ρ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π² Java.
- Π―Π·ΡΠΊΠΎΠ²Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π΄ΠΎ Java 13
- ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ: Maven, Gradle.
ΠΠΈΡΠ΅Π½Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅:
Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΈ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.
EclEmma
EclEmma (Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ JaCoCo) β ΡΡΠΎ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠΉ Π½Π°Π±ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΠΏΠΎΠΊΡΡΡΠΈΡ ΠΊΠΎΠ΄Π° Java Π΄Π»Ρ Eclipse. ΠΠ½ ΠΈΠ·ΠΌΠ΅ΡΡΠ΅Ρ ΠΏΠΎΠΊΡΡΡΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΈ Π²ΡΠ΄Π°Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΎ Π½Π΅ΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΡΡ
ΠΎΡΡΠ΅ΡΠΎΠ².
EclEmma Π²ΡΠ΄Π΅Π»ΡΠ΅Ρ ΡΡΡΠΎΠΊΠΈ ΠΊΠΎΠ΄Π° ΠΈ ΠΎΠ±ΡΠΈΠΉ ΠΏΡΠΎΡΠ΅Π½Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅Ρ ΠΏΠΎΠΊΡΡΡΠΈΠ΅ ΡΡΡΠΎΠΊ ΠΈ Π²Π΅ΡΠ²Π΅ΠΉ. ΠΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΎΡΠ΅Π½ΠΈΠ²Π°ΡΡ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π»ΠΈ ΠΊΠ°ΠΊ ΡΠ»Π΅Π΄ΡΠ΅Ρ, ΠΈ ΡΠΎΠΊΡΡΠΈΡΡΠ΅ΡΡΡ Π½Π° ΠΎΠ±Π»Π°ΡΡΡΡ
Ρ Π½ΠΈΠ·ΠΊΠΈΠΌ ΠΎΡ
Π²Π°ΡΠΎΠΌ. ΠΠ½ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ 3 ΡΠΈΠΏΠ° ΡΠΎΡΠΌΠ°ΡΠΎΠ² ΠΎΡΡΠ΅ΡΠΎΠ²: HTML, XML ΠΈ CSV.
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ:
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ°ΠΉΠ»Ρ ΠΊΠ»Π°ΡΡΠΎΠ² Java ΠΎΡ Π²Π΅ΡΡΠΈΠΈ 1.0 Π΄ΠΎ 14.
- ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ: Ant, Maven.
ΠΠΈΡΠ΅Π½Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅:
Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΈ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.
Checkstyle
Checkstyle β ΡΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π° Java, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠ΄Π° ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΈΡ
ΡΠΎΠ±Π»ΡΠ΄Π΅Π½ΠΈΠ΅. Checkstyle Π²ΡΡΠ²Π»ΡΠ΅Ρ Π½Π°ΡΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠ°Π²ΠΈΠ», ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΈΡ
ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ ΠΈ ΠΏΠ΅ΡΠ΅ΡΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ°ΠΊΠΈΡ
IDE, ΠΊΠ°ΠΊ Eclipse, IntelliJ IDEA ΠΈΠ»ΠΈ NetBeans.
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ:
- ΠΠΎΠ»Π΅Π΅ 180 ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ Π½Π° ΡΠΎΠ±Π»ΡΠ΄Π΅Π½ΠΈΠ΅ ΡΡΠΈΠ»Ρ Java-ΠΊΠΎΠ΄Π°.
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ·ΡΠΊΠΎΠ² Π΄ΠΎ Java 14.
- ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ: Ant, Maven.
ΠΠΈΡΠ΅Π½Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅:
Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΈ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.
JArchitect
JArchitect β ΡΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° Java, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΠ΅Π½ΠΈΠ²Π°Π΅Ρ ΡΠ°ΠΊΠΈΠ΅ ΠΌΠ΅ΡΡΠΈΠΊΠΈ ΠΊΠΎΠ΄Π°, ΠΊΠ°ΠΊ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΌΠ΅ΡΠΎΠ΄Π°, ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΠΈ ΡΡΡΠΎΠΊ, ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΈΠΊΠ»ΠΎΠ² Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅, Π°ΡΡΠ΅ΡΠ΅Π½ΡΠ½ΠΎΠ΅ ΠΈ ΡΡΡΠ΅ΡΠ΅Π½ΡΠ½ΠΎΠ΅ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΠ΅ ΠΈ Ρ.Π΄. ΠΠ½ ΠΈΠ·ΠΌΠ΅ΡΡΠ΅Ρ, Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ ΠΈ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ Π²Π°Ρ ΠΊΠΎΠ΄, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ Π½Π΅ΠΏΡΠ΅Π΄Π²ΠΈΠ΄Π΅Π½Π½ΡΡ
ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΈ Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½ΠΈΠ΅ ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π΄ΠΎΠ»Π³Π°.
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ:
- Π―Π·ΡΠΊΠΎΠ²Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΎΡ Java 8 Π΄ΠΎ 13.
- ΠΠΎΠ»Π΅Π΅ 450 ΠΏΡΠ°Π²ΠΈΠ».
- ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ: Maven, Gradle, Ant.
ΠΠΈΡΠ΅Π½Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅: Π±Π΅ΡΠΏΠ»Π°ΡΠ½Π°Ρ ΠΏΡΠΎΠ±Π½Π°Ρ Π²Π΅ΡΡΠΈΡ Π½Π° 14 Π΄Π½Π΅ΠΉ, Π±Π΅ΡΠΏΠ»Π°ΡΠ½Π°Ρ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π΄Π»Ρ Π½Π΅ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΈΡ
ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΏΠ΅ΡΡΠΎΠ½Π°Π»ΡΠ½Π°Ρ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ β 149 Π΄ΠΎΠ»Π»Π°ΡΠΎΠ² Π‘Π¨Π, Π²Π΅ΡΡΠΈΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² β 299 Π΄ΠΎΠ»Π»Π°ΡΠΎΠ² Π‘Π¨Π, Build Machine β 549 Π΄ΠΎΠ»Π»Π°ΡΠΎΠ² Π‘Π¨Π.
JUnit
JUnit β ΠΏΠΎΠΏΡΠ»ΡΡΠ½Π°Ρ ΡΡΠ΅Π΄Π° ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΡ
Π½Π° Java, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΏΠΈΡΠ°ΡΡ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΠ΅ ΡΠ΅ΡΡΡ Π΄Π»Ρ Java 8 ΠΈ Π²ΡΡΠ΅. JUnit ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠΎΡΡΡΡ
, Π½ΠΎ ΠΌΠΎΡΠ½ΡΡ
ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ. ΠΠ°ΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΡ Ρ JUnit Π»Π΅Π³ΠΊΠΎ: Π² Π½Π΅ΠΌ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΉ Π΄Π»Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ»ΠΎΠΆΠ½ΡΡ
ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π².
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ:
- JUnit 5 (ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π²ΡΠΏΡΡΠΊ) ΡΡΠ΅Π±ΡΠ΅Ρ Java 8 (ΠΈΠ»ΠΈ Π²ΡΡΠ΅) Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
- ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ: Maven, Gradle, Ant.
ΠΠΈΡΠ΅Π½Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅:
Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎ ΠΈ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.
Π―Π·ΡΠΊ Java ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΡ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ
ΠΡΡΠΎΡΠ½ΠΈΠΊ:
Opensource
ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Java Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π±ΠΈΠ·Π½Π΅Ρ-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π²Ρ Π΄ΠΎΠ»ΠΆΠ½Ρ Π·Π½Π°ΡΡ, ΡΡΠΎ Java Standard Edition (SE) β ΡΡΠΎ Π½Π΅ ΠΠ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Π² ΡΠ½Π²Π°ΡΠ΅ 2019 Π³ΠΎΠ΄Π° ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΡ Oracle ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»Π° ΡΠ²ΠΎΡ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΡ β ΡΠ΅ΠΏΠ΅ΡΡ ΠΎΠ½Π° ΡΡΠ΅Π±ΡΠ΅Ρ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΡΡ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ Π΄Π»Ρ Π»ΡΠ±ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ SE, ΠΎΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠ΅Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° Π΄ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΡΠ΅Π΄Ρ.
ΠΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π²ΡΠ·Π²Π°Π»ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²ΠΎΠΏΡΠΎΡΠΎΠ² ΡΡΠ΅Π΄ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎΠ±Π»ΡΠ΄Π΅Π½ΠΈΡ Π»ΠΈΡΠ΅Π½Π·ΠΈΠΎΠ½Π½ΡΡ
ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Java. ΠΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΠ΅ Π΅ΡΡΡ ΡΠΎΠΌΠ½Π΅Π½ΠΈΡ ΠΏΠΎ ΡΠΎΠΌΡ, ΠΊΠ°ΠΊ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Java Π² ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ
Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅ Π²ΡΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΡΡ Π²Π°ΠΌ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
![ΠΠΎΡΠ΅-Π±ΡΠ΅ΠΉΠΊ #61. ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ²ΡΡΠ°ΡΡ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠ΄Π° Java. Π―Π·ΡΠΊ Java ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΡ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ - 2]()
Π Π°Π·Π²ΠΈΠ²Π°ΡΡΠΈΠ΅ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π² ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π΅ Java
OpenJDK (Open Java Development Kit) β ΡΡΠΎ Π±Π΅ΡΠΏΠ»Π°ΡΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Java SE Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ. ΠΡΠΎ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±ΠΎΠ»Π΅Π΅ 70% Java-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΈ ΡΡΠ΅Π΄Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Java, ΠΎΡΡΠ°Π²Π°ΡΡΡ ΠΏΡΠΈ ΡΡΠΎΠΌ Π² ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ΅ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ.
OpenJDK ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄
Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ GNU GPLv2. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½Π° Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ ΡΠ²ΠΎΠ±ΠΎΠ΄Ρ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΡ, ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ OpenJDK Π²ΡΠ±ΠΎΡΠΎΠΌ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ Java-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π½Π°ΡΡΠΎΠ»ΡΠ½ΡΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΡΡ
Ρ Java SE.
Oracle ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Enterprise Java (Java EE), ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ Java SE. Java EE Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π²ΡΡ
ΠΎΠ΄ΡΡΠΈΠ΅ Π·Π° ΡΠ°ΠΌΠΊΠΈ SE, Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΠΊΡΡΠΏΠ½ΠΎΠΌΠ°ΡΡΡΠ°Π±Π½ΡΡ
, ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΡΡ
, ΠΌΠ½ΠΎΠ³ΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΡ
ΠΈ Π·Π°ΡΠΈΡΠ΅Π½Π½ΡΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΡ
ΡΡΠ΅Π΄.
Π ΡΠ΅Π½ΡΡΠ±ΡΠ΅ 2017 Π³ΠΎΠ΄Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Java EE ΠΏΠ΅ΡΠ΅Π΄Π°Π»ΠΈ
Eclipse Foundation, ΡΡΠΎ ΠΏΡΠΈΠ²Π΅Π»ΠΎ ΠΊ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΡ
ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΎΠ³ΠΎ Π»ΠΈΡΠ΅Π½Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠΎΠ΄ ΡΠΏΡΡΡΡ, Π² 2018 Π³ΠΎΠ΄Ρ, Eclipse Foundation ΠΎΠ±ΡΡΠ²ΠΈΠ» ΠΎ Π²ΡΠΏΡΡΠΊΠ΅ Π½ΠΎΠ²ΠΎΠ³ΠΎ Π±ΡΠ΅Π½Π΄Π°
Jakarta EE. ΠΠ½ ΠΏΡΠΈΠ·Π²Π°Π½ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄ΡΡΠΈΡ
Ρ Java EE Π½Π° Π½ΠΎΠ²ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ. ΠΠ²ΠΎΠ»ΡΡΠΈΡ ΠΎΡ Java EE ΠΊ Jakarta EE ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ²Π»ΠΈΡΠ»Π° Π½Π° ΠΌΠ½ΠΎΠ³ΠΈΡ
ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΡ
Java-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΏΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½ΠΎΠ²ΠΎΠΉ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠΈ.
Π Π°Π·Π²ΠΈΡΠΈΠ΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² ΠΏΠΎ ΠΌΠ΅ΡΠ΅ ΡΠ°Π·Π²ΠΈΡΠΈΡ Java
Π’Π΅ΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ Π½ΠΎΠ²ΡΠ΅ ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ RESTful API (2000), HTTP 2 (2015) ΠΈ JSON (2017), ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π»ΠΈΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π±ΡΡΡΡΠΎ ΠΌΠ΅Π½ΡΡΡΠΈΠΌΠΈΡΡ Π²Π΅Π±-Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ°ΠΌΠΈ. ΠΠ½ΡΠ΅ΡΠ΅Ρ ΠΊ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½ΡΠΌ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ°ΠΌ ΡΠΎΡ, Π½ΠΎ ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Java EE Π½Π°Ρ
ΠΎΠ΄ΠΈΠ»Π°ΡΡ Π² ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄Π½ΠΎΠΌ ΠΏΠ΅ΡΠΈΠΎΠ΄Π΅, ΠΎΠ½Π° Π½Π΅ ΡΠ»ΠΎΠ²ΠΈΠ»Π° ΡΡΠΈ Π½ΠΎΠ²ΡΠ΅ ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΡ.
Π ΠΎΡΠ²Π΅Ρ Π½Π° Π·Π°ΠΏΡΠΎΡΡ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π° Java, Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ (IBM, Red Hat ΠΈ Tomitribe) ΡΠΎΠ·Π΄Π°Π»ΠΈ Π² 2016 Π³ΠΎΠ΄Ρ
MicroProfile β ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Enterprise Java Π΄Π»Ρ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½ΡΡ
Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡ. ΠΠΎΠ·Π΄Π½Π΅Π΅ MicroProfile ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΠ»ΡΡ ΠΊ
Eclipse Foundation, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΠ² ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΠΌ Java-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Π΄Π²Π° Π²Π°ΡΠΈΠ°Π½ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½ΡΡ
Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡ: SpringBoot ΠΈΠ»ΠΈ MicroProfile. MicroProfile ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΡΠ΅ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Java Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΡΠ΅ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎΡΡΠ°Π²ΡΠΈΠΊΠΎΠ², ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Ρ ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ API Java / Jakarta EE ΠΈ MicroProfile Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ.
ΠΡΠ»ΠΈ Π²Π°Ρ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ΅Ρ Enterprise-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Java, ΡΠΎ
MicroProfile Starter ΡΡΠ°Π½Π΅Ρ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΡΠΌ Π²ΡΠ±ΠΎΡΠΎΠΌ Π΄Π»Ρ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅. ΠΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ MicroProfile Starter Π·Π°ΠΌΠ΅ΡΠ½ΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΊΠΎΠ΄Π° ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Java.
Π‘ΡΠ΅Π΄Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ MicroProfile ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ Π°ΡΡΠ΅ΡΠ°ΠΊΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΉΠ»Π° JAR ΠΈΠ»ΠΈ WAR) ΠΈ Π΅Π³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Java ΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ MicroProfile. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ Π½ΡΠΆΠ½ΡΡ ΠΎΠ±Π»Π°ΡΠ½ΡΡ ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
Quarkus) ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ MicroProfle Starter, Π° Π·Π°ΡΠ΅ΠΌ Π²ΡΠ±ΡΠ°ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ
ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΡ
ΡΠΈΡ, ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡ, OpenAPI, OpenTracing ΠΈ Π΄ΡΡΠ³ΠΈΠ΅. ΠΡΠΏΠΎΠ»Π½ΠΈΠ² ΡΡΠΈ ΡΠ°Π³ΠΈ, Π½Π°ΠΆΠΌΠΈΡΠ΅ Β«ΠΠ°Π³ΡΡΠ·ΠΈΡΡΒ», ΡΡΠΎΠ±Ρ Π½Π°ΡΠ°ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
![ΠΠΎΡΠ΅-Π±ΡΠ΅ΠΉΠΊ #61. ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ²ΡΡΠ°ΡΡ ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ ΠΊΠΎΠ΄Π° Java. Π―Π·ΡΠΊ Java ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΡ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ - 3]()
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠ°Π²ΠΈΠ³Π°ΡΠΈΡ ΠΏΠΎ Java Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠ°Π½Π½ΠΎΠΉ, ΡΡΠΈΡΡΠ²Π°Ρ Π΄ΠΎΠ»Π³ΡΡ ΠΈΡΡΠΎΡΠΈΡ ΡΠ·ΡΠΊΠ° ΠΈ Π΅Π³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ OpenJDK ΠΈ Jakarta EE ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Java ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π±Π΅Π· ΡΡΠ΅ΡΠ±Π° Π΄Π»Ρ ΡΠ²ΠΎΠ±ΠΎΠ΄Ρ ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. ΠΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΠ·Π½Π°ΡΡ ΠΎΠ± ΡΡΠΎΠΌ, ΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ MicroProfile ΠΈΠ»ΠΈ Quarkus.