Ui framework java: ΠΡΠ°ΡΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ GUI-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² Π΄Π»Ρ Java ΠΈ ΠΌΠΎΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΏΡΠΎΡΡΠ΅Π½ΡΠΊΠΎΠ΅ GUI-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Swing
ΠΡΠ°ΡΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ GUI-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² Π΄Π»Ρ Java ΠΈ ΠΌΠΎΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΏΡΠΎΡΡΠ΅Π½ΡΠΊΠΎΠ΅ GUI-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Swing
Π’Π°ΠΊ ΠΈΡΡΠΎΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠ»ΠΎΠΆΠΈΠ»ΠΎΡΡ, ΡΡΠΎ Ρ UI ΠΌΠ½Π΅ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΎΡΠ΅Π½Ρ ΠΌΠ°Π»ΠΎ. ΠΠΈΠ΄ΠΈΠΌΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΠ½Π΅ ΡΠ°ΠΊ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠ΅ Π²ΡΡΠΊΠΈΠ΅ ΡΠ°ΠΌ Qt ΠΈ wxWidgets β Π²ΡΠ΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ Π½ΠΎΠ²ΡΠΌ, ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΌ, Π½Π΅ΠΎΠ±ΡΡΠ½ΡΠΌ. ΠΠΏΡΠΎΡΠ΅ΠΌ, ΠΊΠΎΠ»Ρ ΡΠΊΠΎΡΠΎ Ρ Π²Π·ΡΠ»ΡΡ Π·Π° ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ Java, ΡΠ΅ΡΡ ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΠΏΠΎΠΉΠ΄Π΅Ρ Π½Π΅ ΠΎ Qt ΠΈ Π½Π΅ ΠΎ wxWidgets, Π° ΠΎ Swing. Π‘Π΅Π³ΠΎΠ΄Π½Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΡΠΌΠΈ ΡΡΠΈΠ»ΠΈΡΠΌΠΈ ΠΌΡ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΠΏΡΠΎΡΡΠ΅Π½ΡΠΊΠΎΠ΅ GUI-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Java, Ρ ΠΊΠ½ΠΎΠΏΠΎΡΠΊΠ°ΠΌΠΈ, ΡΠΏΠΈΡΠΊΠ°ΠΌΠΈ ΠΈ Π΄Π°ΠΆΠ΅ ΡΠΌΠ΅ΡΡΠ΅Π΅ ΠΌΠ΅Π½ΡΡΡ ΡΠΊΡΡΠΊΠΈ!
Π‘ΠΈΡΡΠ°ΡΠΈΡ Ρ GUI ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°ΠΌΠΈ Π² ΠΌΠΈΡΠ΅ Java Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΏΡΡΠ°Π½Π½Π°Ρ. ΠΠ°ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ ΡΠΌΠΎΠ³ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ, Π΄Π΅Π»Π° ΠΎΠ±ΡΡΠΎΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
- AWT (Abstract Window Toolkit) Π±ΡΠ» ΠΏΠ΅ΡΠ²ΡΠΌ GUI ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠΌ. ΠΠ΄Π΅Ρ Π±ΡΠ»Π° ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½Π°Ρ β AWT ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π½Π°ΡΠΈΠ²Π½ΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ, ΡΠΎ Π΅ΡΡΡ, ΠΎΠ½ΠΈ Π²ΡΠ³Π»ΡΠ΄ΡΡ ΠΈ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈ ΡΠ²Π»ΡΡΡΡΡ ΡΠΎΠ΄Π½ΡΠΌΠΈ, Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, Π³Π΄Π΅ Π²Ρ Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΠ΅ ΡΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΠΎΠΊΠ°Π·Π°Π»ΠΎΡΡ, ΡΡΠΎ (1) ΠΎΠ±ΡΠΈΡ Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΎΠ² ΠΌΠ°Π»ΠΎ ΠΈ (2) ΠΏΠΈΡΠ°ΡΡ ΠΊΡΠΎΡΡΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΡΠ΅ Π½Π°ΡΠΈΠ²Π½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΠΎΠΏΠΎΠ»Π·Π»ΠΎ ΠΈ Π½Π΅ ΡΠ°Π·ΡΠ΅Ρ Π°Π»ΠΎΡΡ, ΠΎΡΠ΅Π½Ρ ΡΠ»ΠΎΠΆΠ½ΠΎ;
- ΠΠΎΡΡΠΎΠΌΡ Π½Π° ΡΠΌΠ΅Π½Ρ AWT ΠΏΡΠΈΡΠ΅Π» Swing. Swing ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΎΡΠΌΠΎΡΠΊΠΈ, ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ AWT, Π½Π° ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½ ΡΠ²ΠΎΠΈΠΌΠΈ ΡΠΈΠ»Π°ΠΌΠΈ ΡΠΈΡΡΠ΅Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ. Π Π°Π±ΠΎΡΠ°Π΅Ρ ΡΡΠΎ Ρ ΠΎΠ·ΡΠΉΡΡΠ²ΠΎ, ΠΏΠΎΠ½ΡΡΠ½ΠΎ Π΄Π΅Π»ΠΎ, ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Π½ΠΎ Π·Π°ΡΠΎ UI ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΡΡΠ°Π±Π΅Π»ΡΠ½ΡΠΌ. Swing ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π½Π° Π²ΡΠ±ΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Look&Feel, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΊΠΎΡΠΎΡΡΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Π»ΠΈΠ±ΠΎ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠ³Π»ΡΠ΄Π΅Π»ΠΎ ΠΈ Π²Π΅Π»ΠΎ ΡΠ΅Π±Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ Windows, ΡΠ°ΠΊ ΠΈ ΠΏΠΎΠ΄ Linux, Π»ΠΈΠ±ΠΎ ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡΠ»ΠΎ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΡ ΠΎΠΆΠ΅ Π½Π° Π½Π°ΡΠΈΠ²Π½ΠΎΠ΅ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ ΡΠΎΠ³ΠΎ, Π³Π΄Π΅ Π΅Π³ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ. Π ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ ΠΎΡΠ»Π°ΠΆΠΈΠ²Π°ΡΡ, Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ β ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ ΡΡΠ°ΡΡΠ»ΠΈΠ²Π΅Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ. ΠΡΡΠ°ΡΠΈ, ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Swing Π±ΡΠ» ΡΠ΄Π΅Π»Π°Π½ ΠΏΠ°ΡΠ½ΡΠΌΠΈ ΠΈΠ· Netscape;
- SWT (Standard Widget Toolkit) β ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π² IBM ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π² Eclipse. ΠΠ°ΠΊ ΠΈ Π² AWT, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π½Π°ΡΠΈΠ²Π½ΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ. SWT Π½Π΅Β Π²Ρ ΠΎΠ΄ΠΈΡ Π² JDK ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ JNI, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΈΠ΄Π΅ΠΎΠ»ΠΎΠ³ΠΈΠΈ Java Β«Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ ΠΎΠ΄Π½Π°ΠΆΠ΄Ρ, ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π²Π΅Π·Π΄Π΅Β». ΠΡΠΎΠ΄Π΅ ΠΊΠ°ΠΊ ΠΏΡΠΈ ΠΎΡΠ΅Π½Ρ ΡΠΈΠ»ΡΠ½ΠΎΠΌ ΠΆΠ΅Π»Π°Π½ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠ°ΠΊΠΎΠ²Π°ΡΡ Π² ΠΏΠ°ΠΊΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ SWT Π΄Π»Ρ Π²ΡΠ΅Ρ -Π²ΡΠ΅Ρ -Π²ΡΠ΅Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌ, ΠΈ ΡΠΎΠ³Π΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠΎΠ΄Π΅ ΠΊΠ°ΠΊ Π΄Π°ΠΆΠ΅ ΡΡΠ°Π½Π΅Ρ ΠΏΠΎΡΡΠ°Π±Π΅Π»ΡΠ½ΡΠΌ, Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΡΠ²ΠΈΡΡΡ ΠΊΠ°ΠΊΠ°Ρ-Π½ΠΈΠ±ΡΠ΄Ρ Π½ΠΎΠ²Π°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΈΠ»ΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°;
- JavaFX Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΏΠΈΠ»ΠΈΡΡΡ Π² Oracle ΠΈ ΠΏΠΎΠ·ΠΈΡΠΈΠΎΠ½ΠΈΡΡΠ΅ΡΡΡ, ΠΊΠ°ΠΊ ΡΠΊΠΎΡΠ°Ρ Π·Π°ΠΌΠ΅Π½Π° Swing. ΠΠ΄Π΅ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈ JavaFX ΠΏΠΎΡ ΠΎΠΆ Π½Π° Swing, ΡΠΎ Π΅ΡΡΡ, ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π΅ Π½Π°ΡΠΈΠ²Π½ΡΠ΅. Π‘ΡΠ΅Π΄ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ JavaFX ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΡΠΌΠ΅ΡΠΈΡΡ Ρ Π°ΡΠ΄Π²Π΅ΡΠ½ΠΎΠ΅ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅, ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ GUI ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ CSS ΠΈ XML (FXML), Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ JavaFXβΠ° Π² SwingβΠ΅, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊΡΡΡ Π½ΠΎΠ²ΡΡ ΠΊΡΠ°ΡΠΈΠ²ΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΎΠ², Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ Π΄Π»Ρ ΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌ ΠΈ 3D. ΠΠΈΠ΄Π΅ΠΎ Ρ Π±ΠΎΠ»Π΅Π΅ Π΄Π΅ΡΠ°Π»ΡΠ½ΡΠΌ ΠΎΠ±Π·ΠΎΡΠΎΠΌ JavaFX ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π·Π΄Π΅ΡΡ. ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Java 7, JavaFX ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΡΡ JRE/JDK;
- NetBeans Platform (Π½Π΅ ΠΏΡΡΠ°ΡΡ Ρ NetBeans IDE!) β ΡΡΠΎ ΡΠ°ΠΊΠ°Ρ ΡΡΡΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ, ΠΊΠ°ΠΊ Ρ ΠΏΠΎΠ½ΡΠ», ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΠΎΠ²Π΅ΡΡ Swing ΠΈ JavaFX, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠ°ΠΊ Π±Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π½ΠΈΠΌΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ Π²ΡΡΠΊΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ. Π ΠΎΠ΄Π½ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅ΠΌ NetBeans Platform, Ρ Π²ΠΈΠ΄Π΅Π» Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΡΠ°ΡΠΊΠΈΠ²Π°ΡΡ Π²ΠΊΠ»Π°Π΄ΠΊΠΈ drug&dropβΠΎΠΌ, ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°Ρ ΠΏΠ°Π½Π΅Π»ΠΈ Π² ΠΎΠΊΠ½Π΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ ΡΠΎΠΌΡ, ΠΊΠ°ΠΊ ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠ΅ ΠΎΠΊΠΎΠ½Π½ΡΠ΅ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΡ. ΠΠΎ Π²ΡΠ΅ΠΉ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ, ΡΠ°ΠΌ Swing ΡΠ°ΠΊ Π½Π΅ ΡΠΌΠ΅Π΅Ρ. ΠΠΎΡΠΈΡΠ°ΡΡ ΠΏΡΠΎ NetBeans Platform ΠΏΠΎΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π΄Π΅ΡΡ;
ΠΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΎ, ΡΡΠΎ Π΅ΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ. ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΊΠ°Π½ΠΎΠ½ΠΈΡΠ½ΡΠΌ Π½Π° ΡΠ΅Π³ΠΎΠ΄Π½ΡΡΠ½ΠΈΠΉ Π΄Π΅Π½Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ Swing, ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΠΌ ΠΈ Π·Π°ΠΉΠΌΠ΅ΠΌΡΡ.
ΠΡΡΠ΅ ΡΡΠΎ-ΡΠΎ Π³ΠΎΠ²ΠΎΡΠΈΠ»ΠΎΡΡ ΠΏΡΠΎ ΠΊΠ°ΠΊΠΈΠ΅-ΡΠΎ ΡΠ°ΠΌ Look&Feel. Π§ΡΠΎΠ±Ρ Π»ΡΡΡΠ΅ ΠΏΠΎΠ½ΡΡΡ, ΠΎ ΡΠ΅ΠΌ ΠΈΠ΄Π΅Ρ ΡΠ΅ΡΡ, Π΄Π°Π²Π°ΠΉΡΠ΅ Π½Π°ΠΏΠΈΡΠ΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΏΠΈΡΠΎΠΊ ΡΡΠΈΡ ΡΠ°ΠΌΡΡ Look&Feel ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ ΠΏΡΡΠΌΠΎ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΠ°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΠΎΠ΄ Ubuntu:
Π ΡΠ°ΠΊ ΠΎΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΠΎΠ΄ Windows:
ΠΠ°ΠΊ Π²ΠΈΠ΄ΠΈΡΠ΅, JRE ΠΏΠΎΠ΄ Windows ΠΈ Linux Π²ΠΊΠ»ΡΡΠ°ΡΡ Π² ΡΠ΅Π±Ρ ΡΠ°Π·Π½ΡΠΉ Π½Π°Π±ΠΎΡ L&F. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΡΡΠΎΡΠΎΠ½Π½ΠΈΠΉ Look&Feel ΠΈΠ»ΠΈ Π΄Π°ΠΆΠ΅ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ²ΠΎΠΉ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ L&F Metal, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΎ Π²ΡΠ΅Ρ ΠΠ‘ ΠΈ ΠΎΠΊΠΎΠ½Π½ΡΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ°Ρ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ. ΠΡΠ»ΠΈ Π²Π°ΠΌ Π±ΠΎΠ»ΡΡΠ΅ Π½ΡΠ°Π²ΡΡΡΡ ΠΊΡΡΠ³Π»ΡΠ΅ ΠΊΠ½ΠΎΠΏΠΎΡΠΊΠΈ, ΡΠΎ Π²ΠΌΠ΅ΡΡΠΎ Metal ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Look&Feel Nimbus. ΠΡΠ»ΠΈ Π²Π°ΠΌ Ρ ΠΎΡΠ΅ΡΡΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΡΠ»ΠΎ ΠΏΠΎΡ ΠΎΠΆΠ΅ Π½Π° Π½Π°ΡΠΈΠ²Π½ΠΎΠ΅, ΡΠΎ ΠΏΠΎΠ΄ Linux ΡΠ»Π΅Π΄ΡΠ΅Ρ Π²ΡΠ±ΡΠ°ΡΡ L&F GTK+ (ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, Π° Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠΈΠ΄ΠΈΡ ΠΏΠΎΠ΄ KDE?), Π° ΠΏΠΎΠ΄ Windows β L&F Windows. ΠΠ΅ΠΏΠ»ΠΎΡ ΠΎΠΉ ΠΈΠ΄Π΅Π΅ΠΉ, Π²ΠΈΠ΄ΠΈΠΌΠΎ, Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅ΡΡ Π² Π²Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ°ΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ L&F. Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ ΡΡΠΈΠΌΠΈ L&F.
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΎΠ»Π»Π΅Π³ΠΈ UI-ΡΠΈΠΊΠΈ Π·Π°Π²Π΅ΡΠΈΠ»ΠΈ ΠΌΠ΅Π½Ρ, ΡΡΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΡ WYSIWYG ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠΎΠ² ΠΎΠ½ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ, Π° Π΅ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ, ΡΠΎ ΡΠ°Π·Π²Π΅ ΡΡΠΎ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ· Π½Π΅ΠΏΠ»ΠΎΡ ΠΈΡ WYSIWYG ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠΎΠ² Π½Π°Π·ΡΠ²Π°Π»ΡΡ JFormDesigner. ΠΠΎΠ²ΠΎΡΡΡ, Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ ΠΈΠΌ ΠΊΠΎΠ΄ Π΄Π°ΠΆΠ΅ ΠΏΠΎΡ ΠΎΠΆ Π½Π° ΠΊΠΎΠ΄, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ, Π° Π½Π΅ Π°Π΄ΠΎΠ²ΡΡ().ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ().Π²ΡΠ·ΠΎΠ²ΠΎΠ²().ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ²(). Π ΠΎΠ±ΡΠ΅ΠΌ, Π²Π΅ΡΡ ΠΊΠΎΠ΄ ΠΏΠΈΡΠ°Π»ΡΡ Π»Π°ΠΏΠΊΠ°ΠΌΠΈ Π² IntelliJ IDEA.
public static void main(String[] args) {
Β SwingUtilities.invokeLater(new Runnable() {
Β Β @Override
Β Β public void run() {
Β Β Β createGUI();
Β Β }
Β });
}
Π Swing ΠΈ AWT, Π΅ΡΠ»ΠΈ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΡΡΠΎ-ΡΠΎ ΠΏΠΎΠΌΠ΅Π½ΡΡΡ Π² UI, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΠΈΠ· event dispatching thread. Π‘ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ invokeLater ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΊΠ»Π°ΡΡ, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Runnable, ΠΈ Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π΅Π³ΠΎ ΠΌΠ΅ΡΠΎΠ΄ run() Π²Π½ΡΡΡΠΈ event dispatching thread. ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π²ΡΡΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, ΡΠΎ ΡΡΠΎ ΡΠ°ΠΊΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± Π² Java ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΊΠ»Π°ΡΡ, Π½Π΅ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Ρ Π΅ΠΌΡ ΠΈΠΌΠ΅Π½ΠΈ. ΠΠ»Π°ΡΡΡ Π±Π΅Π· ΠΈΠΌΠ΅Π½ΠΈ Π½Π°Π·ΡΠ²Π°ΡΡΡΡ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠΌΠΈ. Π§Π°ΡΡΠΎ Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ Π² Java Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΡ ΠΆΠ΅ ΡΠΎΠ»Ρ, ΡΡΠΎ ΠΈΠ³ΡΠ°ΡΡ Π»ΡΠΌΠ΄Π°-ΡΡΠΊΠ½ΡΠΈΠΈ Π² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠΎΠΌΠΈΠΌΠΎ ΠΏΡΠΎΡΠ΅Π³ΠΎ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΠΈ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡ. ΠΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, ΡΡΠΎ, Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Π»ΡΠΌΠ±Π΄, Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ Π² Java ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΡΠ°Π·Ρ ΠΏΠ°ΡΠΊΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². ΠΡΠΈΡΠΎΠΌ, ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ², Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΈΠ»ΠΈ ΡΠ°ΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡΡ ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ.
ΠΠ½Π½ΠΎΡΠ°ΡΠΈΡ @Override ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ run() Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Runnable. ΠΠ΅Π· Π½Π΅Π΅ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΊΡ ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π½ΠΎΠ²ΡΠΉ ΠΌΠ΅ΡΠΎΠ΄ Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠΉ. ΠΠΏΡΠΎΡΠ΅ΠΌ, Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π°Π½Π½ΠΎΡΠ°ΡΠΈΡ, Π²ΠΈΠ΄ΠΈΠΌΠΎ, Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½Π°, ΠΈ, Π½Π°Π²Π΅ΡΠ½ΠΎΠ΅, Π΄Π°ΠΆΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈΡΠ½Π΅ΠΉ.
Π ΠΈΡΠΎΠ³Π΅ event dispatching thread Π²ΡΠ·ΠΎΠ²Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄ createGUI(), ΠΏΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ:
private static void createGUI() {
Β JList<String> list = new JList<>();
Β list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
Β JScrollPane listScrollPane = new JScrollPane(list);
Β JPanel topPanel = new JPanel();
Β topPanel.setLayout(new BorderLayout());
Β topPanel.add(listScrollPane, BorderLayout.CENTER);
Β ActionListener updateButtonListener = new UpdateListAction(list);
Β updateButtonListener.actionPerformed(
Β Β new ActionEvent(list, ActionEvent.ACTION_PERFORMED, null)
Β );
Β JButton updateListButton = new JButton(«Update list»);
Β JButton updateLookAndFeelButton = new JButton(«Update Look&Feel»);
Β JPanel btnPannel = new JPanel();
Β btnPannel.setLayout(new BoxLayout(btnPannel, BoxLayout.LINE_AXIS));
Β btnPannel.add(updateListButton);
Β btnPannel.add(Box.createHorizontalStrut(5));
Β btnPannel.add(updateLookAndFeelButton);
Β JPanel bottomPanel = new JPanel();
Β bottomPanel.add(btnPannel);
Β JPanel panel = new JPanel();
Β panel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
Β panel.setLayout(new BorderLayout());
Β panel.add(topPanel, BorderLayout.CENTER);
Β panel.add(bottomPanel, BorderLayout.SOUTH);
Β JFrame frame = new JFrame(«Look&Feel Switcher»);
Β frame.setMinimumSize(new Dimension(300, 200));
Β frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
Β frame.add(panel);
Β frame.pack();
Β frame.setVisible(true);
Β updateListButton.addActionListener(updateButtonListener);
Β updateLookAndFeelButton.addActionListener(
Β Β new UpdateLookAndFeelAction(frame, list)
Β );
}
Π’ΡΡ, Π² ΠΎΠ±ΡΠ΅ΠΌ-ΡΠΎ, Π½Π΅Ρ Π½ΠΈΡΠ΅Π³ΠΎ ΡΡΠΏΠ΅Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΠ³ΠΎ. Π‘ΠΎΠ·Π΄Π°ΡΡΡΡ ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΡΠΏΠΈΡΠΎΠΊ, ΡΠΏΠΈΡΠΎΠΊ Π·Π°Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ Π² JScrollPane, ΡΡΠΎΠ±Ρ Ρ ΡΠΏΠΈΡΠΊΠ° Π±ΡΠ»Π° ΠΏΡΠΎΠΊΡΡΡΠΊΠ°. ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡΡΡ Π²ΠΎ ΡΡΠ΅ΠΉΠΌΠ΅ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΏΠ°Π½Π΅Π»Π΅ΠΉ. ΠΠ°Π½Π΅Π»ΠΈ ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π»Π°ΠΉΠΎΡΡΡ, Π·Π΄Π΅ΡΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ BorderLayout ΠΈ BoxLayout. ΠΡΠΈΠ½ΡΠΈΠΏ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ΅Π½ ΡΠΎΠΌΡ, ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π² wxWidgets.
ΠΠ»Ρ ΡΠ΅Π°ΠΊΡΠΈΠΈ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΎΠ±ΡΡΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ½ΠΎΠΏΠΎΠΊ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΊΠ»Π°ΡΡΡ, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ActionListener. Π ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²ΡΡΠ΅ ΠΊΠΎΠ΄Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π²Π° ΡΠ°ΠΊΠΈΡ ΠΊΠ»Π°ΡΡΠ° β UpdateListAction ΠΈ UpdateLookAndFeelAction. ΠΠ°ΠΊ Π½Π΅ΡΡΡΠ΄Π½ΠΎ Π΄ΠΎΠ³Π°Π΄Π°ΡΡΡΡ ΠΏΠΎ Π½Π°Π·Π²Π°Π½ΠΈΡ, ΠΏΠ΅ΡΠ²ΡΠΉ ΠΊΠ»Π°ΡΡ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π½Π°ΠΆΠ°ΡΠΈΠΉ Π½Π° Π»Π΅Π²ΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ Β«Update listΒ», Π²ΡΠΎΡΠΎΠΉ β Π½Π° ΠΏΡΠ°Π²ΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ Β«Update Look&FeelΒ». ActionListenerβΡ ΠΏΡΠΈΠ²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΊ ΠΊΠ½ΠΎΠΏΠΊΠ°ΠΌ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° addActionListener. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π°ΠΌ Ρ ΠΎΡΠ΅ΡΡΡ ΡΠ²ΠΈΠ΄Π΅ΡΡ ΡΠΏΠΈΡΠΎΠΊ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ Look&Feel, ΠΌΡ ΡΠΌΡΠ»ΠΈΡΡΠ΅ΠΌ Π½Π°ΠΆΠ°ΡΠΈΠ΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ Β«Update listΒ». ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡ ΠΊΠ»Π°ΡΡΠ° ActionEvent ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ Π΅Π³ΠΎ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΌΠ΅ΡΠΎΠ΄Ρ actionPerformed ΠΊΠ»Π°ΡΡΠ° UpdateListAction.
Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠ»Π°ΡΡΠ° UpdateListAction ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ:
static class UpdateListAction implements ActionListener {
Β private JList<String> list;
Β public UpdateListAction(JList<String> list) {
Β Β this.list = list;
Β }
Β @Override
Β public void actionPerformed(ActionEvent event) {
Β Β ArrayList<String> lookAndFeelList = new ArrayList<>();
Β Β UIManager.LookAndFeelInfo[] infoArray =
Β Β Β UIManager.getInstalledLookAndFeels();
Β Β int lookAndFeelIndex = 0;
Β Β int currentLookAndFeelIndex = 0;
Β Β String currentLookAndFeelClassName =
Β Β Β UIManager.getLookAndFeel().getClass().getName();
Β Β for(UIManager.LookAndFeelInfo info : infoArray) {
Β Β Β if(info.getClassName().equals(currentLookAndFeelClassName)) {
Β Β Β Β currentLookAndFeelIndex = lookAndFeelIndex;
Β Β Β }
Β Β Β lookAndFeelList.add(info.getName());
Β Β Β lookAndFeelIndex++;
Β Β }
Β Β String[] listDataArray = new String[lookAndFeelList.size()];
Β Β final String[] newListData =
Β Β Β lookAndFeelList.toArray(listDataArray);
Β Β final int newSelectedIndex = currentLookAndFeelIndex;
Β Β SwingUtilities.invokeLater(new Runnable() {
Β Β Β @Override
Β Β Β public void run() {
Β Β Β Β list.setListData(newListData);
Β Β Β Β list.setSelectedIndex(newSelectedIndex);
Β Β Β }
Β Β });
Β }
}
Π ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠΏΠΈΡΠΎΠΊ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΌΡ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ Look&Feel. ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ UpdateListAction ΡΠ²Π»ΡΠ΅ΡΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ Π½Π°ΡΠ΅Π³ΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° LookAndFeelSwitcher, Ρ Π½Π΅Π³ΠΎ Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ Π½Π°ΠΏΡΡΠΌΡΡ ΠΊ ΠΏΠΎΠ»ΡΠΌ ΡΠΎΠ·Π΄Π°Π²ΡΠ΅Π³ΠΎ Π΅Π³ΠΎ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠ° LookAndFeelSwitcher. ΠΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΡΠΈΠΊ Π²Π½ΡΡΡΠΈ ΠΌΠ΅Π½Ρ ΡΠΎΠΏΡΠΎΡΠΈΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΊΠΎΠΌΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Ρ ΡΠ΅ΡΠΈΠ» ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° ΡΠΏΠΈΡΠΎΠΊ ΡΠ²Π½ΠΎ ΡΠ΅ΡΠ΅Π· ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ.
ΠΠ΅ΡΠΎΠ΄ actionPerformed Π±ΡΠ΄Π΅Ρ Π²ΡΠ·ΡΠ²Π°ΡΡΡΡ ΠΏΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡ. ΠΠΎΠ΄ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΡΠΈΠ²ΠΈΠ°Π»Π΅Π½ β ΠΌΡ ΠΏΡΠΎΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΊΠ»Π°ΡΡΠ° UIManager Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠΏΠΈΡΠΊΠ° Π΄ΠΎΡΡΡΠΏΠ½ΡΡ Look&Feel, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ Look&Feel. ΠΠ°ΡΠ΅ΠΌ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠΏΠΈΡΠΊΠ° ΠΈ Π²ΡΠ±ΡΠ°Π½Π½ΡΠΉ Π² Π½Π΅ΠΌ ΡΠ»Π΅ΠΌΠ΅Π½Ρ. Π’ΡΡ Π½ΡΠΆΠ½ΠΎ ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π΄Π²Π° ΠΌΠΎΠΌΠ΅Π½ΡΠ°. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΠΊΠ°ΠΆΠ΄ΡΠΉ Look&Feel ΠΈΠΌΠ΅Π΅Ρ ΠΈΠΌΡ ΠΈ ΠΈΠΌΡ ΠΊΠ»Π°ΡΡΠ°, ΡΡΠΎ ΡΠ°Π·Π½ΡΠ΅ Π²Π΅ΡΠΈ. ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΈΠΌΠ΅Π½Π°, Π° ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ Look&Feel ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠΌΡ ΠΊΠ»Π°ΡΡΠ°. ΠΠΎ-Π²ΡΠΎΡΡΡ , ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠΎ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡΡΡ final ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ newListData ΠΈ newSelectedIndex, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² Π°Π½ΠΎΠ½ΠΈΠΌΠ½ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅. ΠΡΠΎ ΠΈ Π΅ΡΡΡ ΡΠΎΡ ΡΠ°ΠΌΡΠΉ Π°Π½Π°Π»ΠΎΠ³ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΠΉ, ΡΠ΅ΡΡ ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ»Π° ΡΠ°Π½Π΅Π΅. ΠΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅ final ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π² Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΡΡ ΠΏΡΠΈΠ²Π΅Π»ΠΎ Π±Ρ ΠΊ ΠΏΠ΅ΡΠ°Π»ΡΠ½ΡΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡΠΌ.
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΊΠ»Π°ΡΡ UpdateLookAndFeelAction:
static class UpdateLookAndFeelAction implements ActionListener {
Β private JList<String> list;
Β private JFrame rootFrame;
Β public UpdateLookAndFeelAction(JFrame frame, JList<String> list) {
Β Β this.rootFrame = frame;
Β Β this.list = list;
Β }
Β @Override
Β public void actionPerformed(ActionEvent e) {
Β Β String lookAndFeelName = list.getSelectedValue();
Β Β UIManager.LookAndFeelInfo[] infoArray =
Β Β Β UIManager.getInstalledLookAndFeels();
Β Β Β
Β Β for(UIManager.LookAndFeelInfo info : infoArray) {
Β Β Β if(info.getName().equals(lookAndFeelName)) {
Β Β Β Β String message = «Look&feel was changed to » + lookAndFeelName;
Β Β Β Β try {
Β Β Β Β Β UIManager.setLookAndFeel(info.getClassName());
Β Β Β Β Β SwingUtilities.updateComponentTreeUI(rootFrame);
Β Β Β Β } catch (ClassNotFoundException e1) {
Β Β Β Β Β message = «Error: » + info.getClassName() + » not found»;
Β Β Β Β } catch (InstantiationException e1) {
Β Β Β Β Β message = «Error: instantiation exception»;
Β Β Β Β } catch (IllegalAccessException e1) {
Β Β Β Β Β message = «Error: illegal access»;
Β Β Β Β } catch (UnsupportedLookAndFeelException e1) {
Β Β Β Β Β message = «Error: unsupported look and feel»;
Β Β Β Β }
Β Β Β Β JOptionPane.showMessageDialog(null, message);
Β Β Β Β break;
Β Β Β }
Β Β }
Β }
}
ΠΠ΄Π΅ΡΡ ΠΌΡ ΠΏΡΠΎΡΡΠΎ (1) Π½Π°Ρ ΠΎΠ΄ΠΈΠΌ L&F Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΡΠ°Π²Π½ΡΠΌ ΠΈΠΌΠ΅Π½ΠΈ, Π²ΡΠ±ΡΠ°Π½Π½ΠΎΠΌΡ Π² ΡΠΏΠΈΡΠΊΠ΅, (2) ΠΌΠ΅Π½ΡΠ΅ΠΌ L&F ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ static ΠΌΠ΅ΡΠΎΠ΄Π° setLookAndFeel ΠΊΠ»Π°ΡΡΠ° UIManager ΠΈ (3) ΠΏΠ΅ΡΠ΅ΡΠΈΡΠΎΠ²ΡΠ²Π°Π΅ΠΌ Π³Π»Π°Π²Π½ΡΠΉ ΡΡΠ΅ΠΉΠΌ Π½Π°ΡΠ΅Π³ΠΎ UI, Π° ΡΠ°ΠΊΠΆΠ΅, ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ Π½Π° Π½Π΅ΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ static ΠΌΠ΅ΡΠΎΠ΄Π° updateComponentTreeUI ΠΊΠ»Π°ΡΡΠ° SwingUtilities. ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΌΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»ΡΠ΅ΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, Π²ΡΠ΅ Π»ΠΈ ΠΏΡΠΎΡΠ»ΠΎ ΡΡΠΏΠ΅ΡΠ½ΠΎ.
Π’Π°ΠΊΠΆΠ΅ Ρ ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ ΡΠΊΠ°Π·Π°ΡΡ ΠΏΠ°ΡΡ ΡΠ»ΠΎΠ² ΠΎΠ± ΠΎΡΠ»Π°Π΄ΠΊΠ΅ GUI-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Java, ΠΈ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ GUI. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Π² Swing Π΅ΡΡΡ ΡΠ°ΠΊΠΎΠ΅ Π²ΠΎΠ»ΡΠ΅Π±Π½ΠΎΠ΅ ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠ΅ ΠΊΠ»Π°Π²ΠΈΡ Ctr + Shift + F1, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ²ΠΎΠ΄ΠΈΡ Π² stdout ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ. ΠΡΠ΅Π½Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Π΅ΡΠ»ΠΈ Ρ ΠΎΡΠ΅ΡΡΡ ΡΠ»ΠΈΠ·Π°ΡΡ UI Ρ ΠΊΠΎΠ½ΠΊΡΡΠ΅Π½ΡΠΎΠ². ΠΠΎ-Π²ΡΠΎΡΡΡ , Π΅ΡΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ Ρ ΠΎΡΠΊΠ΅ΠΉ Ctr + \. ΠΡΠ»ΠΈ Π½Π°ΠΆΠ°ΡΡ Π΅Π³ΠΎ Π² ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Java, Π±ΡΠ΄ΡΡ Π²ΡΠ²Π΅Π΄Π΅Π½Ρ Π²ΡΠ΅ Π½ΠΈΡΠΊΠΈ ΠΈ ΠΈΡ ΡΡΠ΅ΠΊΡΡΠ΅ΠΉΡΡ. Π£Π΄ΠΎΠ±Π½ΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ»ΠΎΠ²ΠΈΠ»ΠΈ Π΄ΡΠ΄Π»ΠΎΠΊ. ΠΠ°ΠΊΠΎΠ½Π΅Ρ, Π²-ΡΡΠ΅ΡΡΠΈΡ , Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ GUI Π±ΡΠ²Π°Π΅Ρ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΡΠ°Π·ΡΠΊΡΠ°ΡΠΈΡΡ ΠΏΠ°Π½Π΅Π»ΠΈ Π² ΡΠ°Π·Π½ΡΠ΅ ΡΠ²Π΅ΡΠ°. Π‘Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊ:
buttonsPanel.setBackground(Color.BLUE);
ΠΠΎΠ΄ ΠΊ ΡΡΠΎΠΉ Π·Π°ΠΌΠ΅ΡΠΊΠ΅ Π²Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ Π·Π΄Π΅ΡΡ. ΠΡΠΈΡΠΌΠΎΡΡΠΈΡΠ΅ΡΡ ΠΊ Π½Π΅ΠΌΡ ΠΏΠΎΠ²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½Π΅Π΅. ΠΠ°ΠΊ ΠΏΠΎ ΠΌΠ½Π΅, ΠΊΠΎΠ΄ ΠΏΠΎΠ»ΡΡΠΈΠ»ΡΡ Π½Π΅ ΡΠ°ΠΊΠΈΠΌ ΡΠΆ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΡΠ»ΠΎΠ²Π½ΡΠΌ ΠΈΠ»ΠΈ ΡΠ°ΠΌ Π² ΡΡΠΈΠ»Π΅ Β«ΡΠ°Π±ΡΠΈΠΊΠ° ΡΠ°Π±ΡΠΈΠΊ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°Π±ΡΠΈΠΊΒ», ΠΊΠ°ΠΊ Π»ΡΠ±ΡΡ Π½Π°Π³ΠΎΠ²Π°ΡΠΈΠ²Π°ΡΡ Π½Π° Java Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ²Π°ΡΠΈΡΠΈ. Π ΠΏΡΠΈΠ½ΡΠΈΠΏΠ΅, Π²ΡΠ΅ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΠΈ ΠΏΠΎΠ½ΡΡΠ½ΠΎ, ΠΈ Π²ΡΠΊΠΈΠ½ΡΡΡ ΠΈΠ· ΠΊΠΎΠ΄Π° ΠΎΡΠΎΠ±ΠΎ Π½Π΅ΡΠ΅Π³ΠΎ. ΠΡ ΠΊΠ°ΠΊ ΡΡΠΈΡΠ°Π΅ΡΠ΅?
ΠΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅: Π’Π°ΠΊΠΆΠ΅ Π²Π°Ρ ΠΌΠΎΠ³ΡΡ Π·Π°ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠΎΠ²Π°ΡΡ ΠΏΠΎΡΡΡ ΠΠ°ΠΊ ΠΏΠΎΡΠ»Π°ΡΡ HTTP-Π·Π°ΠΏΡΠΎΡ ΠΈ ΠΏΡΠΎΠΏΠ°ΡΡΠΈΡΡ ΠΎΡΠ²Π΅Ρ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΠΌΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ Π½Π° Java, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ Π½Π° Scala ΠΈ ΠΠΈΡΠ΅ΠΌ GUI-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Python, GTK ΠΈ Glade.
ΠΠ΅ΡΠΊΠΈ: GUI, Java, ΠΡΠΎΡΡΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΠΎΡΡΡ.
10 Π»ΡΡΡΠΈΡ Java ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² | MnogoBlog
ΠΠ΄ΡΠ°Π²ΡΡΠ²ΡΠΉΡΠ΅, Π΄Π°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π»ΡΡΡΠΈΠ΅ Π½Π° ΡΠ΅Π³ΠΎΠ΄Π½ΡΡΠ½ΠΈΠΉ Π΄Π΅Π½Ρ Java ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠ΅ Π΄Π»Ρ Π²Π΅Π±-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
Π‘ΠΊΠ°ΡΠ°ΡΡ ΠΈΡΡ
ΠΎΠ΄Π½ΠΈΠΊΠΈ Π΄Π»Ρ ΡΡΠ°ΡΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½ΠΈΠΆΠ΅
Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ β ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΎΠ±Π»Π΅Π³ΡΠ°ΡΡΠ΅Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ². Π£ΠΏΠΎΡΡΠ΅Π±Π»ΡΠ΅ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠ»ΠΎΠ²ΠΎ Β«ΠΊΠ°ΡΠΊΠ°ΡΒ». Π‘Π²ΠΎΠ΅Π³ΠΎ ΡΠΎΠ΄Π° ΠΊΠ°ΡΠΊΠ°Ρ. ΠΠ΅Π΄Ρ ΡΠΎΠ³Π»Π°ΡΠΈΡΠ΅ΡΡ, ΡΡΠΎ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΠ»ΠΈ ΡΠ°ΠΉΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠ°ΡΠΊΠ°ΡΠ°, ΡΠ΅ΠΌ Ρ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ Π½ΡΠ»Ρ. Π‘ Π½ΡΠ»Ρ Π±ΡΠ΄Π΅Ρ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΡΠ»ΠΎΠΆΠ½Π΅Π΅, Π΅ΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΡ Π½Π΅ ΠΈΠ΄Π΅Ρ ΠΎ ΡΠΎΠ²ΡΠ΅ΠΌ ΠΏΡΠΎΡΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°Ρ .
Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ Π΄Π»Ρ Π²ΡΠ΅Π³ΠΎ, Π²ΠΊΠ»ΡΡΠ°Ρ: ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π½Π°ΡΡΠΎΠ»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ΅ΡΠ΅Π²ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, REST APIs, ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ Web-ΡΠ΅ΡΠ²ΠΈΡΠΎΠ², ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈΠ³Ρ ΠΈ Π΄Ρ.
1. Grails
Π‘Π°ΠΉΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°: βgrails.orgβ
Grails β ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠ°ΡΠΊΠ°Ρ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ Π½Π° ΡΠΊΡΠΈΠΏΡΠΎΠ²ΠΎΠΌ ΡΠ·ΡΠΊΠ΅ Groovy, ΠΊΠΎΡΠΎΡΡΠΉ Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° Java.
Grails ΡΠ΄Π΅Π»Π°Π½ ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Java, ΠΈ ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π΅Π³ΠΎ ΠΎΡΠ΅Π½Ρ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Java Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ, ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°ΠΌΠΈ ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΉ Π±Π°Π·ΠΎΠΉ ΠΊΠΎΠ΄Π°.
Grails ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π΅ΡΡΡ ΡΠ°ΠΊΠΈΠΌΠΈ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌΠΈ ΡΡΠ΅Π΄Π°ΠΌΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠ°ΠΊ Eclipse, Netbeans, Intellij.
ΠΠΎΠ»Π΅Π·Π½ΠΎΠ΅:
ΠΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ²ΠΎΡ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΏΡΠΎΡΡΠΎΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ Grails Π² IDE NetBeans Π½Π° ΡΡΡΡΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅:
βnetbeans.org/kb/docs/web/grails-quickstart_ru.htmlβ
2. Spring
Π‘Π°ΠΉΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°: βspring.ioβ
Spring Framework (ΠΈΠ»ΠΈ ΠΊΠΎΡΠΎΡΠΊΠΎ Spring) β ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π΄Π»Ρ Java-ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ.
Spring, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ ΠΊΠ°ΠΊ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ, Π½ΡΠΆΠ½ΡΡ Π΄Π»Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ»ΠΎΠΆΠ½ΡΡ Π±ΠΈΠ·Π½Π΅Ρ-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π²Π½Π΅ ΡΡΠΆΠ΅Π»ΠΎΠ²Π΅ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ.
Spring ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ ΠΊΠ°ΠΊ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ ΠΌΠ΅Π½ΡΡΠΈΡ
ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² ΠΈΠ»ΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² Π²ΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ΅.
ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΡΠΈΡ
ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ Π΄ΡΡΠ³ ΠΎΡ Π΄ΡΡΠ³Π°, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ Π±ΠΎΠ»ΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ ΠΏΡΠΈ ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎΠΌ ΠΈΡ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ.
ΠΡΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ Π΄Π΅Π»ΡΡΡΡ Π½Π° ΡΡΡΡΠΊΡΡΡΠ½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΈΠΏΠΎΠ²ΡΡ
ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΡΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ:
β Inversion of Control-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ: ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΆΠΈΠ·Π½Π΅Π½Π½ΡΠΌ ΡΠΈΠΊΠ»ΠΎΠΌ Java-ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ².
β Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π°ΡΠΏΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
β Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π΄Π°Π½Π½ΡΠΌ.
β Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΠ°Π½Π·Π°ΠΊΡΠΈΡΠΌΠΈ.
β Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ MVC: ΠΊΠ°ΡΠΊΠ°Ρ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π° HTTP ΠΈ ΡΠ΅ΡΠ²Π»Π΅ΡΠ°Ρ , ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Π΄Π»Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ.
β Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΡΠ΄Π°Π»ΡΠ½Π½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ°.
β Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ.
β Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΡΠ΄Π°Π»ΡΠ½Π½ΠΎΠ³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ.
β Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ.
β Π’Π΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅: ΠΊΠ°ΡΠΊΠ°Ρ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΠΉ ΠΊΠ»Π°ΡΡΡ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΡ ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠ΅ΡΡΠΎΠ².
Spring ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ MVC-ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
3. Vaadin
Π‘Π°ΠΉΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°: βvaadin.comβ
Vaadin β ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΠΌΡΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΏΡΠΎΡΡΡΡ ΡΠ°ΠΉΡΠΎΠ², ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΠΉ ΠΎΠ΄Π½ΠΎΠΈΠΌΡΠ½Π½ΠΎΠΉ ΡΠΈΠ½ΡΠΊΠΎΠΉ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ.
ΠΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π²Π΅Π΄Π΅ΡΡΡ Π½Π° Java, Π½ΠΎ Java-ΠΊΠΎΠ΄ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅, Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΠ΅ ΠΆΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΡΠΈΡΡΡΠΉ JavaScript.
ΠΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ Π΄Π²Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ: Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΈ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° (Π±ΡΠ°ΡΠ·Π΅ΡΠ°).
ΠΠ° ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΌ ΡΠ°ΠΉΡΠ΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΡ:
βdemo.vaadin.com/sampler/β
4. Play Framework
Π‘Π°ΠΉΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°: βplayframework.comβ
Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Play Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π»Π΅Π³ΠΊΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Java ΠΈ Scala. Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΠΏΡΠΎΡΡ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ.
Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Play ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π² ΡΡΠ΅Π΄Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Eclipse and IntelliJ IDEA.
5. Spark
Π‘Π°ΠΉΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°: βsparkjava.comβ
Spark β ΠΌΠΈΠΊΡΠΎ-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Kotlin ΠΈ Java 8 Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΡΠΈΠ»ΠΈΡΠΌΠΈ.
Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Spark ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΡΠΈ REST APIs ΠΈ ΠΏΡΠΎΡΡΡΡ Π²Π΅Π± ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ², Π° ΡΠ°ΠΊΠΆΠ΅ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ°ΠΉΡΠΎΠ².
6. Struts
Π‘Π°ΠΉΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°: βstruts.apache.org/index.htmlβ
Struts β ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Java Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Struts ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Ρ ΠΏΠ»Π°Π³ΠΈΠ½Π°ΠΌΠΈ Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ REST, AJAX ΠΈ JSON.
ΠΠ°Π½Π½ΡΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π±ΡΠ» Π½Π° ΠΏΠΈΠΊΠ΅ ΡΠ²ΠΎΠ΅ΠΉ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΠΈ Π΄Π΅ΡΡΡΡ Π»Π΅Ρ Π½Π°Π·Π°Π΄ β ΡΠΎΠ³Π΄Π° ΠΎΠ½ Π±ΡΠ» Π»ΠΈΠ΄Π΅ΡΠΎΠΌ Π² Π²Π΅Π±-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Π½Π° Java β Π½ΠΎ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΡΠ°ΠΊΠΈΠ΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ ΠΊΠ°ΠΊ Spring, Grails, Vaadin ΠΈ Π΄Ρ. ΠΎΡΠΎΠ±ΡΠ°Π»ΠΈ Π±ΠΎΠ»ΡΡΡΡ Π΄ΠΎΠ»Ρ Π΅Π³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ.
ΠΠ΄Π½ΠΎΠΊΠΎ, Π½Π΅Π΄Π°Π²Π½ΠΎ Π²ΡΡΠ»ΠΎ ΡΠ΄Π°ΡΠ½ΠΎΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Struts ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π²Π΅Π±-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΠ½ΠΎΠ²Π° ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΡΡ Π½Π° Π½Π΅Π³ΠΎ.
7. Netty
Netty β ΡΡΠΎ Π°ΡΠΈΠ½Ρ
ΡΠΎΠ½Π½ΡΠΉ ΡΠΎΠ±ΡΡΠΈΠΉΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ
Π΄Π»Ρ Π±ΡΡΡΡΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π²ΡΡΠΎΠΊΠΎΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΡ
ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠ² ΠΊΠ»ΠΈΠ΅Π½Ρ-ΡΠ΅ΡΠ²Π΅Ρ.
Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Netty Ρ ΠΊΠ°ΠΆΠ΄ΡΠΌ Π³ΠΎΠ΄ΠΎΠΌ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°Π±ΠΈΡΠ°Π΅Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΡ. Π 2011 Π³ΠΎΠ΄Ρ ΠΏΡΠΎΠ΅ΠΊΡ Π±ΡΠ» ΡΠ΄ΠΎΡΡΠΎΠ΅Π½ Π½Π°Π³ΡΠ°Π΄Ρ Dukeβs Choice Π·Π° ΠΈΠ½Π½ΠΎΠ²Π°ΡΠΈΠΈ Π² ΡΠ΅ΡΠ΅Π²ΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ.
Π‘Π΅Π³ΠΎΠ΄Π½Ρ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π² ΡΠ²ΠΎΠΈΡ
ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°Ρ
ΡΠ°ΠΊΠΈΠ΅ Π³ΠΈΠ³Π°Π½ΡΡ, ΠΊΠ°ΠΊ Apple, Twitter, Facebook, Google ΠΈ Instagram. ΠΠ° Π±Π°Π·Π΅ Netty ΠΏΠΎΡΡΡΠΎΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ: Infinispan, HornetQ, Vert.x, Apache Cassandra ΠΈ Elasticsearch.
8. JavaFX (Π½Π΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ)
ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ JavaFX: βoracle.com/technetwork/java/javase/overview/javafx-overview-2158620.htmlβ
JavaFX β ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Java Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ Π½Π°ΡΡΡΠ΅Π½Π½ΡΠΌ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ. ΠΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½Π°ΡΡΠΎΠ»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΈΠ·-ΠΏΠΎΠ΄ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ, ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ (RIA), ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ , ΠΈ Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π°Ρ . JavaFX ΠΏΡΠΈΠ·Π²Π°Π½Π° Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π²ΡΡΡΡΡ ΡΠ°Π½Π΅Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Swing. ΠΠ»Π°ΡΡΠΎΡΠΌΠ° JavaFX ΠΊΠΎΠ½ΠΊΡΡΠΈΡΡΠ΅Ρ Ρ Microsoft Silverlight, Adobe Flash ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ.
JavaFX Π²ΠΊΠ»ΡΡΠ΅Π½Π° Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ jdk ΠΈ jre. ΠΡΠΎΡΡΠΎ ΡΠΊΠ°ΡΠ°ΠΉΡΠ΅ jdk ΠΈΠ»ΠΈ jre, ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ javafx.
9. LibGDX
Π‘Π°ΠΉΡ ΡΡΠ΅ΠΉΠ²ΠΎΡΠΊΠ°: Β«libgdx.badlogicgames.comΒ»
ΠΠ± ΡΡΠΎΠΌ ΡΡΠ΅ΠΉΠ²ΠΎΡΠΊΠ΅ Ρ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠ°ΡΠ΅ΠΉ Π² ΡΡΠ±ΡΠΈΠΊΠ΅ β Android ΠΈ LibGDX.
libGDX β Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠΉ ΠΊΡΠΎΡΡΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΡΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ³Ρ ΠΈ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π° ΡΠ·ΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Java Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΌΠΈ Π½Π° C ΠΈ C++ Π΄Π»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Windows, Linux, Mac OS X, Android, iOS ΠΈ HTML5 ΠΊΠ°ΠΊ ΡΠ΅Π»Π΅Π²ΡΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ.
Π’ΠΎ Π΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ libGDX ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ HTML5 ΡΡΡΠ°Π½ΠΈΡΠΊΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ Android, iOS ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ Windows, Linux, Mac OS X!
10. JSF β Java Server Faces
Π‘Π°ΠΉΡ: βjavaee.github.io/javaserverfaces-spec/β
JSF β Java Server Faces ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ Π² Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ .
ΠΠ½ ΡΠ»ΡΠΆΠΈΡ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΎΠ±Π»Π΅Π³ΡΠ°ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² Π΄Π»Ρ Java EE-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΏΡΠΎΡΠΈΡ MVC-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ, ΠΏΠΎΠ΄Ρ ΠΎΠ΄ JSF ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°Π΅ΡΡΡ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ². Π‘ΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π·Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ Π½ΠΎΠ²ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ ΠΈ Π·Π°ΡΠ΅ΠΌ Π²ΠΎΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΡΡΡ, Π΅ΡΠ»ΠΈ Π·Π°ΠΏΡΠΎΡ ΠΏΠΎΠ²ΡΠΎΡΡΠ΅ΡΡΡ. ΠΠ»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ JSP, Facelets, Π½ΠΎ JSF ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΡΠΏΠΎΡΠΎΠ±ΠΈΡΡ ΠΈ ΠΏΠΎΠ΄ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ XUL.
11. GWT
Π‘Π°ΠΉΡ: βgwtproject.orgβ
Google Web Toolkit (GWT) β ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΠΉ Java-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π΅Π±-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Ajax-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ³ΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ β ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ Java -> JavaScript, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΠΏΠΎΡΡΠΈ Π²ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Java ΠΈ Π»ΠΈΡΡ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ ΡΡΠ°ΠΏΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ JavaScript, HTML ΠΈ CSS. ΠΡΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ Apache Π²Π΅ΡΡΠΈΠΈ 2.0. GWT Π΄Π΅Π»Π°Π΅Ρ Π°ΠΊΡΠ΅Π½Ρ Π½Π° ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΊΡΠΎΡΡβΠ±ΡΠ°ΡΠ·Π΅ΡΠ½ΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ.
10 Π»ΡΡΡΠΈΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² Java Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ²
ΠΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΡΠ°ΡΡΠΈ ΠΠ»Π΅ΠΎΡΠ°ΡΠ° ΠΡΠ»ΠΎΠ½Π³ΠΎ Β«10 Best Java Frameworks For Software DevelopersΒ».
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² Java Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠΎΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π±ΡΡΡΡΠΎ, Π»Π΅Π³ΠΊΠΎ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ. ΠΠ½ΠΈ ΠΈΠ·Π±Π°Π²ΡΡ Π²Π°Ρ ΠΎΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ Ρ Π½ΡΠ»Ρ. Π’Π°ΠΊΠΆΠ΅ ΠΎΠ½ΠΈ Π΄Π°Π΄ΡΡ Π²Π°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΆΠ΅ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅ΠΌ ΠΎ Π»ΡΡΡΠΈΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°Ρ Java, ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΡΠΎΡΡΠ°.
1. Spring Framework
Spring ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΡΠ°ΠΌΡΠΌ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°ΠΌ Java. ΠΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Java-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠ²ΠΎΠΉ Π²ΡΠ±ΠΎΡ ΠΈΠΌΠ΅Π½Π½ΠΎ Π½Π° Π½Π΅ΠΌ. ΠΠ΄Π½Π° ΠΈΠ· ΠΏΡΠΈΡΠΈΠ½ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ Π»ΡΠ±Π²ΠΈ β Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ dependency injection.
Spring ΡΡΠΎ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π½Π° ΡΠ·ΡΠΊΠ΅ Java. ΠΠ½ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΡΡΡ Π½Π° Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Spring ΠΎΡΠ΅Π½Ρ Π±Π»ΠΈΠ·ΠΎΠΊ ΠΊ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΡ Spring Boot.
2. PrimeFaces
PrimeFaces ΡΡΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°ΠΌΡΡ Π»Π΅Π³ΠΊΠΎΠ²Π΅ΡΠ½ΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² Java. ΠΡΠΎ ΠΏΡΠΎΡΡΠΎΠΉ .jar-ΡΠ°ΠΉΠ». ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΡΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅Ρ, PriemFaces ΡΠ»ΡΠΆΠΈΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π΄Π»Ρ JavaServer Faces ΠΈ Java EE.
PrimeFaces ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡ Π²Π°ΡΡΠ°ΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ 100 ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ. Π‘ΡΠ΅Π΄ΠΈ Π΅Π³ΠΎ ΠΊΠ»ΡΡΠ΅Π²ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈ touch mobile kit.
3. Blade
Blade ΡΡΠΎ Π»Π΅Π³ΠΊΠΎΠ²Π΅ΡΠ½ΡΠΉ MVC-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Java 8. ΠΠΎΠ³Π΄Π° ΠΌΡ Π³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ Π»Π΅Π³ΠΊΠΎΠ²Π΅ΡΠ½ΠΎΡΡΠΈ Blade, ΡΠΎ ΠΈΠΌΠ΅Π΅ΠΌ Π² Π²ΠΈΠ΄Ρ ΡΠ°Π·ΠΌΠ΅Ρ Π΅Π³ΠΎ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΠΏΡΠ΅Π²ΡΡΠ°Π΅Ρ 500KB.
ΠΡΠΎ ΠΏΡΠΎΡΡΠΎΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Ρ ΡΠΎΡΡΠΈΠ½Π³ΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π² ΡΡΠΈΠ»Π΅ RESTful. ΠΠ½ ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΈΠΌ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°ΠΌ Java, Π² ΠΊΠΎΡΠΎΡΡΡ Π½Π΅Ρ invasive interceptors.
Π§ΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Blade, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠ±ΡΡΠ½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Maven. Blade ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ Π΅ΡΡΡ Π² Java 9. Π’Π°ΠΊΠΆΠ΅ ΠΎΠ½ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π΅Π±-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Java.
4. Dropwizard
Dropwizard ΡΡΠΎ ΠΌΠΎΡΠ½ΡΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Java, ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ RESTful ΡΠ΅ΡΠ²ΠΈΡΠΎΠ². ΠΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Java. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ Dropwizard Π²Ρ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Π΄ΠΎΡΡΡΠΏ ΠΊΠΎ Π²ΡΠ΅ΠΌ ΠΌΠΎΡΠ½ΡΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌ Java.
Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Dropwizard ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ, Π² ΡΠΈΡΠ»Π΅ ΠΊΠΎΡΠΎΡΡΡ Google Guava, Jetty server, Hibernate Validator, Logback, Joda Time. Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Jackson Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ JSON-ΡΠ°ΠΉΠ»ΠΎΠ². JSON Π΄Π°ΡΡ Π²Π°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ Π²ΡΠ΅ΠΌΡ Π½Π° Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ ΠΊΠΎΠ΄Π° Π΄Π»Ρ Π΅Π΄ΠΈΠ½ΠΈΡ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΏΡΠ°Π²ΠΈΡΡ Π²ΡΠ΅ ΡΠ²ΠΎΠΈ ΡΠΈΠ»Ρ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΡΠΎΡΠ΅ Π³ΠΎΠ²ΠΎΡΡ, ΡΡΠΎΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π²Π°ΠΌ Π΄ΠΎΡΡΠΈΠ³Π½ΡΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ.
Dropwizard ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ, Π΄ΡΡΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΉ Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ , β Ρ Π΅Π΅ ΠΏΠΎΠΌΠΎΡΡΡ Π²Π°ΠΌ Π±ΡΠ΄Π΅Ρ Π»Π΅Π³ΠΊΠΎ Π½Π°ΡΠ°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΡΠΈΠΌ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠΌ.
5. Google Web Toolkit (GWT)
ΠΠ°ΠΊ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ· Π½Π°Π·Π²Π°Π½ΠΈΡ, Google Web Toolkit ΡΡΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Java, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ Google. ΠΠ½ Π±ΡΠ» ΡΠΎΠ·Π΄Π°Π½, ΡΡΠΎΠ±Ρ ΠΏΠΎΠΌΠΎΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ, ΠΆΠ΅Π»Π°ΡΡΠΈΠΌ ΡΡΡΠΎΠΈΡΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Java. ΠΡΠΎΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ Π½Π° Java ΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π΅Π³ΠΎ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ ΠΊΠ°ΠΊ JavaScript.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡ Google, GWT ΠΈΠΌΠ΅Π΅Ρ Ρ ΠΎΡΠΎΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΎΠΏΡΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ². ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΠ³ΠΎ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π½Π΅Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΠΏΡΡΠ° Π² ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΡΠΎΠ½ΡΠ΅Π½Π΄Π°, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ JavaScript.
ΠΡΠΎΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΠΈΠΌΠ΅Π΅Ρ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π», Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Π½Π΅ΠΌ Π΅ΡΡΡ UI abstraction, ΠΌΠ΅ΠΆΠ±ΡΠ°ΡΠ·Π΅ΡΠ½Π°Ρ ΠΏΠΎΡΡΠΈΡΡΠ΅ΠΌΠΎΡΡΡ, ΠΈΠ½ΡΠ΅ΡΠ½Π°ΡΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ booking.
6. JavaServer Faces
Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ JavaServer Faces (JSF) Π½ΠΎΠ²ΡΠΌ Π½Π΅ Π½Π°Π·ΠΎΠ²Π΅ΡΡ. ΠΠ½ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΆΠ΅ 14 Π»Π΅Ρ. ΠΡΠΎ MVC-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ, ΡΠΏΡΠΎΡΠ°ΡΡΠΈΠΉ Π·Π°Π΄Π°ΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π΄Π»Ρ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΠΈΠΌΠ΅Π΅Ρ ΠΎΡΠΎΠ±ΡΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π». Π‘Π°ΠΌΠΎΠ΅ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎΠ΅, ΡΡΠΎ UI-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΎΠ³ΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°, ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡ.
ΠΠ»Ρ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² JavaServer Faces ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Facelets.
7. JHipster
Jhipster ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈΡ ΠΊ ΡΠΈΡΠ»Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² Java. ΠΠ½ Π±ΡΠ» Π²ΡΠΏΡΡΠ΅Π½ Π² 2013 Π³ΠΎΠ΄Ρ. Jhipster ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ Spring Boot, Angular ΠΈ React Π² ΠΎΠ΄ΠΈΠ½ Π±ΠΎΠ»ΡΡΠΎΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ. Π‘ Π½ΠΈΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Ρ Π»Π΅Π³ΠΊΠΎΡΡΡΡ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΡΠ·ΡΠΊΠ΅ Java.
Spring Boot, Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ Π² ΡΡΠΎΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ, ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π²Π°ΠΌ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Spring. ΠΡΠΎΠΌΠ΅ Angular ΠΈ React, JHipster ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Bootstrap. ΠΡΠΎΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ Π²ΠΈΠ΄Π°ΠΌΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ: ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ½ΠΎΠΉ ΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠΉ. Π ΡΠ»ΡΡΠ°Π΅ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ½ΠΎΠΉ ΡΡΠΎΠ½ΡΠ΅Π½Π΄ ΠΈ Π±ΡΠΊΠ΅Π½Π΄ Π²ΡΡΡΠΎΠ΅Π½Ρ Π² ΠΎΠ΄Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π° Π² ΡΠ»ΡΡΠ°Π΅ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠΉ ΠΎΠ½ΠΈ ΡΠ°Π·Π΄Π΅Π»Π΅Π½Ρ.
8. Spark Framework
Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Spark ΠΈΠ΄Π΅Π°Π»Π΅Π½ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ², ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ·ΡΠΊΠ° Java. Π‘ Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π±ΡΡΡΡΠΎ ΠΈ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΡΡΡΠΎΠΈΡΡ Π±ΡΠΊΠ΅Π½Π΄ Π΄Π»Ρ ΡΠ²ΠΎΠ΅Π³ΠΎ ΡΠ°ΠΉΡΠ°. Spark ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Java8 ΠΈ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ Π²ΡΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ API.
9. MyBatis
MyBatis ΡΡΠΎ mapper-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° Java. ΠΠ½ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ²ΡΠ·ΠΈ Π²Π°ΡΠ΅Π³ΠΎ Java-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ SQL. ΠΡΠΎΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ ΠΊΠ°ΠΊ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ΅ ΠΠ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ.
ΠΠ±ΡΡΠ½ΠΎ Π΄Π»Ρ ΠΏΠΎΠ΄ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊ ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΠΎΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ Java Database Connectivity API. MyBatis ΡΠΏΡΠΎΡΠ°Π΅Ρ ΠΏΡΠΎΡΠ΅ΡΡ. ΠΠ½ Π΄Π°Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ SQL-ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π»ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π°.
MyBatis ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°Π²Π½ΠΈΡΡ Ρ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠΌ Hibernate. ΠΠ½ΠΈ ΠΎΠ±Π° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ Π½Π΅ΡΡΠΎ Π²ΡΠΎΠ΄Π΅ ΠΌΠΎΡΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ . ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½Π°Ρ ΡΠ°Π·Π½ΠΈΡΠ° Π² ΡΠΎΠΌ ΡΡΠΎ MyBatis Π½Π΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΡ Java Π² ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ .
10. Play Framework
Play ΡΡΠΎ Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ Π»Π΅Π³ΠΊΠΎΠ²Π΅ΡΠ½ΡΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Java, ΠΊΠΎΡΠΎΡΡΠΉ Π½ΡΠ°Π²ΠΈΡΡΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ². ΠΠ½ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° Scala.
ΠΡΠΎΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΌΠΎΠ³ΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΠΊΠΎΠ΄Π΅ Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ.
Π ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ΅ Play Π΅ΡΡΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠ΅ APIs, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π±Π΅Π· Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ΅ΡΡΡΡΠΎΠ². ΠΡΠΎΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΠ΅Π²ΠΎΡΡ ΠΎΠ΄Π½ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΏΠ°ΡΡΠ΅ΡΠ½ΠΎΠ² ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ².
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠ°ΠΊΠΎΠΉ ΠΆΠ΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Java Π²ΡΠ±ΡΠ°ΡΡ? ΠΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎΠ³ΠΎ ΠΎΡΠ²Π΅ΡΠ° Π½Π° ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ Π½Π΅Ρ. ΠΡΠ΅, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ, β Π±ΡΡΡ ΠΎΡΠΊΡΡΡΡΠΌ Π΄Π»Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΈ ΠΈΠ·ΡΡΠΈΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠ°Π·Π½ΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°Ρ . Π‘Π΄Π΅Π»Π°Π² ΡΡΠΎ, Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π΄Π»Ρ ΡΠ²ΠΎΠΈΡ Π½ΡΠΆΠ΄.
Π’ΠΎΠΏ-10 ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π°Β Java
Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΡΡΠΎΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π±ΡΡΡΡΠΎ, ΠΏΡΠΎΡΡΠΎ ΠΈΒ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ, Π°Β ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π³ΠΎΡΠΎΠ²ΡΠ΅ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ ΠΊΠΎΠ΄Π°, ΠΈΠ·Π±Π°Π²Π»ΡΡ ΠΎΡΒ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΈΡΠ°ΡΡ Π΅Π³ΠΎ ΡΒ Π½ΡΠ»Ρ. ΠΡ Β Π²ΡΠ±ΠΎΡ ΠΈΠ·Β Π²ΡΠ΅Π³ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΎΠ±ΡΠ°Π·ΠΈΡ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡΒ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΠ΅ΠΉ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°. Π Π΅ΡΡΡΡ Technotification ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΠ» ΠΏΠΎΠ΄Π±ΠΎΡΠΊΡ ΠΈΠ·Β 10 ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² Π΄Π»Ρ Java-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² ΠΈΒ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ².
SpringΒ β ΠΎΠ΄ΠΈΠ½ ΠΈΠ·Β ΡΠ°ΠΌΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ Java-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ². ΠΠ³ΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°Π΅Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π½Π°Β ΡΡΠΎΠΌ ΡΠ·ΡΠΊΠ΅, Π²Β ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ.
Spring ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΒ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Π½Π°Β Π±Π°Π·Π΅ Java. ΠΠ½Β ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΡΡΡ Π½Π°Β Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ»ΠΈΠ·ΠΊΠΎ ΡΠ²ΡΠ·Π°Π½ ΡΒ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠΌ Spring Boot.
PrimeFaces ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊΒ Π»ΡΡΡΠΈΠΌ Π»ΡΠ³ΠΊΠΈΠΌ Java-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠΌ. ΠΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°ΡΠ°ΡΡ Π²Β ΠΎΠ΄Π½ΠΎΠΌ .jar-ΡΠ°ΠΉΠ»Π΅. PriemFaces ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π»Π΅Ρ ΠΈΒ ΡΠ»ΡΠΆΠΈΡ UI-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠΌ Π΄Π»Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΉ JavaServer Faces ΠΈΒ JavaΒ EE. Π’Π°ΠΊΠΆΠ΅ ΠΎΠ½Β Π½Π°ΡΡΠΈΡΡΠ²Π°Π΅Ρ Π±ΠΎΠ»Π΅Π΅ 100 ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΡΡΠ΅Π΄ΠΈ ΠΊΠ»ΡΡΠ΅Π²ΡΡ Β β Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ Π½Π°Β ΡΡΠΎΡΠΎΠ½Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈΒ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ Π΄Π»Ρ ΡΠ΅Π½ΡΠΎΡΠ½ΡΡ ΡΠΌΠ°ΡΡΡΠΎΠ½ΠΎΠ².
BladeΒ β ΡΡΠΎ Π»Π΅Π³ΠΊΠΎΠ²Π΅ΡΠ½ΡΠΉ MVC-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π½Π°Β Π±Π°Π·Π΅ JavaΒ 8. ΠΠ½Β ΠΏΡΠΎΡΡ ΠΈΒ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΎΡΠ° Π²Β ΡΡΠΈΠ»Π΅ RESTful. Π’Π°ΠΊΠΆΠ΅ ΠΎΠ½Β ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊΒ ΡΠ΅ΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΈΠΌ Java-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°ΠΌ, Π²Β ΠΊΠΎΡΠΎΡΡΡ ΠΎΡΡΡΡΡΡΠ²ΡΡΡ Π½Π°Π²ΡΠ·ΡΠΈΠ²ΡΠ΅ ΠΏΠ΅ΡΠ΅Ρ Π²Π°ΡΡΠΈΠΊΠΈ. ΠΠΎΠ΄ Β«Π»Π΅Π³ΠΊΠΎΠ²Π΅ΡΠ½ΠΎΡΡΡΡΒ» ΠΈΠΌΠ΅Π΅ΡΡΡ Π²Β Π²ΠΈΠ΄Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΠΎΒ ΠΎΠ±ΡΡΠΌΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅Β ΠΏΡΠ΅Π²ΡΡΠ°Π΅Ρ 500 ΠΠ±.
ΠΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Blade ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΈΠΏΠΈΡΠ½ΡΠΉ Maven-ΠΏΡΠΎΠ΅ΠΊΡ. Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΠΎΡΡΡ Π²Β Java 9, Π°Β ΡΠ°ΠΊΠΆΠ΅ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π²Π΅Π±-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Java.
DropwizardΒ β ΠΌΠΎΡΠ½ΡΠΉ Java-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ, Π²ΡΡΠΎΠΊΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΠΎΠ΄ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ RESTful-ΡΠ΅ΡΠ²ΠΈΡΠΎΠ². ΠΠ½Β ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ΄Π΅Π°Π»Π΅Π½ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π½Π°Β ΡΡΠΎΠΌ ΡΠ·ΡΠΊΠ΅ ΠΈΒ Π΄Π°ΡΡ Π»ΡΠ³ΠΊΠΈΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊΠΎΒ Π²ΡΠ΅ΠΌ ΠΌΠΎΡΠ½ΡΠΌ Java-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Google Guava, Jetty server, Hibernate Validator, Logback, Joda Time, Π°Β ΡΠ°ΠΊΠΆΠ΅ Jackson Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ JSON-ΡΠ°ΠΉΠ»ΠΎΠ². JSON ΠΈΠ·Π±Π°Π²Π»ΡΠ΅Ρ ΠΎΡΒ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ Π΄Π»Ρ ΠΌΠ΅ΡΡΠΈΠΊ ΠΈΒ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ Π½Π°ΠΏΡΠ°Π²ΠΈΡΡ ΡΠΈΠ»Ρ Π½Π°Β ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Dropwizard ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π΄ΠΎΡΡΠΈΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΠΏΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅. ΠΡΠΈΡΡΠ½ΡΠΉ Π±ΠΎΠ½ΡΡΒ β ΠΏΠΎΠ½ΡΡΠ½Π°Ρ Π΄Π»Ρ Π½ΠΎΠ²ΠΈΡΠΊΠΎΠ² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ.
Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Google Web Toolkit Π²ΡΠΏΡΡΠ΅Π½ Google ΡΒ ΡΠ΅Π»ΡΡ ΠΏΠΎΠΌΠΎΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Π²Β Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π°Β Java. ΠΠ½Β Π΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΈΡΠ°ΡΡ Java-ΠΊΠΎΠ΄ ΠΈΒ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π²Β JavaScript Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π²Β Π±ΡΠ°ΡΠ·Π΅ΡΠ°Ρ .
GWT ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΎΠΏΡΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² Google. Π‘Β ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΎΠ³ΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΡΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½Π΅Β ΠΈΠΌΠ΅Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΠΏΡΡΠ° ΡΒ ΡΠ·ΡΠΊΠ°ΠΌΠΈ ΡΡΠΎΠ½ΡΠ΅Π½Π΄-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ JavaScript.
Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΡΠ΄ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ UI, ΠΊΡΠΎΡΡβΠ±ΡΠ°ΡΠ·Π΅ΡΠ½Π°Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ ΠΈΒ ΠΈΠ½ΡΠ΅ΡΠ½Π°ΡΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΡ.
MVC-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ JavaServer Faces ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ 14 Π»Π΅Ρ Π½Π°Π·Π°Π΄. ΠΠ½Β ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² Π΄Π»Ρ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π‘Π°ΠΌΠ°Ρ Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½Π°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ ΡΡΠΎΠ³ΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Π²Β ΡΠΎΠΌ, ΡΡΠΎ ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ Π²Β Π½ΡΠΌ UI-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ Π²Π΅Π±-ΡΡΡΠ°Π½ΠΈΡ. ΠΒ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² Π²Β JSF ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Facelets.
JHipsterΒ β ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠΎΠ»ΠΎΠ΄ΠΎΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ, Π²ΡΡΠ΅Π΄ΡΠΈΠΉ Π²Β 2013 Π³ΠΎΠ΄Ρ. ΠΠ½Β ΡΠΎΡΠ΅ΡΠ°Π΅Ρ Spring Boot, Angular ΠΈΒ React Π²Β ΠΎΠ΄Π½ΠΎΠΌ Π±ΠΎΠ»ΡΡΠΎΠΌ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ΅. Π‘Β ΠΏΠΎΠΌΠΎΡΡΡ Π½Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΡΡΡΠΎΠΈΡΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π°Β Java.
ΠΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Spring Boot ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π°Β Π±Π°Π·Π΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Spring. ΠΠΎΠΌΠΈΠΌΠΎ Angular ΠΈΒ React, JHipster ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Bootstrap. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, JHipster ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄Π²Π° Π²ΠΈΠ΄Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡ: ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ½ΡΡ ΠΈΠ»ΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½ΡΡ. ΠΒ ΠΏΠ΅ΡΠ²ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΡΡΠΎΠ½ΡΠ΅Π½Π΄ ΠΈΒ Π±ΡΠΊΠ΅Π½Π΄ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ Π²Β Π΅Π΄ΠΈΠ½ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π²ΠΎΒ Π²ΡΠΎΡΠΎΠΌΒ β ΡΠ°Π·Π΄Π΅Π»ΡΠ½ΠΎ.
SparkΒ β ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ Π²ΡΠ±ΠΎΡ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ², ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΠΈΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π°Β Java. ΠΒ Π½ΡΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΡΡΡΠΎ ΠΈΒ Π±Π΅Π· ΡΡΠΈΠ»ΠΈΠΉ ΡΡΡΠΎΠΈΡΡ Π±ΡΠΊΠ΅Π½Π΄ ΡΠ°ΠΉΡΠΎΠ². Spark ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Java 8 ΠΈΒ ΠΈΠΌΠ΅Π΅Ρ Π²ΡΡΠ°Π·ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ API.
MyBatis ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π΄Π»Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΌΠ°ΠΏΠΏΠΈΠ½Π³Π° ΠΌΠ΅ΠΆΠ΄Ρ Java-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ ΠΈΒ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ Β SQL. ΠΠ±ΡΡΠ½ΠΎ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊΒ ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΠΎΠΉ ΠΠΒ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ API Java Database Connectivity. ΠΠ½Β ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΊΡΡΠΏΠ½ΡΠ΅ SQL-ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π°Β Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠΎΡΠ΅ΠΊ ΠΊΠΎΠ΄Π°.
MyBatis ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ ΡΒ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠΌ Hibernate, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ±Π° ΡΠ²Π»ΡΡΡΡΡ ΠΏΠΎΡΡΠ΅Π΄Π½ΠΈΠΊΠ°ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΒ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ . ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ Π²Β ΡΠΎΠΌ, ΡΡΠΎ MyBatis Π½Π΅Β Π΄Π΅Π»Π°Π΅Ρ ΠΌΠ°ΠΏΠΏΠΈΠ½Π³ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Java Π²Β ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΡΡ ΠΠ.
PlayΒ β Π΅ΡΡ ΠΎΠ΄ΠΈΠ½ Π»ΡΠ³ΠΊΠΈΠΉ Java-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ, Π·Π°Π²ΠΎΠ΅Π²Π°Π²ΡΠΈΠΉ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ². ΠΠ½Β ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΡΠ΅ΡΠ΅Π· ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π²Β ΠΊΠΎΠ΄Π΅ Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π·Π°Π½ΠΎΠ²ΠΎ ΡΠ°Π·Π²ΡΡΡΡΠ²Π°ΡΡ ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ.
Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΠΈΠΌΠ΅Π΅Ρ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΠ΅ API, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΎΠ±Ρ ΠΎΠ΄ΡΡΡ Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ΅ΡΡΡΡΠΎΠ². Play ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½ΡΠ΅ ΠΏΠ°ΡΡΠ΅ΡΠ½Ρ.
UI Framework Paradigms — ru.java β LiveJournal
Π₯ΠΎΡΠ΅ΡΡΡ Π² ΠΎΡΠ΅ΡΠ΅Π΄Π½ΠΎΠΉ ΡΠ°Π· ΠΏΠΎΠ΄Π½ΡΡΡ ΡΠ΅ΠΌΡ Π²ΡΠ±ΠΎΡΠ° Java UI Framework, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΠ΅ΠΏΠ΅ΡΡ β Π² Π±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΡΠ°Π»ΡΠ½ΠΎΠΌ ΡΠ°Π·ΡΠ΅Π·Π΅ β ΠΏΠΎ ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΠ΅ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅Π½ΡΠ°. ΠΡΠ»ΠΈ Ρ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΡΠΏΡΡΡΠΈΠ», ΡΠΎ ΡΠ΅ΠΉΡΠ°Ρ ΠΌΠΎΠΆΠ½ΠΎ Π²ΡΠ΄Π΅Π»ΠΈΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ (Π½Π°Π·Π²Π°Π½ΠΈΡ ΠΏΡΠΈΠ΄ΡΠΌΠ°Π» ΡΠ°ΠΌ,Β Π½Π΅ ΠΎΠ±Π΅ΡΡΡΠ΄ΡΡΠ΅):
- ΠΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ. HTML-ΠΊΠΎΠ΄ ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠΠ΅ Π²Π°ΠΆΠ½ΠΎ ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ: plain JSP, MVC, etc. ΠΠ»Π°Π²Π½ΠΎΠ΅ β ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π°ΠΏΡΡΠΌΡΡ ΡΠΎ Π²ΡΠ΅ΠΌ ΡΠΏΠ΅ΠΊΡΡΠΎΠΌ Π²Π΅Π±-ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ.
- ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ½ΡΠΉ. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΡΠΌΠΈΡΡΠ΅Ρ layout ΡΡΡΠ°Π½ΠΈΡΡ Π² ΡΠ°Π½ΡΠ°ΠΉΠΌΠ΅ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Java-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ². Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡΠΎΠ³ΠΎ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ HTML/CSS/JavaScript ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ ΡΡΠ°Π½ΡΠ»ΡΡΠΈΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠΎΠ²Π½ΡΠΌΠΈ ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΠΈ ΠΈ Π»ΠΎΠ³ΠΈΠΊΠΈ.
- Π§ΡΠΆΠ΅ΡΠΎΠ΄Π½ΡΠΉ. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΏΠΎ ΡΠ°Π±ΠΎΡΠ΅ Ρ «ΡΡΡΡΠΌΠΈ» Π΄Π°Π½Π½ΡΠΌΠΈ, ΡΡΡΠ°Π½ΠΈΡΠ° ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ Π½Π° ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΡΡΠΎΡΠΎΠ½Π΅ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ JavaScript, Flash/Flex, Silverlight, CMS, etc.
Π‘Π°ΠΌ Ρ ΡΠΆΠ΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄ΠΎΠ»Π³ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΏΡΠ°ΠΊΡΠΈΠΊΡΡ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΡΡ ΡΡ Π΅ΠΌΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ²ΡΠ·ΠΊΡ ΠΈΠ· Spring MVC/FreeMarker/jQuery. Π ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ, Π·Π°ΠΌΠ΅ΡΠ°Ρ, ΡΡΠΎ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π²ΡΠ΅ΠΌΡ ΡΡΠ°Π»ΠΈ ΡΠ΅ΡΡΡΠ·Π½ΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΡΡ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ½ΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ. ΠΠ΄Π½Π°ΠΊΠΎ, ΠΈΠ·ΡΡΠ°Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠΈ, Π½Π΅ ΠΌΠΎΠ³Ρ Π½Π°ΠΉΡΠΈ Π΄Π»Ρ ΡΠ΅Π±Ρ ΡΠ±Π΅Π΄ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π΄ΠΎΠ²ΠΎΠ΄ΠΎΠ² Π² ΠΈΡ ΠΏΠΎΠ»ΡΠ·Ρ. ΠΡΡΡ ΠΌΠ½Π΅Π½ΠΈΠ΅, ΡΡΠΎ ΠΈΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΡ ΠΎΡΠ½ΠΎΠ²Π°Π½Π° Π½Π° ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ ΡΠΈΠΏΠΈΡΠ½ΠΎΠ³ΠΎ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² ΡΠΈΠ½Π΄ΡΠΎΠΌΠ° «Π²Π΅Π±ΠΎΡΠΎΠ±ΠΈΠΈ» β Π±ΠΎΡΠ·Π½ΠΈ/Π½Π΅Π»ΡΠ±Π²ΠΈ/Π½Π΅Π½Π°Π²ΠΈΡΡΠΈ Π² ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠΈ Π²ΡΠ΅Π³ΠΎ, ΡΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΡΡΠΎΠ²Π½Π΅ΠΌ Π²Π΅Π±-ΠΏΡΠ΅Π·Π΅Π½ΡΠ°ΡΠΈΠΈ. ΠΡΠΎΠ±Π»Π΅ΠΌΠ° Π·Π½Π°ΠΊΠΎΠΌΠ°, ΠΈΠ±ΠΎ ΡΠ°ΠΌ ΡΠ°Π½ΡΡΠ΅ ΠΏΡΡΠ°Π»ΡΡ ΡΠΏΠΈΡ Π½ΡΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ Π½Π° ΠΊΠΎΠ»Π»Π΅Π³-Π²ΡΡ ΠΎΠ΄ΡΠ΅Π² ΠΈΠ· ΡΡΠ΅Π΄Ρ Π²Π΅Π±-Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ΡΠΎΠ²/ΠΊΠΎΠ΄Π΅ΡΠΎΠ². ΠΠ΄Π½Π°ΠΊΠΎ, ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ ΠΈ ΡΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΎΡΡΠ°Π²Π»ΡΠ»ΠΈ ΠΆΠ΅Π»Π°ΡΡ Π»ΡΡΡΠ΅Π³ΠΎ. Π ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ² ΠΏΡΠΈΠ½ΡΠ» ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΠΌΡ Π·Π°Π½ΡΡΡΡΡ Π²ΡΠ΅ΠΉ ΡΡΠΎΠΉ «Π²Π΅Π±Π½ΡΠΉ», ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠΊΠ°Π·Π°Π»Π°ΡΡ ΡΠΎΠ²ΡΠ΅ΠΌ Π½Π΅ ΡΠ°ΠΊΠΎΠΉ ΡΡΡΠ°ΡΠ½ΠΎΠΉ ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ. ΠΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ ΡΠ΅Π±Π΅ Π² ΠΏΠΎΠ΄ΡΠΏΠΎΡΡΠ΅ Π½Π°ΡΠ°Π±ΠΎΡΠ°Π» Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Java-ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ FreeMarker-ΠΌΠ°ΠΊΡΠΎΡΠΎΠ², Π° ΡΠ°ΠΊΠΆΠ΅ Π½Π°ΡΠΎΠ±ΠΈΡΠ°Π» jQuery-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π±ΡΡΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ.
Π§ΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΡΡΠ΅ΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°, ΡΠΎ ΡΡΠΈΡΠ°Ρ, ΡΡΠΎ Π΅Π³ΠΎ ΡΡΠΎΠΈΡ Π²ΡΠ±ΠΈΡΠ°ΡΡ Π»ΠΈΡΡ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ HTML Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠ΅ΡΠΈΡΡ ΠΏΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ Π·Π°Π΄Π°ΡΡ.
Π’Π΅ΠΏΠ΅ΡΡ, ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ, Π²ΠΎΠΏΡΠΎΡ. Π ΡΡΠΎΠΈΡ Π»ΠΈ ΠΌΠ½Π΅, ΠΎΠ±Π»Π°Π΄Π°Ρ Π²ΡΠ΅ΠΌΠΈ ΡΠΏΠΎΠΌΡΠ½ΡΡΡΠΌΠΈ Π½Π°Π²ΡΠΊΠ°ΠΌΠΈ, Π²ΠΎΠΎΠ±ΡΠ΅ ΡΠΌΠΎΡΡΠ΅ΡΡ Π² ΡΡΠΎΡΠΎΠ½Ρ Π²ΡΡΠΊΠΈΡ JSF, Vaadin ΠΈ ΠΏΡΠΎΡΠ΅ΠΉ Π±ΡΠ°ΡΠΈΠΈ, ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» ΠΊΠΎΡΠΎΡΡΡ Π·Π°Π²Π΅Π΄ΠΎΠΌΠΎ Γ½ΠΆΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π΄Π°ΡΡ ΠΌΠ½Π΅ Π±ΠΎΠ»Π΅Π΅ «ΠΏΡΠΈΠ·Π΅ΠΌΠ»ΡΠ½Π½ΡΠΉ» ΠΏΠΎΠ΄Ρ ΠΎΠ΄?
Java Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ
ΠΠ»Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ java-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ (java library) ΠΈ
ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ (java framework). Π‘ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ Java Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠ°ΠΉΠ» jar, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ
Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ
ΠΏΡΠΎΠΏΠΈΡΠ°ΡΡ Π² CLASSPATH ΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ (framework) Π² ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Π΅ Ρ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠ³ΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΠΊΠ°ΡΠΊΠ°Ρ (ΡΡΡΡΠΊΡΡΡΠ°). Java framework β ΡΡΠΎ
ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½Π°Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠ°Ρ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΎΠ±Π»Π΅Π³ΡΠ°ΡΡΠ΅Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΡΠ°Π·Π½ΡΡ
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°.
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ java ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ web-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΡΠΊΠ°ΡΠ½ΡΠΌ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΎΠΌ ΠΊ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ,
Π³Π΄Π΅ Π»ΡΠ±Π°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π΄Π²ΡΡ
ΡΠ°ΡΡΠ΅ΠΉ: ΠΏΠΎΡΡΠΎΡΠ½Π½Π°Ρ ΡΠ°ΡΡΡ (ΠΊΠ°ΡΠΊΠ°Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ), Π½Π΅ ΠΌΠ΅Π½ΡΡΡΠΈΠΉΡΡ ΠΎΡ
ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΠΊ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ ΡΠ°ΡΡΡ β ΡΠΌΠ΅Π½Π½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠ΅ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΡ ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Π Π°Π·Π»ΠΈΡΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ ΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠΌ
ΠΡΠ½ΠΎΠ²Π½ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ java Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π°
Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π±Π»ΠΈΠ·ΠΊΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ, Π½Π΅ Π²Π»ΠΈΡΡ Π½Π° Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΄ΡΠΊΡΠ° ΠΈ Π½Π΅
Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Ρ Π½Π° Π½Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ
ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ. Π ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ java framework ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π·Π°Π΄Π°Π²Π°Ρ Π½Π° Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΌ ΡΡΠ°ΠΏΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. Π’Π°ΠΊΠΆΠ΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΠΌΠΎΠΆΠ΅Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ
Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΡΠΈΡΠ»ΠΎΠΌ ΡΠ°Π·Π½ΡΡ
ΠΏΠΎ ΡΠ΅ΠΌΠ°ΡΠΈΠΊΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ.
ΠΡΡΠ³ΠΎΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΠΈΠ½Π²Π΅ΡΡΠΈΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ. Π’Π°ΠΊ ΠΏΡΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΈ ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅
ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΊΠ»Π°ΡΡΠ° ΠΏΠΎΡΠ»Π΅ Π²ΡΠ·ΠΎΠ²Π°. ΠΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ
ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΠΎΠ΅ Π² Π±ΠΎΠ»Π΅Π΅ ΠΎΠ±ΡΠΈΠΉ, Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΉ ΠΊΠΎΠ΄ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°. ΠΡΠΈ ΡΡΠΎΠΌ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ
ΠΊΠ»Π°ΡΡΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
Web framework JSF (Java Server Faces) Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° Java ΠΈ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈ Π΄Π»Ρ web-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠ½ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ
ΠΎΠ±Π»Π΅Π³ΡΠ°Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ
ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² Π΄Π»Ρ Java EE ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠ°Π½Π½ΡΠΉ web framework ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°Π΅ΡΡΡ
Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΏΡΠΎΡΠΈΡ
MVC-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ Π·Π°ΠΏΡΠΎΡΠ°ΠΌΠΈ. ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ
ΠΊΠ»Π°ΡΡΠΎΠ² JavaBean ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΡΡ
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡ : ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄Π΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
Π½Π° Π΄ΡΡΠ³ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ, ΠΈ Π·Π°ΡΠ΅ΠΌ Π²ΠΎΡΡΡΠ°Π½Π°Π²ΠΈΡΡ, ΠΏΡΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ΅Π½ΠΈΠΈ Π½Π°Π·Π°Π΄.
Π¨ΠΈΡΠΎΠΊΠΎΠ΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π² JSF ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ JSP ΠΈ Facelets.
ΠΠ»Π°ΡΡΠΎΡΠΌΠ° Java Server Faces Π²ΠΊΠ»ΡΡΠ°Π΅Ρ:
- Π½Π°Π±ΠΎΡ API Π΄Π»Ρ :
- ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ,
- ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ,
- Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΠΈ ΠΏΠΎΡΡΡΠΏΠ°Π΅ΠΌΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ,
- ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΡΠ°Π²ΠΈΠ» Π½Π°Π²ΠΈΠ³Π°ΡΠΈΠΈ,
- ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΠ½Π°ΡΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ (i18n),
- ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΠΈ (accessibility).
- ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ JSP ΡΠ΅Π³ΠΎΠ² Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° JSF Π½Π° JSP ΡΡΡΠ°Π½ΠΈΡΠ΅.
Π ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ Π½Π° Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ΅Π»ΠΈΠ·Π΅ JSF 2.2 ΠΎΡ 21.05.2013 Π²ΡΠΏΠΎΠ»Π½Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
Π°ΡΡΠΈΠ±ΡΡΠΎΠ² HTML 5 ΠΈ
ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ Ρ Java EE 7. Π JSF 2.0 Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΡ Facelets ΠΊΠΎΡΠΎΡΠ°Ρ
ΠΏΡΠΈΡΠ»Π° Π½Π° Π·Π°ΠΌΠ΅Π½Ρ JSP.
ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ web framework’Π° JSF ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΎ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ WEB ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ.
Web framework Struts2 ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΠΈ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ WEB-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π²
ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Java2EE. ΠΡΠ½ΠΎΠ²ΠΎΠΉ Struts ΡΠ²Π»ΡΠ΅ΡΡΡ Java Servlet API, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠ½ ΡΠ°ΡΡΠΈΡΡΠ΅Ρ. Π Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ½ΠΎΠΌ ΠΏΠ»Π°Π½Π΅ Π΄Π°Π½Π½ΡΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ
ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ, ΠΈΠ»ΠΈ, ΡΠΎΡΠ½Π΅Π΅, Π΄Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π±Π»ΠΎΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ MVC. Struts2 ΠΈΠΌΠ΅Π΅ΡΡΡ ΡΡΡΠΊΠΎΠ΅ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ
Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠΈ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ HTML-ΡΡΡΠ°Π½ΠΈΡΡ ΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°, ΠΎΡΠ²Π΅ΡΠ°ΡΡΠ΅Π³ΠΎ Π·Π° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΄Π°Π½Π½ΡΡ
ΠΎΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΊ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ
ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ.
Framework Struts2 Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ β ΡΠ΅ΡΠ²Π»Π΅Ρ ActionServlet ΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ
ΡΡΡΠ°Π½ΠΈΡΠ°ΠΌΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ (Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΏΡΠΎΡΡ). Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ
ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° struts-config.xml, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ²ΡΠ·ΡΠ²Π°Π΅Ρ Π²ΠΎΠ΅Π΄ΠΈΠ½ΠΎ ΠΌΠΎΠ΄Π΅Π»Ρ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ
ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ.
ΠΠ°ΠΏΡΠΎΡΡ ΠΈΠ· Π±ΡΠ°ΡΠ·Π΅ΡΠ° ΠΏΠΎΡΡΡΠΏΠ°ΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅Ρ (ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ) Π² Π²ΠΈΠ΄Π΅ Β«actionΒ» (Π΄Π΅ΠΉΡΡΠ²ΠΈΡ), ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΡ
Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΌ
ΡΠ°ΠΉΠ»Π΅. ΠΠΎΠ³Π΄Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π·Π°ΠΏΡΠΎΡ, ΠΎΠ½ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π΅Π³ΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΌΡ action-ΠΊΠ»Π°ΡΡΡ. ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ Ρ
ΠΊΠΎΠ΄ΠΎΠΌ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈ, ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΏΡΠ°Π²ΠΈΠ»Π°ΠΌ Π½Π°Π²ΠΈΠ³Π°ΡΠΈΠΈ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΡΡΠ°Π½ΠΈΡΡ Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡ. ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ
ΠΌΠΎΠ΄Π΅Π»ΡΡ ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π² Π²ΠΈΠ΄Π΅ ΠΎΡΠΎΠ±ΡΡ
JavaBeans. ΠΠΎΠ³Π°ΡΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠ΅Π³ΠΎΠ² ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ· Π±ΠΈΠ½ΠΎΠ² ΠΈ
Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ ΠΈΡ
Π±Π΅Π· Java-ΠΊΠΎΠ΄Π°.
Web framework Struts2 ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ½Π°ΡΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΡ i18n, ΠΎΠ±Π»Π΅Π³ΡΠ°Π΅Ρ Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ Π΄Π°Π½Π½ΡΡ
ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ
ΠΈΠ·
Π²Π΅Π±-ΡΠΎΡΠΌΡ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² Β«tilesΒ».
Struts2 Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΎΡΠ°Π±ΠΎΡΠΊΠΎΠΉ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΉ Π²Π΅ΡΡΠΈΠΈ Struts, ΡΡΠΎ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π½ΠΎΠ²ΡΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΠΏΠΎΡΡΡΠΎΠ΅Π½Π½ΡΠΉ
Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Webwork Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Model-View-Controller (MVC).
ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ web framework’Π° Struts2 ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΎ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ WEB ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ.
Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Google Web Toolkit, ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅
Google Web Toolkit (GWT) β ΡΡΠΎ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΡΠΉ Java ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΠΉ WEB ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅
Ajax-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡ GWT — ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ ΠΈΡΡ
ΠΎΠ΄Π½ΠΎΠ³ΠΎ Java-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² JavaScript ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ (ΠΏΡΠΈ
ΠΆΠ΅Π»Π°Π½ΠΈΠΈ Ρ ΠΎΠ±ΡΡΡΠΊΠ°ΡΠΈΠ΅ΠΉ). Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΡΡΠΈ Π²ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Java, ΠΈ
Π»ΠΈΡΡ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ ΡΡΠ°ΠΏΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ JavaScript’Ρ.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ framework GWT, ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΡΡΡΠΎ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΈ ΠΎΡΠ»Π°ΠΆΠΈΠ²Π°ΡΡ AJAX ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΡΠ·ΡΠΊΠ΅ Java Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ
ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΎΡΠ»Π°Π΄ΠΊΠΈ Java.
GWT Π²ΠΊΠ»ΡΡΠ°Π΅Ρ XML ΠΏΠ°ΡΡΠ΅Ρ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠ½Π°ΡΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ JUnit, Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ
Π²ΡΠ·ΠΎΠ²Π° ΠΏΡΠΎΡΠ΅Π΄ΡΡ, ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΠ°ΠΊΠ΅Ρ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ (GUI).
ΠΠΎΠ»ΡΡΠΎΠΉ Π½Π°Π±ΠΎΡ Π²ΠΈΠ·ΡΠ°Π»ΡΠ½ΡΡ
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΡΠΈΠΏΠ° GXT (Ext-GWT), SmartGWT ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΈ ΡΡΠΊΠΎΡΠΈΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ
ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ WEB-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
IDE ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ WEB-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΈΠΌΠ΅ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ GWT. ΠΡΠ»Π°Π΄ΠΊΠ° GWT-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π° Π½Π° Π΄Π²Π΅ ΡΠ°ΡΡΠΈ. ΠΡΠ»Π°Π΄ΠΊΠ° ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΎΡΠ»Π°Π΄ΠΊΠ° ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ Java WEB ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠ»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΠΆΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ gwt dev-plugin Π΄Π»Ρ Π±ΡΠ°ΡΠ·Π΅ΡΠ°.
ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° GWT Ρ ΠΈΠ½cΡΠ°Π»Π»ΡΡΠΈΠ΅ΠΉ ΠΏΠ»Π°Π³ΠΈΠ½Π° GWT SDK Π² IDE Eclipse ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΎ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅
Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ GWT.
Spring β ΡΡΠΎ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π΄Π»Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Java. Π’Π°ΠΊΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΠΈ Π΄Π»Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ
.NET, Π½Π°Π·Π²Π°Π½Π½ΡΠΉ Spring.NET.
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ Spring Π½Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΊΠ°ΠΊΡΡ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΎΠ½ ΠΏΠΎΠ»ΡΡΠΈΠ» ΡΠΈΡΠΎΠΊΠΎΠ΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½ΠΈΠ΅
Π² Java-ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π΅ Π³Π»Π°Π²Π½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΊΠ°ΠΊ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° ΠΈ Π·Π°ΠΌΠ΅Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΈ Enterprise JavaBeans.
Spring Π±ΡΠ» Π²ΡΠΏΡΡΠ΅Π½ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ Apache 2.0 license Π² ΠΈΡΠ½Π΅ 2003 Π³ΠΎΠ΄Π°. Π Π΅Π»ΠΈΠ· Spring 3.1 Π²ΡΡΠ΅Π» Π² Π΄Π΅ΠΊΠ°Π±ΡΠ΅ 2011.
Π’Π΅ΠΊΡΡΠ°Ρ Π²Π΅ΡΡΠΈΡ β 4.2.
Spring ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π±ΠΎΜΠ»ΡΡΡΡ ΡΠ²ΠΎΠ±ΠΎΠ΄Ρ Π² ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ; ΠΊΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΎΠ½ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Ρ
ΠΎΡΠΎΡΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΈ Π»ΡΠ³ΠΊΠΈΠ΅
Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π° ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΠ΅ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΡΠ°Π±Π°.
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΡΠ΄ΡΠ° Spring ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π² Π»ΡΠ±ΠΎΠΌ Java-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ ΠΈ
ΡΡΠΎΠ²Π΅ΡΡΠ΅Π½ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠΉ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ WEB ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ Java Enterprise Edition. ΠΠΎ ΡΡΠΈΠΌ ΠΏΡΠΈΡΠΈΠ½Π°ΠΌ Spring ΠΏΡΠΈΠΎΠ±ΡΡΠ»
Π±ΠΎΠ»ΡΡΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΡ ΠΈ ΠΏΡΠΈΠ·Π½Π°ΡΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ ΠΊΠ°ΠΊ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡΠ΅ΡΠΊΠΈ Π²Π°ΠΆΠ½ΡΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ.
ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ Spring ΠΊΠ°ΠΊ ΠΈΡΡΠΎΡΠ½ΠΈΠΊ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ (ΡΠ²ΠΎΠΉΡΡΠ²), Π½ΡΠΆΠ½ΡΡ
Π΄Π»Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ»ΠΎΠΆΠ½ΡΡ
Π±ΠΈΠ·Π½Π΅Ρ-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π²Π½Π΅ ΡΡΠΆΠ΅Π»ΠΎΠ²Π΅ΡΠ½ΡΡ
ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ
ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ. ΠΡΠΎΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΈ Π΄Π΅Π»Π°Π΅Ρ Π΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΠΎΠΉ
ΠΊ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Ρ ΡΠΈΠΏΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΆΠ΅ ΡΠΎΠ·Π΄Π°Π½Ρ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Java. Π‘ΡΠΈΡΠ°Π΅ΡΡΡ, ΡΡΠΎ Spring ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΠΌΠΎΠ΄Π΅Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ,
ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΡΡ Π½Π° Π»ΡΡΡΠΈΡ
ΡΡΠ°Π½Π΄Π°ΡΡΠ°Ρ
ΠΈΠ½Π΄ΡΡΡΡΠΈΠΈ, ΠΈ Π΄Π΅Π»Π°Π΅Ρ Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΉ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ
ΠΎΠ±Π»Π°ΡΡΡΡ
Java.
ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ΠΌ Spring ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅
ΠΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ.
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Hibernate, ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Hibernate ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ (object-relational
mapping β ORM) ΠΏΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° Java. ΠΠ½Π° ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΌΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ
ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ
(open source), ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΠΌΠΎΠ΅ Π½Π° ΡΡΠ»ΠΎΠ²ΠΈΡΡ
GNU Lesser General Public License.
Hibernate ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π»Π΅Π³ΠΊΠΈΠΉ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠ°ΡΠΊΠ°Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΡΡ Π΄Π°Π½Π½ΡΡ
Π²
ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΡ
ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΡΡ
Π‘Π£ΠΠ. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΈ ΡΠ°Π±Π»ΠΈΡ
Β«Ρ Π½ΡΠ»ΡΒ», ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅ΠΉ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ
.
Hibernate Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΠ²ΡΠ·Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠ»Π°ΡΡΠ°ΠΌΠΈ Java ΠΈ ΡΠ°Π±Π»ΠΈΡΠ°ΠΌΠΈ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΡΠΈΠΏΠΎΠ²
Π΄Π°Π½Π½ΡΡ
Java Ρ ΡΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ
SQL, Π½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π½Π°Π±ΠΎΡΠ° ΡΠ°Π±Π»ΠΈΡ,
ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ
Π΄Π°Π½Π½ΡΡ
. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ Π²ΡΠ΅ΠΌΡ
ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΎΠ±ΡΡΠ½ΠΎ ΡΡΠ°ΡΠΈΡΡΡ Π½Π° ΡΡΡΠ½ΠΎΠ΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ SQL-Π·Π°ΠΏΡΠΎΡΠΎΠ² Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ JDBC-ΠΊΠΎΠ΄Π°.
ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΡΡ
Π΄ΠΎΡΡΠΎΠΈΠ½ΡΡΠ² Hibernate ΡΠ²Π»ΡΠ΅ΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠ°Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ SQL-Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅Π³ΠΎ
Π½Π°Π±ΠΎΡΠ° Π΄Π°Π½Π½ΡΡ
ΠΏΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² (ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²), ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΠΎΠ±Π»Π΅Π³ΡΠ°Ρ ΠΏΠ΅ΡΠ΅Π½ΠΎΡ (ΠΏΠΎΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅) ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
Π½Π° Π»ΡΠ±ΡΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ
SQL. Π’ΠΎ Π΅ΡΡΡ, Hibernate ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΡΠΎΡ
ΡΠ°Π½Π½ΠΎΡΡΠΈ Π΄Π°Π½Π½ΡΡ
(persistence) Π΄Π»Ρ Β«POJOΒ»
(Plain Old Java Object). POJO ΠΊΠ»Π°ΡΡ Java ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ»Ρ, Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΈΡ
ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ, ΠΈ Π΄ΠΎΡΡΡΠΏ ΠΊΠΎ Π²ΡΠ΅ΠΌ
ΠΏΠΎΠ»ΡΠΌ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ΅Π· ΠΌΠ΅ΡΠΎΠ΄Ρ get/set. ΠΡΠΈΠΌΠ΅Ρ ΠΏΡΠΎΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° POJO ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°
JavaBean.
ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Hibernate Ρ ΠΈΠ½cΡΠ°Π»Π»ΡΡΠΈΠ΅ΠΉ ΠΏΠ»Π°Π³ΠΈΠ½Π° Hibernate Tools Π² IDE Eclipse ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΎ
Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅ ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Hibernate.
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Swing ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ° Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° desktop’ΡΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΡΡ
Π½Π° ΡΠ·ΡΠΊΠ΅ Java.
Swing Π±ΡΠ» ΡΠΎΠ·Π΄Π°Π½ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Sun Microsystems ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠ΄ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² (widget), ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΏΠΎΠ»Ρ Π²Π²ΠΎΠ΄Π°,
ΡΠ°Π±Π»ΠΈΡΡ ΠΈ Ρ.Π΄.
Swing ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ ΠΊΠ»Π°ΡΡΠΎΠ² JFC (Java Foundation Classes), ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π½Π°Π±ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ
ΠΎΠ±ΠΎΠ»ΠΎΡΠ΅ΠΊ. Π ΡΠΎΡΡΠ°Π² JFC Π²Ρ
ΠΎΠ΄ΡΡ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Java 2D ΠΈ ΠΏΠ΅ΡΠ²Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Java Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ
ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² AWT (Abstract Window Toolkit).
ΠΠ°ΡΠΈΠ½Π°Ρ Ρ Π²Π΅ΡΡΠΈΠΈ Java 1.2 (1998 Π³ΠΎΠ΄) Swing Π²ΠΊΠ»ΡΡΡΠ½ Π² Java Runtime Environment.
Look and Feel
ΠΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ° Swing ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π° ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Β«look and feelΒ» (L&F) ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
Β«LookΒ» ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π²Π½Π΅ΡΠ½ΠΈΠΉ Π²ΠΈΠ΄ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², Π° Β«FeelΒ» β ΠΈΡ
ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. JRE ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ L&F:
- CrossPlatformLookAndFeel β ΡΠΎΠ΄Π½ΠΎΠΉ Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Java L&F, ΠΈΠ½Π°ΡΠ΅ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Metal; ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ
ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΈ ΠΈΡ Π²Π½Π΅ΡΠ½ΠΈΠΉ Π²ΠΈΠ΄, Π²Π½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ. - SystemLookAndFeel β ΡΠΎΠ΄Π½ΠΎΠΉ Π΄Π»Ρ ΡΠΈΡΡΠ΅ΠΌΡ L&F; ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠΉ L&F ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠ»Ρ Windows
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Β«WindowsΒ» L&F, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠΌΠΈΡΠΈΡΡΠ΅Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΉ Π·Π°ΠΏΡΡΠ΅Π½. ΠΠ»Ρ Linux ΠΈ
Solaris ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Β«GTK+Β», Π΅ΡΠ»ΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ GTK+ 2.2 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ, Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ
Β«MotifΒ». - Synth β ΡΡΠΎ ΠΎΡΠ½ΠΎΠ²Π° Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ L&F.
- Multiplexing β ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ L&F ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Swing ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΠ΅ Π²ΠΈΠ΄Ρ ΠΈ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ (plugable
look-and-feel), Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΊΠΎΡΠΎΡΡΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° Π°Π΄Π°ΠΏΡΠ°ΡΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ. Π’ΠΎ Π΅ΡΡΡ
ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ Π΄ΡΡΠ³ΠΎΠΉ, ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ,
ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠ΅ Swing, ΠΌΠΎΠ³ΡΡ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΊΠ°ΠΊ «ΡΠΎΠ΄Π½ΡΠ΅» ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ.
Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Ρ AWT
Swing ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ°Π½Π½Π΅ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ AWT. Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ
AWT, ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Swing ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Ρ Π΄Π»Ρ ΠΊΡΠΎΡΡ-ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ, Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ AWT ΠΏΠΎΠ²ΡΠΎΡΡΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ
ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
AWT ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ (ΠΠ‘) Π΄Π»Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΡΠΎ Π΅ΡΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°
ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΠ‘ (ΠΎΠΊΠ½ΠΎ), Π² ΡΠ²ΡΠ·ΠΈ Ρ ΡΠ΅ΠΌ, AWT Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠΉ ΡΠΎΡΠΌΡ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ). ΠΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ AWT Π²ΡΠ΅Π³Π΄Π° ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ ΠΏΠΎΠ²Π΅ΡΡ
Swing-ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², Ρ.ΠΊ. Π²ΡΠ΅ Swing ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π½Π° ΠΏΠΎΠ²Π΅ΡΡ
Π½ΠΎΡΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°.
ΠΡΠΈΠ½ΡΠΈΠΏ Lightweight
ΠΡΠΈΠ½ΡΠΈΠΏ Β«LightweightΒ» ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Swing ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΏΡΠΎΡΠΈΡΠΎΠ²ΡΠ²Π°ΡΡΡΡ ΡΠ°ΠΌΠΈΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ Π² ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΠΎΠΌ ΠΎΠΊΠ½Π΅
(Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° JFrame), Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Β«ΡΡΠΆΠ΅Π»ΡΡ
Β» ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² AWT,
Swing ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎ ΠΎΠΊΠ½ΠΎ.
Π ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΌΠΎΠ³ΡΡ ΡΠΎΡΠ΅ΡΠ°ΡΡΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Swing ΠΈ AWT. ΠΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΠΎΠΆΠ΄Π°ΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ β Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ,
ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ AWT Π²ΡΠ΅Π³Π΄Π° ΠΏΠ΅ΡΠ΅ΠΊΡΡΠ²Π°ΡΡ Swing ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ Π·Π°ΠΊΡΡΠ²Π°ΡΡ ΡΠΎΠ±ΠΎΠΉ Π²ΡΠΏΠ»ΡΠ²Π°ΡΡΠΈΠ΅ ΠΌΠ΅Π½Ρ JPopupMenu ΠΈ JComboBox.
ΠΠ»Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ, Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΈΠΌΠ΅ΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Ρ setLightWeightPopupEnabled (boolean), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅
Π·Π°ΠΏΡΠ΅ΡΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Β«Π»Π΅Π³ΠΊΠΎΠ²Π΅ΡΠ½ΡΡ
Β» Π²ΡΠΏΠ»ΡΠ²Π°ΡΡΠΈΡ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΡΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π² true AWT ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π½Π΅
Π±ΡΠ΄ΡΡ ΠΏΠ΅ΡΠ΅ΠΊΡΡΠ²Π°ΡΡ ΠΌΠ΅Π½Ρ.
ΠΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΌΠΈΠ½ΡΡΠΎΠΌ ΡΠ°ΠΊΠΈΡ
Β«Π»Π΅Π³ΠΊΠΎΠ²Π΅ΡΠ½ΡΡ
Β» (lightweight) ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π°Ρ ΡΠ°Π±ΠΎΡΠ°. ΠΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»ΡΠ½Π°Ρ
ΡΡΠΎΡΠΎΠ½Π° β ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΠΎΡΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ
ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Π²ΡΠ΅Ρ
ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ
.
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Swing Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Swing
ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ SWT ΠΈ Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² java-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ
ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΡΡΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ΅
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° SWT
Π£ΡΠ΅Π±Π½ΠΈΠΊ ΠΏΠΎ JavaFX: Π½Π°ΡΠ°Π»ΠΎ ΡΠ°Π±ΠΎΡΡ / Π₯Π°Π±Ρ
ΠΡΠΈΠ²Π΅Ρ, Π₯Π°Π±Ρ! ΠΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡ Π²Π°ΡΠ΅ΠΌΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΡΠ°ΡΡΠΈ Β«JavaFX Tutorial: Getting startedΒ» Π°Π²ΡΠΎΡΠ° Vojtech Ruzicka.
ΠΠ°ΠΊ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΈ Π½Π°ΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ JavaFX, Ρ ΠΏΠΎΠΌΠΎΡΡΡ Maven, Gradle ΠΈΠ»ΠΈ JavaFX SDK.
ΠΡΠ΅ ΠΏΠΎΡΡΡ Π² ΡΠ΅ΡΠΈΠΈ JavaFX:
- Π£ΡΠ΅Π±Π½ΠΈΠΊ ΠΏΠΎ JavaFX: Π½Π°ΡΠ°Π»ΠΎ ΡΠ°Π±ΠΎΡΡ
- Π£ΡΠ΅Π±Π½ΠΈΠΊ ΠΏΠΎ JavaFX: ΠΡΠΈΠ²Π΅Ρ, ΠΌΠΈΡ!
- Π£ΡΠ΅Π±Π½ΠΈΠΊ ΠΏΠΎ JavaFX: FXML ΠΈ SceneBuilder
- Π£ΡΠ΅Π±Π½ΠΈΠΊ ΠΏΠΎ JavaFX: ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΌΠ°ΠΊΠ΅ΡΡ
- Π£ΡΠ΅Π±Π½ΠΈΠΊ ΠΏΠΎ JavaFX: ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΠ΅ ΠΌΠ°ΠΊΠ΅ΡΡ
- Π£ΡΠ΅Π±Π½ΠΈΠΊ ΠΏΠΎ JavaFX: CSS ΡΡΠΈΠ»ΠΈΠ·Π°ΡΠΈΡ
- JavaFX Weaver: ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ JavaFX ΠΈ Spring Boot ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Java
JavaFX, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΡΡΠ΅Π±ΡΠ΅Ρ, ΡΡΠΎΠ±Ρ Ρ Π²Π°Ρ Π±ΡΠ» ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ JDK. ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΡΠ°Π·Π»ΠΈΡΠ°Π΅ΡΡΡ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ Π²Π΅ΡΡΠΈΠΉ Java.
JavaFX Π±ΡΠ» ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ Π²ΡΠΏΡΡΠΊΠ° Java 8. ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎΠ·ΠΆΠ΅ ΠΎΠ½ Π±ΡΠ» ΡΠ΄Π°Π»Π΅Π½ ΠΈΠ· JDK ΠΈ
ΠΏΠ΅ΡΠ΅Π½Π΅ΡΠ΅Π½ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ Π² Java 11.
ΠΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π΅ΡΠ»ΠΈ Π²Ρ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΡΠ΅ΡΠ΅ΡΡ Π½Π° Java 8-10, Ρ Π²Π°Ρ Π΅ΡΡΡ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ Π²Π°ΡΠ΅Π³ΠΎ JDK ΡΠΆΠ΅. Π£ΡΠ°! ΠΡΠ»ΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²ΡΡ Π²Π΅ΡΡΠΈΡ Java β ΡΠΎ Π΅ΡΡΡ 11+, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ.
Maven
ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ Π²ΡΡΡΠ½ΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π½Π΅ΡΠ΄ΠΎΠ±Π½ΠΎ, ΠΈ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΡ Π±Ρ ΡΠ΅Π΄ΠΊΠΎ ΡΠ°ΠΊ Π΄Π΅Π»Π°Π»ΠΈ. ΠΠΎΡΠ°Π·Π΄ΠΎ Π»ΡΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ, ΡΠ°ΠΊΡΡ ΠΊΠ°ΠΊ Maven ΠΈΠ»ΠΈ Gradle. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ, Π° ΡΠΈΡΡΠ΅ΠΌΠ° ΠΏΠΎΠ·Π°Π±ΠΎΡΠΈΡΡΡ ΠΎΠ± ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠΌ.
ΠΡΡ Π΅ΡΠΈΠΏ Maven
ΠΠΎΠ½Π΅ΡΠ½ΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΠ²ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Maven Π²ΡΡΡΠ½ΡΡ, Ρ Π½ΡΠ»Ρ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠ΅ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΡΡΠΊΡΡΡΡ ΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΡ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΄Π»Ρ Π²Π°Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Maven.
Maven ΠΈΠΌΠ΅Π΅Ρ ΠΏΠΎΠ½ΡΡΠΈΠ΅ Π°ΡΡ Π΅ΡΠΈΠΏΠΎΠ², ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎ ΡΡΡΠ΅ΡΡΠ²Ρ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΈΠΏΡ ΠΏΡΠΎΠ΅ΠΊΡΡ ΠΈΠ· ΡΠ°Π±Π»ΠΎΠ½Π°. Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ Π°ΡΡ Π΅ΡΠΈΠΏΡ Π΄Π»Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ² ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², ΠΈ ΠΊ ΡΡΠ°ΡΡΡΡ, Π΅ΡΡΡ ΠΏΠ°ΡΠ° Π΄Π»Ρ JavaFX. ΠΡΡ Π΅ΡΠΈΠΏ, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ, Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊΡΡ Π²Π΅ΡΡΠΈΡ Java Π²Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎΠ± Π°ΡΡ Π΅ΡΠΈΠΏΠ°Ρ Maven Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΠΎΡΡΠ΅: Maven archetypes tutorial.
ΠΡΡ Π΅ΡΠΈΠΏ Java 8
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ com.zenjava:javafx-basic-archetype, ΠΈΠ»ΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π°ΡΡ Π΅ΡΠΈΠΏΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ, Π΅ΡΠ»ΠΈ ΡΡΠΎΡ Π²Π°ΠΌ Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π»Π΅Π³ΠΊΠΎ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Maven, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ Π²ΡΡΠ΅ Π°ΡΡ Π΅ΡΠΈΠΏ:
mvn archetype:generate -DarchetypeGroupId=com.zenjava -DarchetypeArtifactId=javafx-basic-archetype
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Maven ΠΈΠ· Π°ΡΡ Π΅ΡΠΈΠΏΠ° ΠΏΡΡΠΌΠΎ Π² Π²Π°ΡΠ΅ΠΉ IDE.
ΠΡΡ Π΅ΡΠΈΠΏ Java 11
ΠΠ»Ρ Java 11 Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ org.openjfx: javafx-archetype-simple.
ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΏΡΠΎΡΡΠΎ Π·Π°ΠΏΡΡΡΠΈΡΠ΅:
mvn archetype:generate -DarchetypeGroupId=org.openjfx -DarchetypeArtifactId=javafx-archetype-simple
Π ΡΡΠ½Π°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Maven
ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΡΡΡΠΎΠΈΡΡ ΡΠ²ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Maven Π²ΡΡΡΠ½ΡΡ, Π½Π΅ Π³Π΅Π½Π΅ΡΠΈΡΡΡ Π΅Π³ΠΎ ΠΈΠ· Π°ΡΡ Π΅ΡΠΈΠΏΠ°.
ΠΠ»Ρ Π½Π°ΡΠ°Π»Π° Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΡΡΡΡ Π΄Π²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°. ΠΠ΅ΡΠ²ΡΠΉ β Maven Plugin Π΄Π»Ρ Java FX.
ΠΡΠΎΡΡΠΎ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ Π² Π²Π°Ρ pom.xml:
<build>
<plugins>
<plugin>
<groupId>org.openjfx</groupId>
<artifactId>javafx-maven-plugin</artifactId>
<version>0.0.3</version>
<configuration>
<mainClass>com.example.App</mainClass>
</configuration>
</plugin>
</plugins>
</build>
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ
<mainclass>
Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° Π²Π°Ρ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΊΠ»Π°ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠΌΠ΅Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄ main ΠΈ ΡΠ°ΡΡΠΈΡΡΠ΅Ρ javafx.application.Application. ΠΡ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅ΠΌ ΠΎΠ± ΡΡΠΎΠΌ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΠ°ΡΡΠ΅ ΡΠ΅ΡΠΈΠΈ.
ΠΡΠΎΡΠ°Ρ ΡΠ°ΡΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ Π΄Π»Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ JavaFX:
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>11.0.2</version>
</dependency>
Gradle
Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Gradle Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΈΠ· Π°ΡΡ Π΅ΡΠΈΠΏΠΎΠ² .
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΏΠ»Π°Π³ΠΈΠ½ Gradle Archetype ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π°ΡΡ
Π΅ΡΠΈΠΏΡ Maven, ΡΠΏΠΎΠΌΡΠ½ΡΡΡΠ΅ Π²ΡΡΠ΅.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ²ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Maven ΠΈΠ· Π°ΡΡ
Π΅ΡΠΈΠΏΠ°, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Π² ΠΏΡΠΎΠ΅ΠΊΡ Gradle Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠ΅ΠΌ Π²Π°Ρ pom.xml:
gradle init
Π ΡΡΠ½Π°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Gradle
ΠΠ°ΠΊ ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ ΡΡΡΠ½ΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Maven, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΏΠ»Π°Π³ΠΈΠ½ JavaFX:
plugins {
id 'application'
id 'org.openjfx.javafxplugin' version '0.0.8'
}
Π Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ Π΄Π»Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ:
javafx {
version = "11.0.2"
modules = [ 'javafx.controls' ]
}
JavaFX SDK
ΠΡΡΡ Π΅ΡΠ΅ ΠΎΠ΄Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ JavaFX Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΊΠ°ΡΠ°ΡΡ JavaFX SDK. ΠΠ½ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΡΠ΅ΠΌ ΡΠ²ΡΠ·Π°ΡΡ Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ Π² Π²Π°ΡΠ΅ΠΉ IDE ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² classpath.
ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° Π²Ρ Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΡ Ρ Gradle ΠΈΠ»ΠΈ Maven ΠΈ ΠΏΡΠΎΡΡΠΎ Π΄Π»Ρ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.
ΠΡΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠΎ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½Π΅ΡΠ΄ΠΎΠ±Π½ΡΠΌ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ±Π΅Π΄ΠΈΡΡΡΡ, ΡΡΠΎ Π²Ρ Π²ΠΊΠ»ΡΡΠΈΠ»ΠΈ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ.
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΎΠΉ ΠΎΠΏΡΠΈΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ Π±Π΅Π· Maven/Gradle Π² Π²Π°ΡΠ΅ΠΉ IDE, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΡΠ°ΠΉΠ»Ρ. Π IntelliJ IDEA Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅ΠΉΡΠΈ Π½Π°:
File β New β Project β JavaFX
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΡΠ΅Π½ΠΈΠ΅
Hello World JavaFX application source code β Gradle
Hello World JavaFX application source code β Maven
JavaFX 13 and IntelliJ
JavaFX 13 and NetBeans
JavaFX 13 and Eclipse
Π§ΡΠΎ Π΄Π°Π»ΡΡΠ΅
ΠΡΠ° ΡΡΠ°ΡΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ²ΠΎΠΉ Π² ΡΠ΅ΡΠΈΠΈ JavaFX. Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΠΌΡ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°ΡΡ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ Π²Π°ΡΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ JavaFX.
ΠΠ»ΡΡΡ, ΠΌΠΈΠ½ΡΡΡ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄ΡΡΠ³ΠΎΠ΅ Β· Raygun Blog
Π 2019 Π³ΠΎΠ΄Ρ Java ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΠΎΡΡΠ°Π΅ΡΡΡ ΡΠ°ΠΌΡΠΌ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΠΌΠΈΡΠ΅. ΠΠ½ ΠΈΠΌΠ΅Π΅Ρ ΠΎΠ±ΡΠΈΡΠ½ΡΡ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΡ ΠΈ Π±ΠΎΠ»Π΅Π΅ 9 ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ΠΎΠ² ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Java ΠΏΠΎ Π²ΡΠ΅ΠΌΡ ΠΌΠΈΡΡ. Π₯ΠΎΡΡ Java — Π½Π΅ ΡΠ°ΠΌΡΠΉ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠ·ΡΠΊ, Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° Java Ρ Π½ΡΠ»Ρ. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΎΡΠ»ΠΈΡΠ½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌ Java Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΈ REST API, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ Π½Π° Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ Java.
Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ
Java ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π²Π°ΠΌ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΡΡΡ Π½Π° Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠ΅ Π²Π°ΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π²ΠΌΠ΅ΡΡΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π±Π°Π·ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ.ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΏΡΡ ΡΠ°Π±ΠΎΡΡ Ρ Java, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π±ΡΡΡΡΠΎ Π½Π°ΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΡ. ΠΡΠ΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ ΡΠ΅ΡΠΌΠΈΠ½Π°ΠΌΠΈ, ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΠ°ΠΌΠΈ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡΠΌΠΈ.
ΠΠ°ΡΠΈ 17 Π»ΡΡΡΠΈΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² Java ΠΎΡΠ½ΠΎΠ²Π°Π½Ρ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π΄ΠΎ 2019 Π³ΠΎΠ΄Π° ΠΈ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ Π² Π°Π»ΡΠ°Π²ΠΈΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅.
Blade — ΡΡΠΎ Π»Π΅Π³ΠΊΠ°Ρ ΠΈ Π²ΡΡΠΎΠΊΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½Π°Ρ ΡΡΠ΅Π΄Π° Java, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΡΡΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π±ΡΡΡΡΡΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π‘ΠΎΠ·Π΄Π°ΡΠ΅Π»ΠΈ Ρ ΠΎΡΡΡ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ ΠΏΠΎΠ½ΡΠ»ΠΈ Π²ΡΡ ΡΡΡΡΠΊΡΡΡΡ Π·Π° ΠΎΠ΄ΠΈΠ½ Π΄Π΅Π½Ρ.ΠΠΎΡΡΠΎΠΌΡ Blade Π΄Π΅Π»Π°Π΅Ρ ΡΠΏΠΎΡ Π½Π° ΠΏΡΠΎΡΡΠΎΡΡ ΠΈ ΡΠ»Π΅Π³Π°Π½ΡΠ½ΠΎΡΡΡ.
ΠΠ»Π°ΡΡΠΎΡΠΌΠ° Blade ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ MVC (ΠΌΠΎΠ΄Π΅Π»Ρ-ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅-ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ). ΠΠ½ ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΠΎΡΡΠΎΠΉ Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ Π΄ΠΈΠ·Π°ΠΉΠ½, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΈ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠ»ΠΎΠ΅Π². Blade ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° Java 8, ΠΈ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅Ρ Netty ΠΈ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² ΡΠ°ΠΊΠΆΠ΅ Π²ΡΡΡΠΎΠ΅Π½Ρ Π² ΡΡΡΡΠΊΡΡΡΡ. ΠΠ½ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΡ ΠΏΠ»ΠΎΡΠ°Π΄Ρ; ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ Π½Π΅ ΠΏΡΠ΅Π²ΡΡΠ°Π΅Ρ 500 ΠΠ.
Π‘ Blade Ρ Π²Π°Ρ Π΅ΡΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ Π² ΡΡΠΈΠ»Π΅ RESTful ΠΈ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ ΡΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ Maven.Blade ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ½ ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Ρ Π·Π°ΡΠΈΡΠΎΠΉ CSRF (ΠΏΠΎΠ΄Π΄Π΅Π»ΠΊΠ° ΠΌΠ΅ΠΆΡΠ°ΠΉΡΠΎΠ²ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ²) ΠΈ XSS (ΠΌΠ΅ΠΆΡΠ°ΠΉΡΠΎΠ²ΡΠΉ ΡΠΊΡΠΈΠΏΡΠΈΠ½Π³). ΠΡΠΎ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΈ ΡΠ΅ΡΡΡΡΡ webjar. ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΡΠ°ΠΉΡΠ΅ Π½Π° ΠΊΠΈΡΠ°ΠΉΡΠΊΠΎΠΌ ΡΠ·ΡΠΊΠ΅. ΠΠ΄Π½Π°ΠΊΠΎ Π² ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΈ GitHub Π΅ΡΡΡ Π°Π½Π³Π»ΠΎΡΠ·ΡΡΠ½Π°Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ.
Dropwizard: Π³ΠΎΡΠΎΠ²ΡΠ΅ ΠΊ ΡΠ°Π±ΠΎΡΠ΅ Π²Π΅Π±-ΡΠ»ΡΠΆΠ±Ρ RESTful
Dropwizard — ΡΡΠΎ Π²ΡΡΠΎΠΊΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½Π°Ρ, Π½ΠΎ ΠΏΡΠΎΡΡΠ°Ρ ΡΡΠ΅Π΄Π° Java Π΄Π»Ρ Π±ΡΡΡΡΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π²Π΅Π±-ΡΠ»ΡΠΆΠ± RESTful.ΠΠ½ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Java.
Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Dropwizard ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ ΠΎΡΠΎΡΠΎ Π·Π°ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π²ΡΠΈΡ ΡΠ΅Π±Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Java, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Π²Π°ΠΌ Π±ΡΡΡΡΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π±Π΅Π· ΠΎΡΠ²Π»Π΅ΠΊΠ°ΡΡΠΈΡ ΡΠ°ΠΊΡΠΎΡΠΎΠ². ΠΠ½ ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΌ ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ Jetty, Google Guava, Logback, Hibernate Validator, Joda Time ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ Java. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Dropwizard ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Jersey, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π²Π΅Π±-ΡΠ΅ΡΠ²ΠΈΡΡ RESTful, ΠΈ Jackson Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ JSON. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ Dropwizard ΠΊΠ°ΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π²ΡΠ΅ ΡΠΏΠΎΠΌΡΠ½ΡΡΡΠ΅ Π²ΡΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ, ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½Π½ΡΠ΅ Π² ΠΎΠ΄ΠΈΠ½ ΠΏΠ°ΠΊΠ΅Ρ.
ΠΡΠ»ΠΈ Π²Ρ Π²ΡΠ±Π΅ΡΠ΅ΡΠ΅ Dropwizard, Π²Π°ΠΌ Π½Π΅ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΡΡΠ°ΡΠΈΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° Π²ΡΠΎΡΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π° Π΄Π»Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ ΠΈΠ»ΠΈ Π²Π΅Π΄Π΅Π½ΠΈΡ ΠΆΡΡΠ½Π°Π»Π°. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠ΅ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. ΠΠΎΡ ΠΏΠΎΡΠ΅ΠΌΡ Dropwizard ΡΠ°ΡΡΠΎ Π½Π°Π·ΡΠ²Π°ΡΡ ΡΠ΄ΠΎΠ±Π½ΠΎΠΉ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΎΠΉ Java. ΠΠ°ΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΡ Π½Π΅ ΡΠ°ΠΊ ΡΠΆ ΠΈ ΡΠ»ΠΎΠΆΠ½ΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ ΡΠΆΠ΅ ΠΏΠΈΡΠ°Π»ΠΈ Java; Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Dropwizard Π΅ΡΡΡ Π΄Π°ΠΆΠ΅ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ Hello World, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΌΠΎΡΡ Π²Π°ΠΌ Ρ ΠΏΠ΅ΡΠ²ΡΡ ΡΠ°Π³ΠΎΠ².
Grails: ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Groovy
Grails — ΡΡΠΎ ΡΡΠ΅Π΄Π° Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ°Ρ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Groovy. Groovy — ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ·ΡΠΊ Π΄Π»Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Java, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΠΉ Π΄Π»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΡΡΠ΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ². ΠΠ³ΠΎ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ Ρ Java, ΠΈ ΠΎΠ½ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½ Π² Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ JVM (Π²ΠΈΡΡΡΠ°Π»ΡΠ½Π°Ρ ΠΌΠ°ΡΠΈΠ½Π° Java).
Π₯ΠΎΡΡ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ Π½Π° Groovy, Grails Ρ ΠΎΡΠΎΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠΌΠΈ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠΌΠΈ Ρ Java, ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Java Development Kit, ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ Java EE, Hibernate ΠΈΠ»ΠΈ Spring.ΠΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌ Grails ΠΏΠΎΡΡΡΠΎΠ΅Π½ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Spring Boot, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΠΈΠ΅ ΡΠ΄ΠΎΠ±Π½ΡΠ΅ Π΄Π»Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠ°ΠΊ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ Spring. ΠΠ΅ΡΠΎΡΡΠ½ΠΎ, ΡΠ°ΠΌΠΎΠ΅ Π»ΡΡΡΠ΅Π΅ Π² Grails — ΡΡΠΎ ΡΠΎ, ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΡΡΠΈΡΡ ΡΠ΅Ρ ΠΆΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² Ρ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΌΠ΅Π½ΡΡΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΌΠΎΠΌ ΠΊΠΎΠ΄Π° — Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΌΠΎΡΠΈ ΡΠ·ΡΠΊΠ° Groovy.
Grails ΡΠ»Π΅Π΄ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°ΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ, ΡΠ°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅, Π° Π½Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ, ΡΠΏΡΡΠΌΡΠ΅ API-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΎΠ±Π»ΡΠ΄Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π΄ΠΎΠ²ΡΡ ΠΏΡΠ°ΠΊΡΠΈΠΊ ΠΈ ΡΠ°Π·ΡΠΌΠ½ΡΠ΅ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΠ½ ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π΅Π½ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠΉ ΠΈ ΡΠ΄ΠΎΠ±Π½ΠΎΠΉ Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅ΠΉ, ΠΏΠΎΡΠ°Π³ΠΎΠ²ΡΠΌΠΈ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π°ΠΌΠΈ ΠΈ ΠΎΠ±ΡΠΈΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ².ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ²ΠΎΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ IDE Grails Π΄Π»Ρ Eclipse, Sublime, Textmate, IntelliJ IDEA ΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌ.
GWT, ΠΈΠ»ΠΈ Google Web Toolkit, — ΡΡΠΎ Π²Π΅Π»ΠΈΠΊΠΎΠ»Π΅ΠΏΠ½Π°Ρ Π²Π΅Π±-ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°, ΡΠΎΠ·Π΄Π°Π½Π½Π°Ρ Google. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, GWT ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΌΠ΅ΡΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Ρ ΠΎΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Java Π΄Π»Ρ ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ Java Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΊΠ°ΠΊ JavaScript Π΄Π»Ρ Π±ΡΠ°ΡΠ·Π΅ΡΠ°.
GWT ΠΏΡΠΎΠΈΠ·Π½ΠΎΡΠΈΡΡΡ ΠΊΠ°ΠΊ Β«gwitΒ», ΠΈ ΡΡΠΎ ΡΡΠ°Π±ΠΈΠ»ΡΠ½Π°Ρ ΠΈ Ρ ΠΎΡΠΎΡΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠ°Ρ ΡΡΠ΅Π΄Π° Java.ΠΠΈΡΡΠΎ Π½Π΅ Π΄ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΡΠΎ Π»ΡΡΡΠ΅, ΡΠ΅ΠΌ Π΅Π³ΠΎ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΈΠ΅ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠ°Ρ Google, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ AdWords, AdSense, Blogger ΠΈ Google Wallet. Π£ Google Web Toolkit Π΅ΡΡΡ Π²ΠΏΠ΅ΡΠ°ΡΠ»ΡΡΡΠΈΠΉ Π²Π΅Π±-ΡΠ°ΠΉΡ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΈ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π²Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ, ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ ΡΡΠ΅Π±Π½ΡΠ΅ ΠΏΠΎΡΠΎΠ±ΠΈΡ, ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²Π° Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ Eclipse.
Π GWT Π·Π°ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ ΡΠΎ, ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΈΡΠ°ΡΡ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π±ΡΠ°ΡΠ·Π΅ΡΠ°, Π½Π΅ Π±ΡΠ΄ΡΡΠΈ ΡΠΊΡΠΏΠ΅ΡΡΠΎΠΌ Π² ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ½ΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΡ , ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ JavaScript ΠΈΠ»ΠΈ Π°Π΄Π°ΠΏΡΠΈΠ²Π½ΡΠΉ Π΄ΠΈΠ·Π°ΠΉΠ½. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ GWT Π²ΠΌΠ΅ΡΡΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² JavaScript, ΠΊΠΎΡΠΎΡΡΠ΅, ΠΊΠ°ΠΊ Π²Ρ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠΆΠ΅ Π·Π°ΠΌΠ΅ΡΠΈΠ»ΠΈ, ΠΏΠΎΡΠ²Π»ΡΡΡΡΡ ΠΈ ΠΈΡΡΠ΅Π·Π°ΡΡ Π½Π° ΡΡΠ½ΠΊΠ΅ ΠΈΠ½ΠΎΠ³Π΄Π° Π½Π° ΡΠ΄ΠΈΠ²Π»Π΅Π½ΠΈΠ΅ Π±ΡΡΡΡΠΎ.GWT ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΠΈΠ½ΡΠ΅ΡΠ½Π°ΡΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΡ, ΠΊΡΠΎΡΡΠ±ΡΠ°ΡΠ·Π΅ΡΠ½Π°Ρ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡΡ, Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π·Π°ΠΊΠ»Π°Π΄ΠΎΠΊ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΡΡΠΎΡΠΈΠ΅ΠΉ.
Hibernate: ΡΡΡΡΠΊΡΡΡΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ
Hibernate — ΡΡΠΎ ΡΡΠ°Π±ΠΈΠ»ΡΠ½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π΄Π΅Π»Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ Π»ΡΡΡΡΡ ΡΠ²ΡΠ·Ρ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ·ΡΠΊΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Java ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΡΠΌΠΈ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ (Π‘Π£ΠΠ).
ΠΠΎΠ³Π΄Π° Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΡΠ·ΡΠΊΠ°ΠΌΠΈ, ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Java, Π²Ρ ΡΡΠΎΠ»ΠΊΠ½Π΅ΡΠ΅ΡΡ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠΎΠΉ Π½Π΅ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΈΠΌΠΏΠ΅Π΄Π°Π½ΡΠ° (ΠΈΠ½ΠΎΠ³Π΄Π° ΡΠ°ΠΊΠΆΠ΅ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΌ Π½Π΅ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ΠΌ ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌ).ΠΠ-ΡΠ·ΡΠΊΠΈ ΠΈ Π‘Π£ΠΠ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ Ρ Π½Π΅ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ΠΌ. Π ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ·ΡΠΊΠΈ ΡΡΡΡΠΊΡΡΡΠΈΡΡΡΡ Π΄Π°Π½Π½ΡΠ΅ ΠΊΠ°ΠΊ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΡΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠ°Π±Π»ΠΈΡΠ½ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ΄Π½Π° ΠΈΠ· ΡΡΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Π½Π΅ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π±ΠΎΠ»ΡΡΠ΅ ΠΊΠ»Π°ΡΡΠΎΠ², ΡΠ΅ΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ ΡΠ°Π±Π»ΠΈΡ Π² ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΠΎΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ .
Hibernate ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²Π°ΠΌ ΡΡΡΡΠΊΡΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ΅ΠΎΠ΄ΠΎΠ»Π΅Π²Π°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π½Π΅ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ Java. ΠΠ½ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΡΡΠΎΡΠ½ΡΡΠ²Π°, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π΄Π°Π½Π½ΡΠ΅, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ / ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠ΅ΡΠ΅ΠΆΠΈΡΡ ΠΏΡΠΎΡΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π».Π₯ΠΎΡΡ Hibernate Π±ΡΠ» ΡΠΎΠ·Π΄Π°Π½ Π΄Π»Ρ ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΡΡ Π±Π°Π· Π΄Π°Π½Π½ΡΡ , Π΅Π³ΠΎ Π½ΠΎΠ²ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π΄Π°Π½Π½ΡΡ NoSQL. ΠΠ½ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΠΎΡΠ»ΠΈΡΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠΉ, ΠΊΠΎΠ½ΡΠΎΠ»Ρ Hibernate ΠΈ ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ .
JavaServer Faces (JSF): ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ²
JavaServer Faces (JSF) ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½ Oracle ΠΊΠ°ΠΊ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² Π΄Π»Ρ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Java. ΠΡΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΡΠ°Π½Π΄Π°ΡΡ ΠΈΠ½ΠΈΡΠΈΠ°ΡΠΈΠ²Ρ Java Community Process (JCP).
ΠΠ΅ΡΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ JavaServer Faces Π±ΡΠ»Π° Π²ΡΠΏΡΡΠ΅Π½Π° Π΅ΡΠ΅ Π² 2004 Π³ΠΎΠ΄Ρ, ΡΠ°ΠΊ ΡΡΠΎ ΡΡΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΡΠ°Π±ΠΈΠ»ΡΠ½Π°Ρ ΡΡΠ΅Π΄Π°. ΠΠ½ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ MVC ΠΈ ΠΈΠΌΠ΅Π΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ½ΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ JavaServer Faces Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΈΠ· ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΡΠΏΡΠ°Π²Π»ΡΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡ ΠΈΡ ΠΊ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°ΠΌ Π΄Π°Π½Π½ΡΡ ΠΈ ΡΠ²ΡΠ·ΡΠ²Π°ΡΡ ΡΠΎΠ±ΡΡΠΈΡ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ, Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ°.
Π‘ΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² JSF ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Facelets, ΡΠΎΠ·Π΄Π°Π½Π½Π°Ρ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ°.Π‘ Facelets Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ XML Π²ΠΌΠ΅ΡΡΠΎ Java Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΉ. ΠΠ΄Π½Π°ΠΊΠΎ Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΄ΡΡΠ³ΠΈΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ XUL (ΡΠ·ΡΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° XML) ΠΈ ΠΎΠ±ΡΡΠ½Π°Ρ Java. ΠΠ΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ JavaServer Faces, ΡΠ°ΠΊΠΆΠ΅ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ°ΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Java EE.
JHipster: Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡ Ρ Spring Boot ΠΈ Angular / React
JHipster — ΡΡΠΎ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²Π°Ρ ΡΡΠ΅Π΄Π° Java (Π²ΡΠΏΡΡΠ΅Π½Π½Π°Ρ Π² 2013 Π³ΠΎΠ΄Ρ), ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ Spring Boot ΠΈ Π΄Π²Π΅ ΡΠ°ΠΌΡΠ΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ½ΡΠ΅ ΡΡΠ΅Π΄Ρ (Angular ΠΈ React) Π² ΠΎΠ΄Π½ΠΎΠΌ ΡΠ΄ΠΎΠ±Π½ΠΎΠΌ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.Π‘ JHipster Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π±ΡΡΡΡΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Java.
Spring Boot ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Spring ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ (ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎ Spring Framework Π½ΠΈΠΆΠ΅ Π² ΡΡΠ°ΡΡΠ΅), ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ. JHipster ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ Π΅Π³ΠΎ Ρ Angular, React ΠΈ Bootstrap Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Π²Π°ΠΌ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΡΡΠ΅ΠΊΠ°. ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΠΊΠ°ΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ JHipster Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡΡΠ΅ΡΡ Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄Π»Ρ Angular ΠΈ React, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ JHipster.
JHipster ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠ±ΠΈΡΠ°ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΡΠΌΠΈ ΡΡΠΈΠ»ΡΠΌΠΈ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ½ΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ½Π°Ρ ΡΠ°ΡΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½Ρ Π² ΠΎΠ΄Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΠΎ-Π²ΡΠΎΡΡΡ , Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½ΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ ΡΠ°ΡΡΡ. JHipster ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΡΠ΅ΡΡΡ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² Π΄Π»Ρ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ°, ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Π² ΠΏΠ°ΠΊΠ΅ΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ DevOps. Π ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ², Π½Π΅ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ Π²Π΅Π΄ΡΡΠΈΠ΅ Π±ΡΠ΅Π½Π΄Ρ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Adobe, Siemens, Bosch, HBO ΠΈ Google, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ JHipster.
MyBatis: ΡΡΡΡΠΊΡΡΡΠ° ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌΠΎΡΡΠΈ Π΄Π»Ρ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ SQL
MyBatis — ΡΡΠΎ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠ°Ρ ΡΡΡΡΠΊΡΡΡΠ° ΠΏΠ΅ΡΡΠΈΡΡΠ΅Π½ΡΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Java, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΠΈ ΡΡΠΊΠΎΡΡΠ΅Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΡΠΌΠΈ (SQL) Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ . Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ ΠΊΠ°ΠΊ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ΅ ΠΠ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΈ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ ΠΈ ΡΡΡΡΠ°Π½ΡΠ΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΎΠΉ.
MyBatis ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΡΡΠΎΠ²Π΅Π½Ρ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΊΠΎΠ΄ΠΎΠΌ Java Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π±Π°Π·ΠΎΠ²ΠΎΠΉ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ SQL.ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ API JDBC (Java Database Connectivity) Π΄Π»Ρ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ°ΠΌ Π΄Π°Π½Π½ΡΡ , ΡΠ°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΡΠ΅ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΈΠ»ΠΈ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΡΠ΅ ΡΠ°Π±Π»ΠΈΡΡ, ΠΈΠ· Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Java. MyBatis ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΡΠΌΠΈ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ Ρ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΌΠ΅Π½ΡΡΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΌΠΎΠΌ ΠΊΠΎΠ΄Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ SQL, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π²ΡΠ΅Π³ΠΎ ΠΎΠ΄Π½Ρ ΡΡΡΠΎΠΊΡ ΠΊΠΎΠ΄Π°.
ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ MyBatis ΠΏΠΎΡ ΠΎΠΆ Π½Π° ΡΡΡΡΠΊΡΡΡΡ Hibernate, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ±Π΅ Π½Π°ΡΠ΅Π»Π΅Π½Ρ Π½Π° ΡΠ»ΡΡΡΠ΅Π½ΠΈΠ΅ ΡΠ²ΡΠ·ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠΎΠ²Π½Π΅ΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ . ΠΠ΄Π½Π°ΠΊΠΎ MyBatis Π½Π΅ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΠΎΠ±ΡΠ΅ΠΊΡΡ Java Π² ΡΠ°Π±Π»ΠΈΡΡ Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ , ΠΊΠ°ΠΊ Hibernate, Π° ΡΠ²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ Java Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°ΠΌΠΈ SQL.Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ SQL Π½Π΅ ΡΠΊΡΡΠ²Π°Π΅ΡΡΡ ΠΎΡ Π²Π°Ρ, ΠΊΠΎΠ³Π΄Π° Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ ΡΠΎ ΡΡΠ΅Π΄ΠΎΠΉ MyBatis, ΠΈ Π²Ρ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ SQL.
Play: Π Π΅Π°ΠΊΡΠΈΠ²Π½Π°Ρ Π²Π΅Π±-ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° ΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½Π°Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Π΄Π»Ρ Π²ΡΡΠΎΠΊΠΎΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΡΡ Java-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ
ΠΠ»Π°ΡΡΠΎΡΠΌΠ° Play ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π»Π΅Π³ΠΊΠΈΠ΅ ΠΈ ΡΠ΄ΠΎΠ±Π½ΡΠ΅ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Π² ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Java ΠΈ Scala Π΄Π»Ρ Π½Π°ΡΡΠΎΠ»ΡΠ½ΡΡ ΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ². Play — Π½Π΅Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΠΌΠΈ, ΠΊΠ°ΠΊ LinkedIn, Samsung, Walmart, The Guardian, Verizon ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ.
Play ΡΠ°ΡΡΠΎ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ Ρ ΠΌΠΎΡΠ½ΡΠΌΠΈ Π²Π΅Π±-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°ΠΌΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Ruby on Rails Π΄Π»Ρ Ruby ΠΈΠ»ΠΈ Django Π΄Π»Ρ Python. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, Play — ΡΡΠΎ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½Π°Ρ ΡΡΠ΅Π΄Π° Java Π² ΡΠΎΠΌ ΡΠΌΡΡΠ»Π΅, ΡΡΠΎ ΠΎΠ½Π° Π½Π΅ ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΡ Java EE. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ ΠΎΠ½ ΠΏΡΠΈΠ·Π²Π°Π½ ΡΡΡΡΠ°Π½ΠΈΡΡ Π²ΡΠ΅ Π½Π΅ΡΠ΄ΠΎΠ±ΡΡΠ²Π° ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎΠΉ Π²Π΅Π±-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π° Java, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΡΠ΅ ΡΠΈΠΊΠ»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΌΠ½ΠΎΠ³ΠΎ Π½Π°ΡΡΡΠΎΠ΅ΠΊ. ΠΠ½ Π±ΠΎΠ»ΡΡΠ΅ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ Π²Π΅Π±-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ ΡΠ·ΡΠΊΠΎΠ² ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² (PHP, Python, Ruby ΠΈ Ρ. Π.), ΠΠ°ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.
ΠΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌ Play ΠΏΠΎΡΡΡΠΎΠ΅Π½ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Akka, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ Java. Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Play ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π°ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π»ΡΡΡΡΡ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΡ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΠΎΡΠΎΠΌΡ, ΡΡΠΎ ΠΎΠ½Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏΡ Π±Π΅Π·Π³ΡΠ°ΠΆΠ΄Π°Π½ΡΡΠ²Π°.
ΠΠ»Π°ΡΡΠΎΡΠΌΠ° Play ΡΡΠ°Π²ΠΈΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π½Π° ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ, ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ ΡΠ°ΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠ° Π³ΠΎΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°, ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅.ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅ (ΠΎΡΠ·ΡΠ²ΡΠΈΠ²ΠΎΠΉ, ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΠΉ, ΡΠ»Π°ΡΡΠΈΡΠ½ΠΎΠΉ ΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΉ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ) Π΄Π»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΈΡ ΠΈ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ².
PrimeFaces: ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π΄Π»Ρ Java EE ΠΈ JavaServer Faces
PrimeFaces — ΠΏΠΎΠΏΡΠ»ΡΡΠ½Π°Ρ Π²Π΅Π±-ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠ±Π»Π΅Π³ΡΠ΅Π½Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Java EE ΠΈ JavaServer Faces (ΡΠΌ. ΠΡΡΠ΅). ΠΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° Fortune 500, Π³ΠΎΡΡΠ΄Π°ΡΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΡΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΈ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ.
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° PrimeFaces Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π»Π΅Π³ΠΊΠ°Ρ. ΠΠ½ ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½ Π² ΠΎΠ΄ΠΈΠ½ ΡΠ°ΠΉΠ» JAR, Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΈ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ. ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ Java-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ Π²Π°ΠΌ Π±ΠΎΠ³Π°ΡΡΠΉ Π½Π°Π±ΠΎΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² (Π±ΠΎΠ»Π΅Π΅ 100), Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ ΡΡΡΡΠΊΡΡΡΡ ΡΠΊΠΈΠ½ΠΎΠ², Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΡΠ΅ΠΌΡ ΠΈ ΠΌΠ°ΠΊΠ΅ΡΡ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ PrimeFaces ΠΏΠΎΡΡΡΠΎΠ΅Π½ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ JavaServer Faces, ΠΎΠ½ Π½Π°ΡΠ»Π΅Π΄ΡΠ΅Ρ Π΅Π³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Π±ΡΡΡΡΠ°Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π² Π»ΡΠ±ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ Java.
ΠΠ° Π²Π΅Π±-ΡΠ°ΠΉΡΠ΅ PrimeFaces Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΉΡΠΈ ΠΎΡΠ»ΠΈΡΠ½ΡΡ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΡ Π²ΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² ΠΈ ΡΠ΅ΠΌ PrimeFaces. ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΏΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌΠΈ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π±ΡΡΡΡΠΎ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ / Π²ΡΡΠ°Π²ΠΈΡΡ Π² ΡΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΈΡ , ΠΊΠΎΠ³Π΄Π° ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΠΎΡ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΌΠ΅Π³Π°ΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρ ΠΊΠΎΡΠ½Π΅Π²ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π²ΠΌΠ΅ΡΡΠ΅.
PrimeFaces ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ Π²Π΅Π»ΠΈΠΊΠΎΠ»Π΅ΠΏΠ½ΡΠΉ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ ΡΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π΄Π²ΠΈΠΆΠΎΠΊ ΡΠ΅ΠΌ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Sass Ρ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ 500 ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌΠΈ, ΠΎΠ±ΡΠ°Π·ΡΠΎΠΌ ΡΠ΅ΠΌΡ ΠΈ Π·Π½Π°ΡΠΊΠ°ΠΌΠΈ ΡΡΠΈΡΡΠΎΠ².Π Π΅ΡΠ»ΠΈ Π²Ρ Π½Π΅ Ρ ΠΎΡΠΈΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ΅ΠΌΡ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ, Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΡΠ΅ΠΌΡ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π° ΠΈΠ»ΠΈ ΠΏΡΠΈΠΎΠ±ΡΠ΅ΡΡΠΈ ΠΏΡΠ΅ΠΌΠΈΡΠΌ-ΡΠ΅ΠΌΡ ΠΈΠ· Π³Π°Π»Π΅ΡΠ΅ΠΈ ΡΠ΅ΠΌ PrimeFaces.
Spark Framework: ΠΌΠΈΠΊΡΠΎ-ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Π΄Π»Ρ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ REST API
Spark Framework — ΡΡΠΎ ΠΌΠΈΠΊΡΠΎΡΡ Π΅ΠΌΠ° ΠΈ ΠΏΡΠ΅Π΄ΠΌΠ΅ΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΡΠ·ΡΠΊ Π΄Π»Ρ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Java ΠΈ Kotlin. Kotlin ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° JVM ΠΈ Π½Π° 100% ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ Ρ Java. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ Spark Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π±Π΅Π· ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡ ΠΈ REST API.
Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ
Micro Π²ΠΏΠ΅ΡΠ²ΡΠ΅ ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ Π½Π° ΡΠ·ΡΠΊΠ°Ρ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π², ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Ruby ΠΈ PHP, ΠΈ Π±ΡΡΡΡΠΎ Π·Π°Π²ΠΎΠ΅Π²Π°Π»ΠΈ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΡ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΈΡ ΠΎΡΠΈΠ΅Π½ΡΠ°ΡΠΈΠΈ Π½Π° ΡΠΊΠΎΡΠΎΡΡΡ ΠΈ ΠΏΡΠΎΡΡΠΎΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. Spark Π±ΡΠ» Π²Π΄ΠΎΡ Π½ΠΎΠ²Π»Π΅Π½ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠΌ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Sinatra Π΄Π»Ρ Ruby ΠΈ Π²ΠΏΠ΅ΡΠ²ΡΠ΅ Π²ΡΠΏΡΡΠ΅Π½ Π² 2011 Π³ΠΎΠ΄Ρ. ΠΡΠΎ Π½Π΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ MVC, Π½ΠΎ ΠΎΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°ΡΡ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΌΡ ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΡ. ΠΠ°ΠΊ ΠΈ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΌΠΈΠΊΡΠΎ-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ², ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ Π½Π΅Π±ΠΎΠ»ΡΡΡΡ ΠΊΠΎΠ΄ΠΎΠ²ΡΡ Π±Π°Π·Ρ, ΡΡΠ΅Π±ΡΠ΅Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΈ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠ°Π±Π»ΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.
Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΈ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Spark Π²ΡΠ΅Π³ΠΎ Π·Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΌΠΈΠ½ΡΡ.ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠ΅ Jetty, Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΌ Π² ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ. ΠΠ΄Π½Π°ΠΊΠΎ Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΅Π³ΠΎ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠ°ΠΌΠΈ Java. Π‘ΠΎΠ³Π»Π°ΡΠ½ΠΎ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΌΡ ΠΎΠΏΡΠΎΡΡ Spark, Π±ΠΎΠ»Π΅Π΅ 50% ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ REST API, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΊΠ°ΠΊ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. Spark ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ Π²ΡΡΠΎΠΊΠΈΠΌ ΡΡΠ°ΡΠΈΠΊΠΎΠΌ, ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡΠΈΠ΅ Π±ΠΎΠ»Π΅Π΅ 10 000 ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π² Π΄Π΅Π½Ρ.
Spring Framework: ΡΡΠ΅Π΄Π° Java-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ
Spring Framework, Π²Π΅ΡΠΎΡΡΠ½ΠΎ, ΡΠ°ΠΌΡΠΉ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΉ Java-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Ρ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠΉ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠΎΠΉ ΠΈ Π°ΠΊΡΠΈΠ²Π½ΡΠΌ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎΠΌ Π²ΠΎΠΊΡΡΠ³ Π½Π΅Π΅.ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Java-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π²Π΅Π±-ΡΠ»ΡΠΆΠ±Ρ ΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ.
Spring Framework Π½Π°ΡΠΈΠ½Π°Π»Π°ΡΡ ΠΊΠ°ΠΊ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, Π½ΠΎ Ρ Π³ΠΎΠ΄Π°ΠΌΠΈ ΠΏΡΠ΅Π²ΡΠ°ΡΠΈΠ»Π°ΡΡ Π² ΠΏΠΎΠ»Π½ΠΎΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠ½ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²Π°ΠΌ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΎΠ±ΡΠΈΡ Π·Π°Π΄Π°Ρ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ. ΠΠΎΠΌΠΈΠΌΠΎ Java, Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Kotlin ΠΈ Groovy, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π° Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ Java.
Spring Framework ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΈΠ½Π²Π΅ΡΡΠΈΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (IoC), ΡΠΎΠ³Π»Π°ΡΠ½ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΡΡΡΡΠΊΡΡΡΠ° ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΌ Π½Π° Π·Π°ΠΊΠ°Π· ΠΊΠΎΠ΄ΠΎΠΌ (Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΊΠΎΠ΄ ΠΎΠ±ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΊ Π΄ΡΡΠ³ΠΈΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΎΠ±ΡΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ). Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ»Π°Π±ΠΎΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π΄Π»Ρ ΡΠ²ΠΎΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Spring.
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ Spring Framework ΠΎΡΠ»ΠΈΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Java ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ, Ρ Π½Π΅Π³ΠΎ Π΅ΡΡΡ ΠΊΡΡΡΠ°Ρ ΠΊΡΠΈΠ²Π°Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ.ΠΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ ΡΡΠΎ ΡΠΈΡΠΎΠΊΠ°Ρ ΡΡΡΡΠΊΡΡΡΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ·Π²Π°Π½Π° ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΡΡΠΎΠ²Π½Ρ ΠΏΡΠ΅Π΄ΠΏΡΠΈΡΡΠΈΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ, Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ, ΡΠ±ΠΎΡΠΊΠΈ ΠΈ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ ΡΡΠ΅Π±ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ°Π³ΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π΅ Π·Π°Ρ ΠΎΡΠΈΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Π½Π°Π΄ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ. Spring Boot (Π² ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ Spring Framework) ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Spring Π±ΡΡΡΡΠ΅Π΅ ΠΈ Ρ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΠΌΠ΅Π½ΡΡΠ΅ΠΉ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ.
Struts: ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° MVC Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Java ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ
Struts — Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΡΠ°ΡΡΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ, Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π»ΡΠ΄ΠΈ Π΄ΠΎ ΡΠΈΡ ΠΏΠΎΡ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΎ Π½Π΅ΠΌ ΡΡΠΎΠΈΡ ΡΠΏΠΎΠΌΡΠ½ΡΡΡ Π² ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅.
Struts — ΡΡΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½Π°Ρ ΡΡΠ΅Π΄Π° Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Java, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠ°Ρ ΠΈ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅ΠΌΠ°Ρ Apache Software Foundation. ΠΡΠΎ Π½Π°Π΄Π΅ΠΆΠ½Π°Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Ρ ΠΎΠ±ΡΠΈΡΠ½ΡΠΌ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎΠΌ, ΠΊΠΎΡΠΎΡΡΡ ΡΠ°ΡΡΠΎ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ ΡΠΎ Spring Framework. Struts ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Java-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Ρ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
ΠΠ½ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ MVC ΠΈ ΠΈΠΌΠ΅Π΅Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ². ΠΠ»Π°Π³ΠΈΠ½Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠ°ΡΡΠΈΡΡΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π΄Π»Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΠ»Π°Π³ΠΈΠ½Ρ Struts — ΡΡΠΎ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ JAR. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΎΠ½ΠΈ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΡ, ΠΈ Π²Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΈΡ Π² ΠΏΡΡΡ ΠΊ ΠΊΠ»Π°ΡΡΠ°ΠΌ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠ»Π°Π³ΠΈΠ½Ρ Π²Ρ ΠΎΠ΄ΡΡ Π² ΡΠΎΡΡΠ°Π² ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° (ΠΏΠ»Π°Π³ΠΈΠ½ JSON, ΠΏΠ»Π°Π³ΠΈΠ½ REST, ΠΏΠ»Π°Π³ΠΈΠ½ Config Browser ΠΈ Ρ. Π.), Π ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΠΈΠ· ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ².
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ Struts Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΠΌΠΈ Java Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ Π²ΡΡΡΠΎΠ΅Π½Ρ Π² ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ.ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠ»Π°Π³ΠΈΠ½ Spring Π΄Π»Ρ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΈΠ»ΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ Hibernate Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ. Struts ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠ΅ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ JavaServer Pages ΠΈΠ»ΠΈ HTML Ρ Angular.
ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π²ΠΎ Π²Π½Π΅ΡΠ½Π΅ΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅, Struts ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ Π»ΡΡΡΠΈΠΌ Π²ΡΠ±ΠΎΡΠΎΠΌ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ. ΠΠΌΠ΅ΡΡΠΎ ΡΡΠΎΠ³ΠΎ Π²Π°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΈΠ·ΡΡΠΈΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Ρ Π΄ΡΡΠ³ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΎΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Tapestry ΠΈΠ»ΠΈ Wicket (ΡΠΌ. ΠΠ±Π° Π²Π°ΡΠΈΠ°Π½ΡΠ° Π½ΠΈΠΆΠ΅).Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΡΠΎ Struts Π½Π΅Π΄Π°Π²Π½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΠ» ΠΏΠ»ΠΎΡ ΡΡ ΡΠ΅ΠΏΡΡΠ°ΡΠΈΡ Π² ΠΏΡΠ΅ΡΡΠ΅ ΠΈΠ·-Π·Π° Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠ΅ΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, ΠΎ ΠΊΠΎΡΠΎΡΡΡ Π²Π°ΠΌ Π²ΡΠ΅ Π΅ΡΠ΅ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ.
Tapestry: ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° Π΄Π»Ρ Π²ΡΡΠΎΠΊΠΎΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ
Tapestry — ΡΡΠΎ ΠΎΡΠ½ΠΎΠ²Π°Π½Π½Π°Ρ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°Ρ ΡΡΠ΅Π΄Π° Java, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠΉ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΡΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ³ΠΎ ΠΎΡΠΈΠ΅Π½ΡΠ°ΡΠΈΡ Π½Π° ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π΄Π΅Π»Π°Π΅Ρ Π΅Π³ΠΎ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ½ΠΎ ΠΏΠΎΡ ΠΎΠΆΠΈΠΌ Π½Π° JavaServer Faces ΠΈ ΡΡΠ΅Π΄Ρ Wicket. ΠΠ°ΠΊ ΠΈ Struts, Tapestry ΡΠ°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ Apache Software Foundation.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΈΡΠ°ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Tapestry ΠΊΠ°ΠΊ ΠΏΡΠΎΡΡΡΠ΅ ΡΡΠ°ΡΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ Java (POJO). Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊΠΎ Π²ΡΠ΅ΠΉ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ΅ Java ΠΈΠ· ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°. ΠΠΎΠΌΠΈΠΌΠΎ Java, Tapestry ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Groovy ΠΈ Scala ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΡΠ΅ΡΡΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΡΠ΅Π΄Π°ΠΌΠΈ Java, ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Hibernate ΠΈ Spring. ΠΠΎΠ±Π΅Π»Π΅Π½ Π±ΡΠ» ΡΠΎΠ·Π΄Π°Π½ Ρ ΡΠ°ΡΡΠ΅ΡΠΎΠΌ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ; ΠΏΠΎΡΡΠΎΠΌΡ ΠΎΠ½ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ°ΠΊΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠ° ΠΊΠ»Π°ΡΡΠΎΠ² Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, ΠΎΡΡΠ΅ΡΡ ΠΎΠ± ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡΡ , ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Ajax, Π° ΡΠ°ΠΊΠΆΠ΅ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΈ ΡΠ°Π±Π»ΠΎΠ½Ρ.
Tapestry ΡΠ°ΠΊΠΆΠ΅ ΡΠ΄ΠΎΠ±Π΅Π½ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ².ΠΠ½ ΠΈΠΌΠ΅Π΅Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΡΠΈΠ»ΠΈΡΡ Π΄Π»Ρ ΠΎΠ±Π»Π΅Π³ΡΠ΅Π½ΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ΅ΡΠ΅Π· ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (TDD) ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Selenium. Tapestry ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ°Ρ , ΡΠ°ΠΊ ΠΈ Π½Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠ°Ρ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ². ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Tapestry, Π±ΡΡΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΡΡΠ΄Ρ ΠΏΠ΅ΡΠ΅Π΄ΠΎΠ²ΡΡ ΠΏΡΠ°ΠΊΡΠΈΠΊ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΠΊΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ², Π°Π³ΡΠ΅Π³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠΆΠ°ΡΠΈΠ΅ JavaScript, Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠ΅ ΡΠΆΠ°ΡΠΈΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ GZip ΠΈ Π΄ΡΡΠ³ΠΈΠ΅.
Vaadin: ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ Π°ΠΊΡΠ΅Π½ΡΠΎΠΌ Π½Π° UX, Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΡ ΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΡΡΡ
Vaadin ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²Π°ΠΌ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π΄Π»Ρ ΡΠΏΡΠΎΡΠ΅Π½Π½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π° Java.ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠ· Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, UX ΠΈ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΡ.
Π‘Π°ΠΌΠΎΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎΠ΅, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π·Π½Π°ΡΡ ΠΎ Vaadin, — ΡΡΠΎ ΡΠΎ, ΡΡΠΎ Π΅Π³ΠΎ Π²ΡΠΏΡΡΠΊ ΠΎΡ ΠΈΡΠ½Ρ 2018 Π³ΠΎΠ΄Π° Π±ΡΠ» Π½Π°ΡΡΠΎΠ»ΡΠΊΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌ, ΡΡΠΎ Π΄Π°ΠΆΠ΅ ΠΊΡΡΠΏΠ½ΡΠ΅ Π‘ΠΠ ΡΠΎΠΎΠ±ΡΠΈΠ»ΠΈ ΠΎΠ± ΡΡΠΎΠΌ. Vaadin 10 ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΠΏΠΎ-Π½ΠΎΠ²ΠΎΠΌΡ: ΠΎΠ½ Π΄Π°Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ ΠΏΡΡΠΌΠΎΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ DOM ΠΈΠ· Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ Java. Π Π½ΠΎΠ²ΠΎΠΌ Π²ΡΠΏΡΡΠΊΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° Vaadin ΡΠ°Π·Π΄Π΅Π»ΠΈΠ»Π° ΡΠ°Π½Π΅Π΅ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ½ΡΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π½Π° Π΄Π²Π΅ ΡΠ°ΡΡΠΈ.ΠΠ½ ΠΈΠΌΠ΅Π΅Ρ ΠΎΠ±Π»Π΅Π³ΡΠ΅Π½Π½ΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Java ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Vaadin Flow, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΡ ΠΈ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΡΠ΅ΡΠ²Π΅Ρ-ΠΊΠ»ΠΈΠ΅Π½Ρ, Π° ΡΠ°ΠΊΠΆΠ΅ Π½Π°Π±ΠΎΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Ρ Π½Π° ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΠ΅ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠ°ΠΌ ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° ΠΈ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΡΡΠΈ; ΠΎΠ½ΠΈ Π±ΡΠ»ΠΈ ΠΏΠΎΡΡΡΠΎΠ΅Π½Ρ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ°Ρ Π²Π΅Π±-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ². ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Vaadin Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π»ΡΠ±ΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΠΎΠΉ, ΡΠ°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ React, Angular ΠΈΠ»ΠΈ Vue. Π‘ΠΎΠ·Π΄Π°ΡΠ΅Π»ΠΈ ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΡΡ ΠΈΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΡΡΠΎΠΈΡΠ΅Π»ΡΠ½ΡΡ Π±Π»ΠΎΠΊΠΎΠ² Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ΅ΡΡΠΈΠ²Π½ΡΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ²ΠΎΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΡΠ΅ΠΌΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Vaadin ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π²Π΅ Π³ΠΎΡΠΎΠ²ΡΠ΅ ΡΠ΅ΠΌΡ Vaadin: Lumo (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ) ΠΈ Material.
Vaadin Flow ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²Π°ΠΌ Π²ΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠΉ Java API Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠΈ ΡΠ΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ Π°ΡΠΏΠ΅ΠΊΡΠ°ΠΌΠΈ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΎΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΠ΅ΡΠ²Π΅Ρ-ΠΊΠ»ΠΈΠ΅Π½Ρ ΡΠ΅ΡΠ΅Π· WebSockets Π΄ΠΎ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠΈ Π΄Π°Π½Π½ΡΡ . ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Flow ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° JVM, Ρ Π²Π°Ρ Π΅ΡΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊΠΎ Π²ΡΠ΅ΠΉ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ΅ Java, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Spring Boot. Flow ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Kotlin ΠΈΠ»ΠΈ Scala.
Vert.x: ΡΡΠ΅Π΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Polyglot, ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠ°Ρ ΡΠΎΠ±ΡΡΠΈΡΠΌΠΈ, Π΄Π»Ρ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ Java
ΠΠ΅ΡΡ.x — ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡΠ·ΡΡΠ½ΡΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΉ Π½Π° Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ Java. ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΡΠ°ΠΊΠΈΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΊΠ°ΠΊ Java, JavaScript, Groovy, Ruby, Scala ΠΈ Kotlin. ΠΠ³ΠΎ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠ°Ρ ΡΠΎΠ±ΡΡΠΈΡΠΌΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ ΠΎΡΠΎΡΠΎ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΡΡΡΡ Π΄Π°ΠΆΠ΅ ΠΏΡΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΡ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΡ ΡΠ΅ΡΡΡΡΠ°Ρ .
Vert.x ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Eclipse Foundation, ΡΠ°ΠΌΡΠΌ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠΌ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ Eclipse IDE Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π° Java. Π ΠΊΡΠΎ ΠΌΠΎΠ³ Π·Π½Π°ΡΡ ΠΎ Java Π±ΠΎΠ»ΡΡΠ΅, ΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΡΠ΅Π»Ρ Eclipse? ΠΡΠΊΠ²Π° Β«xΒ» Π² Vert.x ΠΎΡΠ½ΠΎΡΠΈΡΡΡ ΠΊ Π΅Π³ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΡΠ·ΡΡΠ½ΠΎΠΌΡ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΡ, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΈΡΠ°ΡΡ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠΉ ΠΊΠΎΠ΄ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ°Π·Π½ΡΡ ΡΠ·ΡΠΊΠ°Ρ . ΠΠ½ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΈΠ΄ΠΈΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ API Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Vert.x ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠΎΠΉ ΡΠΎΠ±ΡΡΠΈΡΠΌΠΈ ΠΈ Π½Π΅Π±Π»ΠΎΠΊΠΈΡΡΡΡΠ΅ΠΉ ΡΡΠ΅Π΄ΠΎΠΉ, ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠΎΡΠΎΠΊΠΎΠ². Vert.x ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π»Π΅Π³ΠΊΠΈΠΉ, Π΅Π³ΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π²Π΅ΡΠΈΡ Π²ΡΠ΅Π³ΠΎ ΠΎΠΊΠΎΠ»ΠΎ 650 ΠΠ. ΠΠ½ ΠΈΠΌΠ΅Π΅Ρ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π°ΠΌ Π½ΡΠΆΠ½Ρ, ΡΡΠΎΠ±Ρ Π²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡΡΠ°Π²Π°Π»ΠΎΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΡΠ΄ΠΎΠ±Π½ΡΠΌ.Vert.x — ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΠΉ Π²ΡΠ±ΠΎΡ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π»Π΅Π³ΠΊΠΈΠ΅, Ρ ΠΎΡΠΎΡΠΎ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΡΠ΅ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡ.
Wicket: ΡΡΡΡΠΊΡΡΡΠ° Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Π΄Π»Ρ ΠΏΡΡΠΈΡΡΠΎΠ²
Wicket — ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½Π°Ρ JavaServer Faces ΠΈ Tapestry. ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΈΡΠ°ΡΡ ΡΠ»Π΅Π³Π°Π½ΡΠ½ΡΠ΅, ΡΠ΄ΠΎΠ±Π½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΈΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Java ΠΈ HTML. Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Apache Software Foundation, ΠΊΠ°ΠΊ ΠΈ Struts ΠΈ Tapestry.
ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ Wicket ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ½ΡΡ ΡΡΡΡΠΊΡΡΡΡ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Wicket ΡΠΎΡΡΠΎΡΡ ΠΈΠ· ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΡΡΡΠ°Π½ΠΈΡ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ, ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΡΡΡΠ»ΠΊΠΈ, ΡΠΎΡΠΌΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅.ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Wicket ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠ΅Π½ΠΎ Π²ΠΎΠΊΡΡΠ³ POJO, ΠΏΠΎΡΡΠΎΠΌΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΡΠ°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΡΡΡΡ ΠΎΠ±ΡΡΠ½ΡΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ Java Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ, ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΡ ΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅. ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½Ρ Π² ΠΏΠ°ΠΊΠ΅ΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ Π² Π½ΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ CSS ΠΈ JavaScript.
Wicket ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΠ½Π°ΡΠΈΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π²Π°ΡΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΡΡΠ°Π½ΠΈΡΡ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Ρ Π³ΠΎΡΠΎΠ²ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ 25 ΡΠ·ΡΠΊΠΎΠ². ΠΠ³ΠΎ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Ajax ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ ΡΠ°ΡΡΠΈ Π²Π°ΡΠ΅ΠΉ ΡΡΡΠ°Π½ΠΈΡΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ, Π½Π΅ ΡΡΠ΅Π±ΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ΄Π° JavaScript.Wicket ΡΠ°ΠΊΠΆΠ΅ ΡΠ΄Π΅Π»ΡΠ΅Ρ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΉ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ URL-Π°Π΄ΡΠ΅ΡΠΎΠ². ΠΡΡΠΈ ΠΊ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌ Π·Π°Π²ΠΈΡΡΡ ΠΎΡ ΡΠ΅Π°Π½ΡΠ°, Π° URL-Π°Π΄ΡΠ΅ΡΠ° Π½Π΅ ΡΠ°ΡΠΊΡΡΠ²Π°ΡΡ ΠΊΠΎΠ½ΡΠΈΠ΄Π΅Π½ΡΠΈΠ°Π»ΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. ΠΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΠΊΠ°ΠΊ Wicket ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ, Π·Π°Π³Π»ΡΠ½ΠΈΡΠ΅ Π² Π±Π»ΠΎΠ³ Built with Apache Wicket, Π³Π΄Π΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ²ΠΈΠ΄Π΅ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Ρ ΠΎΡΠΎΡΠΈΡ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠ².
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
ΠΠΎΠ³Π΄Π° Π΄Π΅Π»ΠΎ Π΄ΠΎΡ ΠΎΠ΄ΠΈΡ Π΄ΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² Java, Π±ΡΠ΄ΡΡΠ΅ ΠΎΡΠΊΡΡΡΡ ΠΈ ΠΈΡΡΠ»Π΅Π΄ΡΠΉΡΠ΅, ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· Π½ΠΈΡ Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π²Π°Ρ. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠ°ΠΊ ΠΌΠ½ΠΎΠ³ΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄ΡΡ Π²Π°ΡΠ΅ΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠΎ ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ, ΡΡΠΎΠ±Ρ ΠΎΡΠ΅Π½ΠΈΡΡ ΡΠ²ΠΎΠΈ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΠΈ.
ΠΡΡΠ΅ΡΡ ΠΎ ΡΠ±ΠΎΡΡ ΠΈ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΠΎΡΠΈΠ±ΠΎΠΊ
Raygun Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΡΡΡΠΏΠ½Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ raygun4java. Raygun4java — ΡΡΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π»Π΅Π³ΠΊΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² ΡΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Java, ΡΡΠΎ Π·Π°ΡΠ΅ΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ Π²Π°ΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°ΡΡ Π²ΡΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π½Π° ΠΏΠ°Π½Π΅Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Raygun. Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π±Π΅Π·Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π½Π°, Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π²Π°ΡΠ΅Π³ΠΎ ΡΠ°ΠΉΡΠ° Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π²ΡΠ΅Π³ΠΎ 5 ΠΌΠΈΠ½ΡΡ. ΠΠΎΠ΄ΠΏΠΈΡΠΈΡΠ΅ΡΡ Π½Π° Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΡ 14-Π΄Π½Π΅Π²Π½ΡΡ ΠΏΡΠΎΠ±Π½ΡΡ Π²Π΅ΡΡΠΈΡ.
.
Java-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ UI-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ — DZone Java
Π ΡΠ΅Π³ΠΎΠ΄Π½ΡΡΠ½Π΅ΠΉ ΡΡΠ΅Π΄Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ², ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΡΠ±ΠΈΡΠ°ΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π²Π½Π΅ΡΠ½ΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ ΠΈΠ»ΠΈ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ (UI).
ΠΠ΅Π΄Π°Π²Π½ΠΎ Ρ ΡΠ°Π·Π³ΠΎΠ²Π°ΡΠΈΠ²Π°Π» Ρ Π΄ΡΡΠ³ΠΎΠΌ ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°. ΠΠ½ ΡΠ°ΠΊΠΆΠ΅ Π±ΡΠ» ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠΌ Ρ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΊΠ°ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΈΡΠ°Π»ΠΎΡΡ ΡΠ°ΠΉΠ½ΡΠΌ ΠΈΡΠΊΡΡΡΡΠ²ΠΎΠΌ (ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ ΡΠ΅ ΠΈΠ· Π½Π°Ρ, ΠΊΡΠΎ ΡΡΠΈΠΌ Π·Π°Π½ΠΈΠΌΠ°Π»ΡΡ, ΡΡΠΈΡΠ°Π»ΠΈΡΡ ΠΡΠ½Π΄Π°Π»ΡΡΠΎΠΌ Π‘Π΅ΡΡΠΌ, Π»ΠΈΡΠΎΠΌ ΠΊ Π»ΠΈΡΡ Ρ ΠΠ°Π»ΡΠΎΠ³ΠΎΠΌ). Π ΠΌΠΎΠΆΠ΅Ρ, ΠΌΡ ΠΏΡΠΎΡΡΠΎ ΡΠ°ΠΊ ΡΠ΅Π±Ρ Π²ΠΈΠ΄Π΅Π»ΠΈ. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΌΡ ΠΎΠ±Π° Π΄ΠΎΠ»Π³ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ Π±ΡΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°ΠΌΠΈ Π½Π° Java.
ΠΡ ΠΎΠ±Π° ΡΠ΅ΡΠΎΠ²Π°Π»ΠΈ Π½Π° ΡΠΎ, ΡΡΠΎ ΡΡΠΎ Π±ΡΠ» ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄Π° ΠΎΡ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° Π½Π°ΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π½Π° Java Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΎΠΌ Π½Π° JavaScript Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°.
Π‘ΡΠ΄Ρ ΠΏΠΎ ΡΠ°Π·Π³ΠΎΠ²ΠΎΡΠ°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ Ρ Π²ΠΈΠ΄Π΅Π» Π² ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅, Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΈΡΠ°ΡΠ΅Π»Π΅ΠΉ Π½Π°Π³ΡΠ΅Π²Π°ΡΡ ΡΠ²ΠΎΠΈ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ, ΡΡΠΎΠ±Ρ ΡΠΏΡΠ΅ΠΊΠ½ΡΡΡ ΠΌΠ΅Π½Ρ Π·Π° ΡΠΎ, ΡΡΠΎ Ρ ΠΆΠ°Π»ΡΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ Π½Π° JavaScript. ΠΠ΅ΡΠΆΠΈΡΠ΅ ΠΊΠ»ΡΡΠΈ Π² ΡΠ΅ΠΊΡΠ΅ΡΠ΅, ΠΈ ΠΌΡ, ΠΈ Π½Π°ΡΠΈ ΡΠΎΡΡΡΠ΄Π½ΠΈΠΊΠΈ ΠΈΠΌΠ΅ΡΡ ΠΎΠΏΡΡ ΡΠ°Π±ΠΎΡΡ Ρ JavaScript ΠΈ Π»ΡΠ±ΡΠΌΠΈ Π΅Π³ΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°ΠΌΠΈ Π΄Π»Ρ Π½Π°ΡΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ² ΠΈ Ρ ΡΠ΄ΠΎΠ²ΠΎΠ»ΡΡΡΠ²ΠΈΠ΅ΠΌ ΠΏΠΈΡΡΡ Π½Π° Π½ΠΈΡ . ΠΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ JavaScript — Π½Π΅ Π²ΡΠ΅Π³Π΄Π° Π»ΡΡΡΠΈΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄.
Π ΡΡΠΎΠΌ ΠΏΠΎΡΡΠ΅ ΠΌΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΠΌ Π΄Π²Π΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π²Π°ΠΌ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π½Π° Java: GWT ΠΈ Vaadin.
ΠΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Java Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°?
Π Π°Π·Π³ΠΎΠ²ΠΎΡ Π²Π΅ΡΠ½ΡΠ»ΡΡ ΠΊΠΎ ΠΌΠ½Π΅, ΠΊΠΎΠ³Π΄Π° Ρ ΡΠ°Π·Π³ΠΎΠ²Π°ΡΠΈΠ²Π°Π» Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ — Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΌΠ°Π³Π°Π·ΠΈΠ½ΠΎΠΌ, ΡΠΎΡΡΠΎΡΡΠΈΠΌ Π²ΡΠ΅Π³ΠΎ ΠΈΠ· ΠΏΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² ΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΠΎΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΠΊΠΆΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π»ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. ΠΠ½ΠΈ ΡΠ΅ΡΠΈΠ»ΠΈ, ΡΡΠΎ Π½Π΅ Ρ ΠΎΡΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠ²ΠΎΠΈ ΠΏΡΠΎΠ΅ΠΊΡΡ Π½Π° Π΄Π²ΡΡ ΡΠ°Π·Π½ΡΡ ΡΠ·ΡΠΊΠ°Ρ . ΠΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡ ΡΠ΄Π΅Π»Π°Π»Π° ΡΡΠ°Π½Π΄Π°ΡΡ Π½Π° Java, ΠΈ ΠΎΠ½ΠΈ Ρ ΠΎΡΠ΅Π»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ΅ ΠΆΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΈ ΠΎΠ±ΡΠ°Π· ΠΌΡΡΠ»Π΅Π½ΠΈΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΌΠΎΡΠ½ΡΡ ΠΈ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² Π΄Π»Ρ ΡΠ²ΠΎΠΈΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
Π― Π·Π°ΠΌΠ΅ΡΠΈΠ», ΡΡΠΎ Π² Π±ΠΎΠ»Π΅Π΅ ΠΊΡΡΠΏΠ½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΠ°Π·Π΄Π΅Π»ΡΡΡΡΡ, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠΈΡΠ°ΡΡ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΡΡΡ Π½Π° ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅, Π° Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Π½Π°Π΄ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΌ ΠΈΠ»ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ. ΠΠΎΠ³Π΄Π° ΡΠ°Π±ΠΎΡΠ° ΠΎΠ΄ΠΎΠ±ΡΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, Ρ ΡΠ°ΡΡΠΎ Π²ΠΈΠΆΡ, ΠΊΠ°ΠΊ ΠΎΠ΄Π½ΠΈ ΠΈ ΡΠ΅ ΠΆΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Π±Π΅ΡΡΡ Π½Π° ΡΠ΅Π±Ρ ΠΈΠ»ΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π±ΠΎΠ»ΡΡΡΡ ΡΠ°ΡΡΡ ΡΡΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ JavaScript, Π° Π΄ΡΡΠ³ΠΈΠ΅ Π±Π΅ΡΡΡ Π½Π° ΡΠ΅Π±Ρ Π±ΡΠΊΡΠ½Π΄.
Π― Π½Π΅ Π³ΠΎΠ²ΠΎΡΡ, ΡΡΠΎ ΡΡΠΎ ΠΏΠ»ΠΎΡ ΠΎ; Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, Π²ΡΠ΅ ΠΊΠ°ΠΊ ΡΠ°Π· Π½Π°ΠΎΠ±ΠΎΡΠΎΡ. ΠΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΠΎ Π² ΡΠ²ΠΎΠ΅ΠΉ Π·ΠΎΠ½Π΅ ΠΊΠΎΠΌΡΠΎΡΡΠ°, Π½ΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°ΠΊΠΆΠ΅ Π·Π½Π°Π΅Ρ, ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅, ΠΈ ΠΌΠΎΠΆΠ΅Ρ Π²ΠΎΠΉΡΠΈ Π² ΡΡΡ Π·ΠΎΠ½Ρ, Π΅ΡΠ»ΠΈ ΠΈΠ»ΠΈ ΠΊΠΎΠ³Π΄Π° ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ.ΠΠ»Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ ΠΌΠ°Π³Π°Π·ΠΈΠ½ΠΎΠ² ΡΡΠΎ Π½Π΅ Π²Π°ΡΠΈΠ°Π½Ρ. Π§Π°ΡΡΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ Π½Π°ΠΏΠΈΡΠ΅Ρ ΠΊΠΎΠ΄ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π΄ΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈ.
Π ΡΡΠ°ΡΡΡΡ, Π΅ΡΡΡ Π²Π°ΡΠΈΠ°Π½ΡΡ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π½Π° ΡΠΎΠΌ ΠΆΠ΅ ΡΠ·ΡΠΊΠ΅, ΡΡΠΎ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ½Π°Ρ ΡΠ°ΡΡΡ, Π΅ΡΠ»ΠΈ ΡΡΠΈΠΌ ΡΠ·ΡΠΊΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ Java. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΈΠ· Π½ΠΈΡ .
GWT
Google Web Toolkit ΠΈΠ»ΠΈ GWT — ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ.
Π― Π΄ΠΎΠ±ΠΈΠ»ΡΡ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΡΡΠΏΠ΅Ρ Π° Ρ GWT Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅, ΠΊΠΎΡΠΎΡΡΠΉ Ρ Π½Π°ΡΠ°Π» ΠΎΠΊΠΎΠ»ΠΎ 8 Π»Π΅Ρ Π½Π°Π·Π°Π΄ ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ Π΄ΠΎ ΡΠΈΡ ΠΏΠΎΡ.GWT ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ» ΠΌΠ½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΠΎΡΡΡΠΎΠΈΡΡ Π»ΠΎΠ³ΠΈΠΊΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π»Ρ ΠΎΠ΄Π½ΠΎΡΡΡΠ°Π½ΠΈΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΌ Java-ΠΊΠΎΠ΄Π΅. ΠΠ½ ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Ρ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠΌ Eclipse. Π― Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» Π΅Π³ΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» Netbeans Π΄Π»Ρ ΡΠ²ΠΎΠ΅ΠΉ ΡΡΠ΅Π΄Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, Π½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Eclipse ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° ΠΊΠΎΠΌΠ°Π½Π΄, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ.
ΠΠ½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ ΡΠ°Π·Π±ΠΈΡΡ Π»ΠΎΠ³ΠΈΠΊΡ Π΄Π»Ρ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΠΎΠ»Ρ) Π½Π° ΠΊΠ»Π°ΡΡΡ ΠΈΠ»ΠΈ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΡΠΎΡΠ½ΠΎ ΡΠ°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΡ Π² ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅. ΠΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ Ρ Π»Π΅Π³ΠΊΠΎ ΡΠΌΠΎΠ³ ΡΠΎΠ·Π΄Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² Ρ ΠΏΠΎΡ ΠΎΠΆΠΈΠΌΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌΠΈ.ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½Π°Ρ ΡΠ΅Π°Π»ΡΠ½Π°Ρ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΌΠ½Π΅ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΡΡΠΎΠ»ΠΊΠ½ΡΡΡΡΡ, Π·Π°ΠΊΠ»ΡΡΠ°Π»Π°ΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΡΠΉ ΡΠΎΠ±ΡΡΠΈΡΠΌΠΈ, ΡΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ Π²Π΅Π±-ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠΉ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΠΉ ΠΊΠΎΠ΄.
Π£ GWT Π΅ΡΡΡ Π΄Π²Π° ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠ°. ΠΠ΅ΡΠ²ΡΠΉ — Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. GWT Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΠΊ ΠΏΡΠΎΡΠ΅ΡΡΡ ΡΡΠ°ΠΏ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠ΅Π±ΡΠ΅Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΠ»Π°ΡΡΡ GWT, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ Π½Π° Java, Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Ρ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ JavaScript. Π― Π²ΠΈΠ΄Π΅Π» Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΆΠ°Π»ΠΎΠ± Π½Π° Π²ΡΠ΅ΠΌΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π° ΡΡΠΎ ΡΡ ΠΎΠ΄ΠΈΡ.
ΠΠΎ-Π²ΡΠΎΡΡΡ , ΠΏΡΠΎΡΠ»ΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Ρ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΊΠ°ΠΊ GWT ΠΏΡΠ΅ΡΠ΅ΡΠΏΠ΅Π» Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ.ΠΠ° ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ 2.8.2 Π±ΡΠ»Π° Π²ΡΠΏΡΡΠ΅Π½Π° Π±ΠΎΠ»Π΅Π΅ Π³ΠΎΠ΄Π° Π½Π°Π·Π°Π΄, Π² ΠΎΠΊΡΡΠ±ΡΠ΅ 2017 Π³ΠΎΠ΄Π°. ΠΠ° ΡΡΠΈ Π³ΠΎΠ΄Π° Π΄ΠΎ ΡΡΠΎΠ³ΠΎ Π±ΡΠ»Π° Π²ΡΠΏΡΡΠ΅Π½Π° 2.7.0, Ρ.Π΅. ΡΠ΅ΡΠ΅Π· ΡΠ΅ΡΡΡΠ΅ Π³ΠΎΠ΄Π° Ρ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ. Π― Π²ΠΈΠΆΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΎ Π²ΡΡ ΠΎΠ΄Π΅ Π²Π΅ΡΡΠΈΠΈ 3.0, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ Π΄Π²Π° Π³ΠΎΠ΄Π° Π½Π°Π·Π°Π΄, Π² ΠΊΠΎΡΠΎΡΡΡ ΡΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ, ΡΠ»Π΅Π΄ΡΠ΅Ρ Π»ΠΈ ΠΏΠ»Π°ΠΊΠ°ΡΡ Π΄ΠΎΠΆΠ΄Π°ΡΡΡΡ Π²ΡΡ ΠΎΠ΄Π° Π²Π΅ΡΡΠΈΠΈ 3.0, ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ Π²Π½ΠΎΡΠΈΡΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ (Ρ Π½Π°Π΄Π΅ΡΡΡ, ΡΡΠΎ ΠΏΠ»Π°ΠΊΠ°Ρ Π²ΡΠ΅ Π΅ΡΠ΅ Π½Π΅ ΠΆΠ΄Π΅Ρ), Π½ΠΎ Ρ Π½Π΅ ΠΌΠΎΠ³Ρ Π½Π°ΠΉΡΠΈ Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ°ΠΌΠΎΠΊ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΊΠΎΠ³Π΄Π° ΡΡΠΎΡ ΡΠ΅Π»ΠΈΠ· ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΉΡΠΈ.
Π₯ΠΎΡΡ Ρ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΏΠΎΠΊΠ»ΠΎΠ½Π½ΠΈΠΊ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° ΠΈ ΡΡΠΈΡΠ°Ρ Π΅Π³ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π·ΡΠ΅Π»ΡΠΌ, Ρ Π·Π½Π°Ρ, ΡΡΠΎ ΡΡΠ° Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΡΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π±ΡΠ΄ΡΡΠΈΡ Π²ΡΠΏΡΡΠΊΠΎΠ² Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠ² ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π½Π΅ΡΠ²Π½ΠΈΡΠ°ΡΡ.ΠΠΈΠΊΡΠΎ Π½Π΅ Ρ ΠΎΡΠ΅Ρ Π±ΡΡΡ ΠΏΡΠΈΠ²ΡΠ·Π°Π½Π½ΡΠΌ ΠΊ ΡΠΈΡΡΠ΅ΠΌΠ΅, ΠΊΠΎΡΠΎΡΠ°Ρ Π·Π°Ρ ΠΎΠ΄ΠΈΡ Π² ΡΡΠΏΠΈΠΊ.
GWT — ΡΡΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΊΠΎΡΠΎΡΡΡ Ρ Π±ΡΠ΄Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ Π΄ΡΡΠ³ΠΈΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½Π° ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ ΠΈΡ ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΡΠΌ.
ΠΠ°Π°Π΄ΠΈΠ½
Vaadin — Π΅ΡΠ΅ ΠΎΠ΄ΠΈΠ½ ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ.
ΠΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎ Ρ Π΄ΡΠΌΠ°Π», ΡΡΠΎ GWT Π±ΡΠ» ΠΌΠΎΠΈΠΌ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΌ Π²ΡΠ±ΠΎΡΠΎΠΌ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΌ ΠΊΠΎΠ΄Π΅ Java. ΠΠΎ ΠΊΠΎΠ³Π΄Π° Ρ ΡΠ°Π·Π³ΠΎΠ²Π°ΡΠΈΠ²Π°Π» Ρ ΡΠ΅ΠΌ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΌΠ°Π³Π°Π·ΠΈΠ½ΠΎΠΌ, ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌ Ρ ΡΠΏΠΎΠΌΠΈΠ½Π°Π» Π²ΡΡΠ΅, ΠΎΠ½ΠΈ ΡΠΊΠ°Π·Π°Π»ΠΈ ΠΌΠ½Π΅, ΡΡΠΎ ΡΠ΅ΡΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Vaadin Π΄Π»Ρ ΡΠ²ΠΎΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ². Π’Π°ΠΊ ΡΡΠΎ, ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ, ΠΌΠ½Π΅ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΠΏΠΎΠΉΡΠΈ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ.Π Ρ Π²ΠΏΠ΅ΡΠ°ΡΠ»Π΅Π½.
Π§Π΅ΡΡΠ½ΠΎ Π³ΠΎΠ²ΠΎΡΡ, Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠΈ Ρ Π΅ΡΠ΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» Vaadin Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ°. ΠΠΎ Ρ Π½Π°ΡΠ°ΡΠΈΠ²Π°Ρ ΠΏΠ°ΡΡ Π»ΠΈΡΠ½ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ ΠΌΠ½Π΅ Π½ΡΠΆΠ½Ρ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ, ΠΈ Ρ ΡΠΎΠ±ΠΈΡΠ°ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎ. ΠΡΠ»ΠΈ Vaadin Π²ΡΠΏΠΎΠ»Π½ΠΈΡ ΡΠ²ΠΎΠΈ ΠΎΠ±Π΅ΡΠ°Π½ΠΈΡ, ΠΎΠ½ ΡΡΠ°Π½Π΅Ρ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎΠΉ ΠΎΡΠ½ΠΎΠ²ΠΎΠΉ Π΄Π»Ρ ΡΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ².
Vaadin ΠΎΠ±Π΅ΡΠ°Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠ·ΡΠΊΠΈ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠ΅ Π² JVM, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Kotlin ΠΈ Scala. Π― Π½Π°Π΄Π΅ΡΡΡ, ΡΡΠΎ ΡΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΠΈ Groovy. ΠΡΠ»ΠΈ Π²Ρ ΠΏΡΠΎΡΡΠ΅ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· ΠΌΠΎΠΈΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ ΠΏΠΎΡΡΠΎΠ², ΡΠΎ ΠΏΠΎΠΉΠΌΠ΅ΡΠ΅, ΡΡΠΎ Ρ ΡΠ°Π½Π°Ρ ΡΡΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ°, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π±ΡΡΡΡΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ.ΠΠ»Ρ ΠΌΠ΅Π½Ρ ΡΡΠΎ Π²Π°ΠΆΠ½ΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΡΠ΅ΠΌΠΎΠ½ΡΠΎΠΏΡΠΈΠ³ΠΎΠ΄Π½ΠΎΡΡΡ. ΠΠΈΡΡΠΎ ΡΠ°ΠΊ Π½Π΅ ΡΠ°Π·ΡΡΡΠ°Π΅Ρ ΠΏΡΠΎΠ΅ΠΊΡ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ, ΠΊΠ°ΠΊ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠΆΠ΅ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΉ ΠΊΠΎΠ΄.
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ ΠΌΡΡΠ»ΠΈ
ΠΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ², ΠΊΠΎΠ³Π΄Π° Π΄Π΅Π»ΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°. Π‘ΠΎΠ·Π΄Π°Π΅ΡΠ΅ Π»ΠΈ Π²Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈΠ»ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΡΡΠ΅Π΄Ρ, Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡΡ ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ.
ΠΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΠΎΠΌΠ½ΠΈΡΡ ΠΎ Π΄Π²ΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΡ : ΠΏΡΠΎΡΡΠΎΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΡΠ΅ΠΌΠΎΠ½ΡΠΎΠΏΡΠΈΠ³ΠΎΠ΄Π½ΠΎΡΡΡ.
- Π‘ΡΠ΅Π΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΡΠ΄Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΏΠ΅ΡΠ΅ΡΠ°ΡΡ ΠΎΠ΄Ρ ΡΡΠ΅Π΄ΡΡΠ² ΠΈ ΠΎΡΠ΅Π½Ρ Π·Π°ΡΡΡΠ΄Π½ΠΈΡ ΠΏΡΠΈΠ²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ².
- ΠΡΠΎΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ, Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ Π²ΡΠ·ΠΎΠ²Π΅Ρ ΡΠ°Π·ΠΎΡΠ°ΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Ρ ΠΊ ΠΏΠΎΡΠ΅ΡΠ΅ Π΄Π΅Π½Π΅Π³.
ΠΡΡ ΠΎΠ΄Ρ ΠΈΠ· ΠΏΠΎΡΡΠ΅Π±Π½ΠΎΡΡΠ΅ΠΉ ΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ Π²Π°ΡΠ΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, ΠΏΠΎΠ»Π½ΠΎΠ΅ Java-ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π΄ΠΎ ΠΌΠΎΠ΄Π΅Π»ΠΈ, Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½ΠΎ ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ»ΠΈΡΠ½ΡΠΌ Π²ΡΠ±ΠΎΡΠΎΠΌ ΠΊΠ°ΠΊ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ ΠΏΡΠΎΡΡΠΎΡΡ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ.
ΠΠ΅ΡΡΡΠ΅ Π² Ρ ΠΎΡΠΎΡΠΈΠΉ ΠΊΠΎΠ΄.
.
Π»ΡΡΡΠΈΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² Java, ΠΊΠΎΡΠΎΡΡΠ΅ Π±ΡΠ΄ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² 2020 Π³ΠΎΠ΄Ρ
Π Π°Π½Π΅Π΅ ΠΌΡ ΠΏΠΈΡΠ°Π»ΠΈ ΠΎ Π»ΡΡΡΠΈΡ ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² 2020 Π³ΠΎΠ΄Ρ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π° ΡΡΠΎΡ ΡΠ°Π· ΠΌΡ Ρ ΠΎΡΠ΅Π»ΠΈ Π±Ρ ΠΎΠ±ΡΠ°ΡΠΈΡΡ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Java — ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²Π΅Π΄ΡΡΠΈΡ ΡΠ·ΡΠΊΠΎΠ² ΠΈ Π΅Π³ΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² ΠΈ ΠΈΡ Π²Π°ΠΆΠ½ΠΎΡΡΡ Π² 2020 Π³ΠΎΠ΄Ρ. ΠΠ΄ΠΈΠ½ ΠΈΠ· Π²Π΅Π΄ΡΡΠΈΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Java, ΠΊΠΎΠΌΠ°Π½Π΄Π° SCAND Π·Π½Π°Π΅Ρ ΠΎΠ±ΠΎ Π²ΡΠ΅Ρ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°Ρ ΡΡΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π²ΡΠ΅Ρ Π²ΠΈΠ΄ΠΎΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΡΠΈΡΡΠ΅ΠΌ. Π₯ΠΎΡΡ Java ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΡΡΠ°ΡΠ΅ΠΉΡΠΈΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΎΠ½ ΠΏΠΎ-ΠΏΡΠ΅ΠΆΠ½Π΅ΠΌΡ ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ERP-ΡΠΈΡΡΠ΅ΠΌ, Π±Π°Π½ΠΊΠΎΠ²ΡΠΊΠΈΡ ΠΈ ΡΠΈΠ½Π°Π½ΡΠΎΠ²ΡΡ ΡΠΈΡΡΠ΅ΠΌ, Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½ΠΎΠ² ΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° ΠΊΡΠΈΠΏΡΠΎΠ²Π°Π»ΡΡΠ°ΠΌΠΈ, ΡΠ΅ΡΠ΅Π½ΠΈΠΉ Π΄Π»Ρ Π·Π΄ΡΠ°Π²ΠΎΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ ΠΈ Π±ΠΎΠ»ΡΡΠΈΡ Π΄Π°Π½Π½ΡΡ , Π° ΡΠ°ΠΊΠΆΠ΅ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
Π‘Π°ΠΌΡΠΌ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎΠΌ ΡΠ·ΡΠΊΠ° Java ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎ, ΡΡΠΎ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ ΠΎΡΠΊΡΡΡΡΠΉ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΠΈ ΠΈΠΌΠ΅Π΅Ρ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΈ ΡΠΈΠ»ΡΠ½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ². Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Java Π±ΡΠ»ΠΎ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΎΡΠ»ΠΈΡΠ½ΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΠ΅ΡΠ΅Π²ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ORM ΠΈ Ρ. Π. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΡΠ°ΠΌΡΠ΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠ΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ Java, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² 2020 Π³ΠΎΠ΄Ρ.
1. Spring Framework
Spring — ΡΡΠΎ ΡΡΠ΅Π΄Π° Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΊΠΎΡΠΎΡΠ°Ρ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠ°ΠΊ Π²Π΅Π±-ΡΠ°ΠΉΡΠΎΠ², ΡΠ°ΠΊ ΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ .ΠΠ½ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Spring Core, Spring Web MVC, Spring AOP, Spring DAO, Spring context, Spring ORM ΠΈ Spring Web Flow. ΠΠ³ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Ρ Kotlin ΠΈ Groovy.
Π’Π°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΠΊΠ°ΠΊ Netflix ΠΈ eBay, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Spring Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ²ΠΎΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΡΠΈΡΡΠ΅ΠΌ.
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° Spring:
- ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΈΡΠ°ΡΡ ΡΠΈΡΡΡΠΉ ΠΈ Π΄ΠΎΡΡΡΠΏΠ½ΡΠΉ ΠΊΠΎΠ΄;
- ΠΠ΅Π³ΠΊΠΈΠΉ ΠΈ ΠΏΡΠΎΡΡΠΎΠΉ Π² ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠΈ;
- ΠΠΌΠ΅Π΅Ρ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ XML ΠΈ ΡΡΠΈΠ»Ρ Π°Π½Π½ΠΎΡΠ°ΡΠΈΠΈ;
- ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ.
ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ ΡΡΠ΅Π΄Ρ Spring — ΡΡΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ Π΄Π»Ρ Π½ΠΎΠ²ΠΈΡΠΊΠΎΠ², Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΡΡ Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½Π° Java. ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΡΡΠΈΠΌ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠΌ ΡΡΠ΅Π±ΡΡΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π±Π°Π·ΠΎΠ²ΡΠ΅ Π·Π½Π°Π½ΠΈΡ Java.
2. Apache Struts
Struts — ΡΡΠΎ Π±Π΅ΡΠΏΠ»Π°ΡΠ½Π°Ρ ΡΡΠ΅Π΄Π° Java Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Struts ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΠΌΠΈ Java. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΠΏΠ»Π°Π³ΠΈΠ½ Spring Π΄Π»Ρ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊ ΠΏΠ»Π°Π³ΠΈΠ½ Hibernate Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ.
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° Struts:
- ΠΠΌΠ΅Π΅Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ²;
- ΠΡΠΎΡΡΠΎΡΠ° ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ;
- ΠΠΈΠ±ΠΊΠΎΡΡΡ ΠΈ ΠΏΡΠΎΡΡΠΎΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ;
- ΠΠΎΠ»Π΅Π΅ Π±ΡΡΡΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.
ΠΠ΄Π½Π°ΠΊΠΎ, ΡΡΠΎΠ±Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Struts, ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π½Π°ΡΡ API ΡΠ΅ΡΠ²Π»Π΅ΡΠΎΠ² Java, Π° ΡΠ°ΠΊΠΆΠ΅ JSP (ΡΡΡΠ°Π½ΠΈΡΡ ΡΠ΅ΡΠ²Π΅ΡΠ° Java). Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π΄Π»Ρ Π·Π½Π°ΠΊΠΎΠΌΡΡΠ²Π° Ρ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. Π€ΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π½Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
3. Grails
Grails — ΡΡΠΎ ΡΡΠ΅Π΄Π° Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π΄Π»Ρ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ Java (JVM).ΠΠ½ ΠΏΠΎΡΡΡΠΎΠ΅Π½ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Spring Boot ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΡΠ·ΡΠΊΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Groovy. ΠΠ½ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ Ρ JDK, ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ Java EE, Hibernate, Spring ΠΈ Quartz.
Grails ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π»ΡΠ±ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π’Π°ΠΊΠΈΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΠΊΠ°ΠΊ Oracle, IBM, Netflix, Cisco ΠΈ Google ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Grails Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° Grails:
- ΠΡΠΎΡΡΠΎΡΠ° Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΈ Π½Π°ΡΠ°Π»Π° ΡΠ°Π±ΠΎΡΡ;
- ΠΠ΅Π³ΠΊΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΡΠ΅ΡΡΡ Ρ ΡΠΆΠ΅ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Java;
- ΠΠΌΠ΅Π΅Ρ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ².
Grails — Ρ ΠΎΡΠΎΡΠΈΠΉ Π²ΡΠ±ΠΎΡ ΠΊΠ°ΠΊ Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΌ ΡΡΠΎΠΊΠΎΠΌ, ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ ΡΡΠ°ΡΡΠ°ΠΏΠΎΠ². Π’Π°ΠΊ ΡΡΠΎ Π΅ΡΠ»ΠΈ ΡΡΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΈΠ»ΠΈ ΡΡΠ΅Π΄Π½ΠΈΠΉ ΠΏΡΠΎΠ΅ΠΊΡ, Grails Π΅ΠΌΡ ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ. ΠΡΠΎΡΡΠΎΡΠ° Grails ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ RAD Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
4. Hibernate
Hibernate — ΡΡΠ΅Π΄Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ (ORM) Java, Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠ°Ρ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ . Hibernate Π»Π΅Π³ΠΊΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ Ρ Π»ΡΠ±ΠΎΠΉ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ ΠΈ Π½Π΅Π²Π΅ΡΠΎΡΡΠ½ΠΎ ΡΠ΄ΠΎΠ±Π΅Π½ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ .
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° Hibernate:
- ΠΡΠΎΡΡΠΎΡΠ° ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΡ;
- ΠΡΠΎΡΡΠΎΡΠ° ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ;
- ΠΡΠΎΡΡΠΎΡΠ° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π±Π°Π· Π΄Π°Π½Π½ΡΡ .
Hibernate ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ . ΠΠ½ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² ΡΠΈΠΏΠ° ΠΠΠ, ΡΡΠ΅Π±ΡΡΡΠΈΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π²ΡΡΠΎΠΊΠΎΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ ΠΏΠΎΡΡΠ°ΡΠΈΠ²Π½ΠΎΡΡΠΈ.
5. JSF (JavaServer Faces)
JSF — ΡΡΠΎ ΡΡΠ΅Π΄Π° Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Java, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½Π°Ρ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠ°Ρ Oracle.Π ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ Π΄Π»Ρ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. JSF Π² Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ ΠΏΠΎΡ ΠΎΠΆ Π½Π° Struts.
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° JSF:
- ΠΠΌΠ΅Π΅Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°;
- ΠΠΎΠ³Π°ΡΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ;
- ΠΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΏΠΎΠ²ΡΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΈ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΡ.
JSF — ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ Π²ΡΠ±ΠΎΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π³Π»ΡΠ±ΠΎΠΊΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Java, ΠΈΠ½Π°ΡΠ΅ Π΅Π³ΠΎ Π±ΡΠ»ΠΎ Π±Ρ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ·-Π·Π° ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΡΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π΄ΡΡΠ³ΠΈΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² Java, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠΎΠΈΡ ΡΠΏΠΎΠΌΡΠ½ΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Blade, Vaadin, Wicket, Play, GWT (Google Web Toolkit), Vert.x, Apache Hadoop ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄ΡΡΠ³ΠΈΠ΅. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· Π½ΠΈΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΡ ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ ΡΠ΅Π»Π΅ΠΉ: GWT, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ Google, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ JavaScript, Vaadin — Π΄Π»Ρ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΎΠΉ, ΡΡΠ΅Π΄Π° Vert.x ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Java, Javascript, Groovy, Ruby, Scala ΠΈ Kotlin, Play ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Scala.Hadoop Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΈ Π½Π°ΡΠΊΠΎΠΉ ΠΎ Π΄Π°Π½Π½ΡΡ .
ΠΡΠΎΠ³
ΠΡΠ»ΠΈ Π²Ρ Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½Ρ, ΠΊΠ°ΠΊΠ°Ρ ΡΡΡΡΠΊΡΡΡΠ° Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π½Π΅ ΡΡΠ΅ΡΠ½ΡΠΉΡΠ΅ΡΡ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ Π½Π°ΠΌ. ΠΠ»ΠΈ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ Π½Π°Π½ΡΡΡ Java-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°, ΠΎΠ±Π»Π°Π΄Π°ΡΡΠ΅Π³ΠΎ Π·Π½Π°Π½ΠΈΡΠΌΠΈ Π² Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°Ρ Java, ΠΌΡ Π²ΡΠ΅Π³Π΄Π° ΠΏΠΎΠ΄ ΡΡΠΊΠΎΠΉ. ΠΡ ΠΎΠ±Π»Π°Π΄Π°Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ 20-Π»Π΅ΡΠ½ΠΈΠΌ ΠΎΠΏΡΡΠΎΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π½Π°ΡΡΠΎΠ»ΡΠ½ΡΡ ΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ² Java ΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π·Π°Π²Π΅ΡΡΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ 600 ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ². ΠΠ΅ ΡΡΠ΅ΡΠ½ΡΠΉΡΠ΅ΡΡ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ Π½Π°ΠΌ!
.ΠΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
Java ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Java
Java — ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΡΠ°ΠΌΡΡ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΈΡΡΠΎΠ²ΡΡ Π°Π½ΠΈΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠ½ ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ ΠΈΠ· ΡΠ·ΡΠΊΠΎΠ² C ΠΈ C ++, Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ Π±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΠΎΠΉ ΠΌΠΎΠ΄Π°Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄. Π₯ΠΎΡΡ ΡΡΠΎ Π½Π΅Π»Π΅Π³ΠΊΠΈΠΉ ΡΠ·ΡΠΊ Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ. ΠΠΎ ΠΈΠ·-Π·Π° Π΅Π³ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΠ΅Π΄ Java GUI, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ REST API, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ Π½Π° Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ Java. Π ΡΠ°ΠΊΠΆΠ΅ ΠΌΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ Π²Π΅Π±-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°Ρ Java, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
Java ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π»Π°ΡΡ Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΡΠ΅Π»Π΅Π²ΠΈΠ΄Π΅Π½ΠΈΡ, Π½ΠΎ Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΠ½Π° ΡΠ»ΠΈΡΠΊΠΎΠΌ ΠΏΡΠΎΠ΄Π²ΠΈΠ½ΡΠ»Π°ΡΡ Π΄Π»Ρ ΠΈΠ½Π΄ΡΡΡΡΠΈΠΈ ΡΠΈΡΡΠΎΠ²ΠΎΠ³ΠΎ ΡΠ΅Π»Π΅Π²ΠΈΠ΄Π΅Π½ΠΈΡ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ Java ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΡΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈ Π±Π°Π·ΠΎΠ²ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ, Π½ΠΎ ΠΈ Π½Π° Π±ΠΈΠ·Π½Π΅Ρ-Π»ΠΎΠ³ΠΈΠΊΠ΅ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ Π»ΡΠ΄ΠΈ ΡΠΆΠΈΠΌΠ°ΡΡ Python ΠΈ Java, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΏΠΎΠ½ΡΡΠΈΡ Π½Π΅ ΠΈΠΌΠ΅ΡΡ, ΡΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Python ΠΈ Java. ΠΠ°ΡΠ΅ΠΌ ΠΏΡΠΎΡΡΠΈΡΠ΅ ΡΡΡ ΡΡΠ°ΡΡΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠΎΡΡΠ½ΠΈΡΡ Π²ΡΠ΅ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎ Python ΠΈ Java.
ΠΡΠ°ΠΊ, Π΄Π°Π²Π°ΠΉΡΠ΅ Π²Π·Π³Π»ΡΠ½Π΅ΠΌ Π½Π° ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Java.
ΠΡΡΡΠ°Ρ ΡΡΠ΅Π΄Π° Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Java
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Java ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠ΅ΠΉΡΠ°Ρ ΠΈ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ.ΠΏΠΎΡΡΠΎΠΌΡ, Π΅ΡΠ»ΠΈ Π²Ρ ΡΠ°ΠΊΠΆΠ΅ Π½Π°Ρ ΠΎΠ΄ΠΈΡΠ΅ΡΡ Π½Π° ΠΏΡΡΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈΠ· ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Java ΠΈ ΠΈΡΠ΅ΡΠ΅ Π»ΡΡΡΡΡ ΡΡΠ΅Π΄Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Java Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡΡΠ΅ΡΡ ΡΠΎ ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Java, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ, ΠΈ Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π»ΡΡΡΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π²Π°Ρ.
1. JavaFX GUI Toolkit
JavaFX — ΡΡΠΎ Π½ΠΎΠ²Π΅ΠΉΡΠ°Ρ ΡΡΠ΅Π΄Π° Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°. ΠΡΠΎ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΡΡΡΡΠ°ΡΡΠ΅ Π²ΡΠ³Π»ΡΠ΄ΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ. Π§ΡΠΎΠ±Ρ ΡΠΎΠ·Π΄Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ JavaFX, Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π΅Π΅ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡ. ΠΠ½ ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌΠΈ Π²Π΅ΡΡΠΈΡΠΌΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° JDK (Java Development Kit).
Π ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ², Oracle ΡΠΈΠ»ΡΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ JavaFX Ρ Java 8, ΠΈ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ Π²Π΅ΡΡΠΈΡ — JavaFX 8. ΠΠ½ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Lambdas Π΄Π»Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°.
ΠΠΎ ΡΡΡΠΈ, JavaFX — ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½Π°Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ Π½Π°ΡΡΠΎΠ»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΠΎΠ½ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΌΠ½ΠΎΠ³ΠΎΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΠ΅ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π°Ρ , Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΡΠ΅Π»Π΅ΡΠΎΠ½Π°Ρ , ΡΠ΅Π»Π΅Π²ΠΈΠ·ΠΎΡΠ°Ρ , ΠΏΠ»Π°Π½ΡΠ΅ΡΠ°Ρ ΠΈ ββΡ. Π.
Π€ΡΠ½ΠΊΡΠΈΠΈ JavaFX
- ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°
- FXML
- ΠΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΡΡΠ΅Π½
- ΠΠ΅Π±-ΠΏΡΠΎΡΠΌΠΎΡΡ
- Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠΌ
- CSS ΠΊΠ°ΠΊ ΡΡΠΈΠ»ΠΈΠ·Π°ΡΠΈΡ
- Canvas API
- ΠΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ
- ΠΡΡΠΎΠΊΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΌΠ΅Π΄ΠΈΠ°-Π΄Π²ΠΈΠΆΠΎΠΊ
2.AWT: Abstract Widget Toolkit
AWT — ΡΡΠΎ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½Π°Ρ ΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠ°Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Java Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΎΠΊΠΎΠ½, Π³ΡΠ°ΡΠΈΠΊΠΈ ΠΈ Π½Π°Π±ΠΎΡΠ° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°. Π’Π΅ΠΏΠ΅ΡΡ ΠΎΠ½ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΡΡ Java Foundation Classes (JFC) ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ API Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, AWT ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, Π½Π°Π΄Π΅ΠΆΠ½ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ, ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π³ΡΠ°ΡΠΈΠΊΠΈ Ρ ΡΠ²Π΅ΡΠΎΠΌ ΡΠΎΡΠΌΡ ΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ ΡΡΠΈΡΡΠΎΠ², Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅Ρ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ Π΄Π»Ρ Π³ΠΈΠ±ΠΊΠΎΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ ΠΎΠΊΠΎΠ½ ΠΈ ΠΊΠ»Π°ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ ΡΠ΅ΡΠ΅Π· ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ Π±ΡΡΠ΅Ρ ΠΎΠ±ΠΌΠ΅Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ.
ΠΠ΅ΡΠ°ΡΡ ΠΈΡ AWT
ΠΡΠΈΠΌΠ΅Ρ AWT
Π‘Π΄Π΅Π»Π°ΠΉΡΠ΅ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ AWT, ΠΏΠΎΡΡΠΎΠΌΡ Π²Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΡΠ΅ΠΉΠΌ. Π‘Π΄Π΅Π»Π°ΡΡ ΡΡΠ΅ΠΉΠΌ Π² AWT ΠΌΠΎΠΆΠ½ΠΎ Π΄Π²ΡΠΌΡ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ.
- Π‘ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠ»Π°ΡΡΠ° ΡΡΠ΅ΠΉΠΌΠ°, Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅.
- Π‘ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊΠ»Π°ΡΡΠ° frame, ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅.
3. Swing GUI Java
Swing GUI Java — ΡΡΠΎ Π»Π΅Π³ΠΊΠΈΠΉ Π½Π°Π±ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ Π½Π°Π΄Π΅ΠΆΠ½ΡΠΉ Π½Π°Π±ΠΎΡ Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ². ΠΡΠΎ Π²ΡΠ±ΠΎΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ΄Π½Π°ΠΊΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Swing ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Java Abstract Widget Toolkit (AWT), Π±ΠΎΠ»Π΅Π΅ ΡΡΠ°ΡΠΎΠ³ΠΎ, Π·Π°Π²ΠΈΡΡΡΠ΅Π³ΠΎ ΠΎΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ GUI.ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Java, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΊΠ½ΠΎΠΏΠΊΠ°, ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ»Π΅ ΠΈ Ρ. Π., ΠΠ· Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΈ Π²Π°ΠΌ Π½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Ρ Π½ΡΠ»Ρ.
Swing Java GUI Π±ΠΎΠ³Π°Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², Π½ΠΎ Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ±Π»Π°ΡΡΡΡ ΠΎΠ½ ΠΎΡΡΡΡΡΡΠ²ΡΠ΅Ρ.
ΠΠ΅ΡΠ°ΡΡ ΠΈΡ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
ΠΡΠΈΠΌΠ΅Ρ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Swing
Π‘Π΄Π΅Π»Π°ΠΉΡΠ΅ ΠΏΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ AWT, ΠΏΠΎΡΡΠΎΠΌΡ Π²Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΡΠ΅ΠΉΠΌ. Π‘Π΄Π΅Π»Π°ΡΡ ΡΡΠ΅ΠΉΠΌ Π² AWT ΠΌΠΎΠΆΠ½ΠΎ Π΄Π²ΡΠΌΡ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ.
- Π‘ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΊΠ»Π°ΡΡΠ° ΡΡΠ΅ΠΉΠΌΠ°, Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅.
- Π‘ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΊΠ»Π°ΡΡΠ° frame, ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅.
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΊΠΎΠ΄ Swing Π²Π½ΡΡΡΠΈ main (), ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΠ° ΠΈΠ»ΠΈ Π»ΡΠ±ΡΠΌ Π΄ΡΡΠ³ΠΈΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ.
4. SWT — ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ Π½Π°Π±ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ²
Π‘ΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ Π½Π°Π±ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² ΠΈΠ»ΠΈ SWT ΡΠΎΠ·Π΄Π°Π½ IBM Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ eclipse Π² ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠΈΡΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΌ Java IDE). ΠΡΠΎ Π°Π½Π°Π»ΠΎΠ³ Swing ΠΈ AWT. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, SWT — ΡΡΠΎ Π½Π°Π±ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π²ΠΈΠ΄ΠΆΠ΅ΡΠΎΠ² Π΄Π»Ρ Java, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠΉ Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈ ΠΏΠΎΡΡΠ°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠΌΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ Π·Π°ΡΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ.
ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Eclipse — ΡΡΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΡΡΠ΅Π΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ
5.Apache Pivot
Apache Java GUI — ΡΡΠΎ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌΡΡ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΠΎΠ½ ΡΠΎΡΠ΅ΡΠ°Π΅ΡΡΡ Ρ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Java Π΄Π»Ρ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΡΡΠΈ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°.
6. SwingX
SwingX Java Gui ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° Swing. ΠΠΎ ΡΡΡΠΈ, ΡΡΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Folks (ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² Swing). SwingX ΡΠΎΠ·Π΄Π°Π΅Ρ Π±ΠΎΠ³Π°ΡΡΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π΄Π»Ρ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΡΠ²ΠΈΠ½Π³Π΅ΡΠΎΠ².
ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΠΎ, SwingX API ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΈΡΠΎΠ²Π°Π»ΡΡΠΈΠΊΠΈ.ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄ Java2D Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π²Π½Π΅ΡΠ½Π΅Π³ΠΎ Π²ΠΈΠ΄Π° Π²Π°ΡΠ΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°.
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ SwingX
- ΠΠ΅Π³ΠΊΠΎΠ²Π΅ΡΠ½ΡΠΉ — Swing ΡΠ°ΡΡΡ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΎΠ³ΠΎ API ΠΠ‘, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Swing API Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΈΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° JAVA Π²ΠΌΠ΅ΡΡΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΠΠ‘.
- ΠΠΎΠ³Π°ΡΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ — Swing ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π±ΠΎΠ³Π°ΡΡΠΉ Π½Π°Π±ΠΎΡ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ Π΄Π΅ΡΠ΅Π²ΠΎ, TabbedPane, ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠΎΠ»Π·ΡΠ½ΠΊΠΎΠΌ ΠΈ Ρ. Π.
- Π¨ΠΈΡΠΎΠΊΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ. ΠΠ³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΎΡΠ΅Π½Ρ ΠΏΡΠΎΡΡΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π²Π½Π΅ΡΠ½ΠΈΠΉ Π²ΠΈΠ΄ Π½Π΅ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ.
- ΠΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌΡΠΉ Π²Π½Π΅ΡΠ½ΠΈΠΉ Π²ΠΈΠ΄ — ΠΎΠ½ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ½Π΅ΡΠ½ΠΈΠΉ Π²ΠΈΠ΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π·Π°ΠΌΠ΅Π½Π΅Π½ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π΄ΠΎΡΡΡΠΏΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ.
7. JGoodies
JGoodies java GUI framework ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΡΠ΅ ΡΡΠ»ΡΠ³ΠΈ ΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π½Π°ΡΡΠΎΠ»ΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠ² Java. ΠΠ½ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½ Π½Π° Π΄ΠΈΠ·Π°ΠΉΠ½ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Java. ΠΠ΄Π½Π°ΠΊΠΎ JGoodies ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΠΎΠ»Π½ΡΡ ΠΏΠΎΠΌΠΎΡΡ, ΡΠ°ΠΊΡΡ ββΠΊΠ°ΠΊ ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΡΠ°Π±Π»ΠΎΠ½Ρ ΡΠ°Π±ΠΎΡΠ΅Π³ΠΎ ΡΡΠΎΠ»Π°, ΡΠ°Π±Π»ΠΎΠ½Ρ Π΄ΠΈΠ·Π°ΠΉΠ½Π°, Π²ΡΠ΅, ΡΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Java.
8. QtJambi
Jambi — ΡΡΠΎ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠ° Java ΠΊ ΠΊΡΠΎΡΡΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ Qt.ΠΡΠΎ ΡΠΏΠΎΡΠΎΠ± ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Qt Ρ ΡΠ·ΡΠΊΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Java. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Qt Jambi ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Qt.
Π’Π΅ΠΏΠ΅ΡΡ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡΠΈΠΌ ΠΎ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ΅ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΠ°Π·Π°ΡΡ Π²Π΅Π±-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ΄Π΅ΡΡ Ρ Π½Π°Ρ Π΅ΡΡΡ 6 ΡΠΈΠΏΠΎΠ² Π²Π΅Π±-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΎΠ². ΠΡΠ°ΠΊ, Π΄Π°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΡΠΏΠΈΡΠΎΠΊ Π½ΠΈΠΆΠ΅.
Blade UI Framework
Blade — ΡΡΠΎ ΠΏΡΠΎΡΡΠΎΠΉ Java-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π±ΡΡΡΡΠΎ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΡΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ.Π‘ΠΎΠ·Π΄Π°ΡΠ΅Π»ΡΠΌ Π½ΡΠΆΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΠΈ Π·Π½Π°Π»ΠΈ Π²ΡΡ ΡΡΡΡΠΊΡΡΡΡ Π·Π° ΠΎΠ΄ΠΈΠ½ Π΄Π΅Π½Ρ. ΠΠΎΡΡΠΎΠΌΡ Blade Π΄Π΅Π»Π°Π΅Ρ Π°ΠΊΡΠ΅Π½Ρ Π½Π° ΠΏΡΠΎΡΡΠΎΡΠ΅ ΠΈ Π²Π΅Π»ΠΈΠΊΠΎΠ»Π΅ΠΏΠΈΠΈ. ΠΠ»Π°ΡΡΠΎΡΠΌΠ° Blade ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ°Π±Π»ΠΎΠ½Ρ ΡΡΠΈΠ»Ρ ΠΊΠΎΠ΄Π° MVC.
Π΄ΠΈΠ·Π°ΠΉΠ½ ΠΏΡΠΎΡΡ Π΄Π»Ρ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ Π½Π΅ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΡΡΠΎΡΠΎΠ½Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΈ Π½Π΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΠ»ΠΎΠ΅Π². ΠΠ»Π΅ΠΉΠ΄ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° Java 8, ΠΏΠΎΡΡΠΎΠΌΡ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅Ρ Netty ΠΈ Π΄Π²ΠΈΠΆΠΎΠΊ Π½Π°ΠΏΡΠ°Π²Π»ΡΡΡΠΈΡ ΡΠ°ΠΊΠΆΠ΅ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ Π² ΡΡΡΡΠΊΡΡΡΡ.
ΠΡΠΎ Π½ΠΈΠΆΠ½ΠΈΠΉ ΡΠ°Π·ΠΌΠ΅Ρ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ°Π·ΠΌΠ΅Ρ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° ΠΌΠ΅Π½ΡΡΠ΅ 500 ΠΠ.Π‘ blade-ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ Π²Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ΄ΠΎΠ±Π½ΠΎΠΌΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΌΠ°ΡΡΡΡΡΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΎΠ΄Ρ ΠΈ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ°Π·Π²Π΅ΡΠ½ΡΡΡ ΡΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ Π±Π°Π·ΠΎΠ²ΡΠΉ Π³Π΅Π½ΠΈΠ°Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ.
ΠΠ»Π΅ΠΉΠ΄-ΡΠ΅ΡΠ²Π΅Ρ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΠ½ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΠΎΠ΄Π΄Π΅Π»ΠΊΡ ΠΌΠ΅ΠΆΡΠ°ΠΉΡΠΎΠ²ΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈ Π·Π°ΡΠΈΡΡ ΠΎΡ ΠΌΠ΅ΠΆΡΠ°ΠΉΡΠΎΠ²ΡΡ ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π² XSS. ΠΡΠΎ Π³ΠΈΠ±ΠΊΠ°Ρ ΡΡΡΡΠΊΡΡΡΠ°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½Π° ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Ρ ΡΠΏΡΠΎΡΠ°ΡΡΠΈΠΌΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΈ ΡΠ΅ΡΡΡΡΠ°ΠΌΠΈ Π²Π΅Π±-jar.
GWT Framework
Google Web Toolkit — ΡΡΠΎ ΡΠ°Π·ΡΠΌΠ½Π°Ρ Π²Π΅Π±-ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°, ΡΠΎΠ·Π΄Π°Π½Π½Π°Ρ Google. Π€Π°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, GWT ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΌΠ΅ΡΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°, ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Java Π΄Π»Ρ ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°.ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠΉ Java-ΠΊΠΎΠ΄ ΠΈ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΊΠ°ΠΊ JavaScript, ΡΡΠΎΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ ΠΏΡΠΎΠΈΠ·Π½ΠΎΡΠΈΡΡΡ ΠΊΠ°ΠΊ Β«gwitΒ». Π ΡΡΠΎ ΡΡΠ°Π±ΠΈΠ»ΡΠ½Π°Ρ ΠΈ Ρ ΠΎΡΠΎΡΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠ°Ρ ΡΡΠ΅Π΄Π° Java.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ GWT, Π° Π½Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΠ΅ JavaScript-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅, ΠΊΠ°ΠΊ Π²Ρ ΡΠΆΠ΅ Π·Π°ΠΌΠ΅ΡΠΈΠ»ΠΈ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ ΠΈ Π²ΡΡ ΠΎΠ΄ΡΡ Π½Π° ΡΡΠ½ΠΎΠΊ Π² ΡΠ΅Π»ΠΎΠΌ Π½Π° ΡΠ΄ΠΈΠ²Π»Π΅Π½ΠΈΠ΅ Π±ΡΡΡΡΠΎ. GWT ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΎΠΏΡΠΈΠΉ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΠΈΠ½ΡΠ΅ΡΠ½Π°ΡΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°ΡΠΈΡ, ΠΊΡΠΎΡΡ-Π±ΡΠ°ΡΠ·Π΅ΡΠ½Π°Ρ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡΡ, Π°Π±ΡΡΡΠ°ΠΊΡΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°, ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π·Π°ΠΊΠ»Π°Π΄ΠΎΠΊ ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΡΡΠΎΡΠΈΠ΅ΠΉ.
Hibernate Framework
Hibernate — ΡΡΠΎ ΡΡΠ°Π±ΠΈΠ»ΡΠ½Π°Ρ ΡΡΡΡΠΊΡΡΡΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΡΠ΅Π»ΡΡΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ·ΡΠΊΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Java ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ΠΎΠ²ΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ (Π‘Π£ΠΠ). ΠΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²Π°ΠΌ ΡΡΡΡΠΊΡΡΡΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ΅ΠΎΠ΄ΠΎΠ»Π΅Π²Π°Π΅Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠΎΠΏΡΡΠΆΠ΅Π½ΠΈΡ Java.
ΠΠ½ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΡΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΠΈ, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΡΠΎΠ·Π΄Π°Π½Π½Π°Ρ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠ°Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ, Π΄ΠΎΠ»ΠΆΠ½Π° ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ Π΄ΠΎΠ»ΡΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π΅Π΅ ΡΠ³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π». Π² ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ Hibernate Π±ΡΠ» ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ Π΄Π»Ρ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΡ Π±Π°Π· Π΄Π°Π½Π½ΡΡ , Π΅Π³ΠΎ Π½ΠΎΠ²ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° Π΄Π°Π½Π½ΡΡ NoSQL.
ΠΠ½ ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ Π²Π΅Π»ΠΈΠΊΠΎΠ»Π΅ΠΏΠ½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΡΠ΅Π΄Π°ΠΊΡΠΎΡ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠΉ, ΠΊΠΎΠ½ΡΠΎΠ»Ρ Hibernate, ΡΠ΄ΠΈΠ²ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Associate in Nursingd.
JHipster
JHipster — ΡΡΠΎ Π½ΠΎΠ²Π°Ρ ΡΡΠ΅Π΄Π° Java, Π²ΡΠΏΡΡΠ΅Π½Π½Π°Ρ Π² 2013 Π³ΠΎΠ΄Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Spring Boot. Π, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, 2 ΡΠ°ΠΌΡΡ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ½ΡΡ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Angular ΠΈ React Π² ΠΎΠ΄Π½ΠΎΠΌ ΡΠ΄ΠΎΠ±Π½ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Ρ JHipster. ΠΡ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π±ΡΡΡΡΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΌΠΎΠ΄Π½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Java.
JHipster ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ Π΅Π³ΠΎ Ρ Angular, React ΠΈ Bootstrap Π½Π° ΡΡΠΎΡΠΎΠ½Π΅ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Π²Π°ΠΌ Π΄ΠΈΠ·Π°ΠΉΠ½ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΡΡΠ΅ΠΊΠ°. JHipster ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π²Π°ΠΌ Π²ΡΠ±ΡΠ°ΡΡ ΠΎΠ΄Π½Ρ ΠΈΠ· 2 ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ Π΄ΠΈΠ·Π°ΠΉΠ½Π° ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ½ΡΠΉ Π΄ΠΈΠ·Π°ΠΉΠ½, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ½Π°Ρ ΡΠ°ΡΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡΡΡ Π² ΠΎΠ΄Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΠΎ-Π²ΡΠΎΡΡΡ , Π²Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ Π΄ΠΈΠ·Π°ΠΉΠ½ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ ΡΠ°ΡΡΡ.
JHipster ΡΠΎΠ²ΠΌΠ΅ΡΡΠ½ΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΡΠ΅ΡΡΡ ΡΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΠΌΠΈ ΠΈ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² Π΄Π»Ρ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»Ρ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ ΠΏΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ, ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΈ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ Π΄ΡΡΠ³ΠΈΠΌ DevOps Π ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ², Π²Π΅Π΄ΡΡΠΈΠ΅ Π±ΡΠ΅Π½Π΄Ρ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Adobe, Siemens, Bosch, HBO ΠΈ Google, Π½Π΅ ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎ JHipster.
Play Framework
Play Framework ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π»Π΅Π³ΠΊΠΈΠ΅ ΠΈ ΡΠ΄ΠΎΠ±Π½ΡΠ΅ Π΄Π»Ρ ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Java ΠΈ Scala Π΄Π»Ρ Π½Π°ΡΡΠΎΠ»ΡΠ½ΡΡ ΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ². Play — ΡΡΠΎ Π½Π΅Π²Π΅ΡΠΎΡΡΠ½Π°Ρ ΠΌΠΎΠ΄Π½Π°Ρ ΡΡΠ΅Π΄Π°, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠΈ, ΠΊΠ°ΠΊ LinkedIn, Samsung, Walmart, The Guardian, Verizon ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π΄ΡΡΠ³ΠΈΠ΅.
Play ΠΎΠ±ΡΡΠ½ΠΎ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ Ρ ΠΌΠΎΡΠ½ΡΠΌΠΈ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ°ΠΌΠΈ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Ruby on Rails Π΄Π»Ρ Ruby ΠΈΠ»ΠΈ Django Π΄Π»Ρ Python.ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΎΠ½ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ ΡΠ΅ΡΠ΅Π²ΡΠ΅ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ ΡΠ·ΡΠΊΠΎΠ² ΡΡΠ΅Π½Π°ΡΠΈΠ΅Π², ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ PHP, Python, Ruby ΠΈ Ρ. Π. ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΊΠ°ΠΊ Π²ΡΠΏΠΎΠ»Π½ΠΈΠΌΠΎΠ΅.
Play ΡΠΎΠ·Π΄Π°Π½ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Π½Π°Π±ΠΎΡΠ° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Akka, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΡΡ ΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅ Java. ΠΠ»Π°ΡΡΠΎΡΠΌΠ° Play ΡΡΠ°Π²ΠΈΡ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π½Π° ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ, ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΊΠ° Π³ΠΎΡΡΡΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π°, ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠ΅ ΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ°Ρ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΠ΅Π°ΠΊΡΠΈΠ²Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌΡ, ΡΠ°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ ΠΎΡΠ·ΡΠ²ΡΠΈΠ²Π°Ρ, Π³ΠΈΠ±ΠΊΠ°Ρ, ΡΠ»Π°ΡΡΠΈΡΠ½Π°Ρ ΠΈ ΡΠΏΡΠ°Π²Π»ΡΠ΅ΠΌΠ°Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ, Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΡ ΠΈ ΠΎΡΠΊΠ°Π·ΠΎΡΡΡΠΎΠΉΡΠΈΠ²ΡΡ
PrimeFaces Java
PrimeFaces — ΡΡΠΎ ΠΏΠΎΡ ΠΎΠΆΠ°Ρ Π½Π° Π²Π΅Π±-ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π»Π΅Π³ΠΊΠΈΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ Java-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈ JavaServer Faces ΡΠΌ. Π²ΡΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.ΠΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠΉ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° Fortune 500, ΠΏΡΠ°Π²ΠΈΡΠ΅Π»ΡΡΡΠ²Π΅Π½Π½ΡΠ΅ ΡΡΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΈ Π°ΠΊΠ°Π΄Π΅ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΡΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ. ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° PrimeFaces Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π»Π΅Π³ΠΊΠ°Ρ. ΠΡΠΎ ΠΏΠ°ΠΊΠ΅Ρ Π² Π²ΠΈΠ΄Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° JAR, Π½Π΅ ΡΡΠ΅Π±ΡΡΡΠΈΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡΡΠΈΠΉ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ.
ΠΠ½ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²Π°ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ Π²Π°ΡΠ΅Π³ΠΎ Java-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡ Π²Π°ΠΌ Π²ΡΡΠΎΠΊΠΎΠΊΠ»Π°ΡΡΠ½ΡΠΉ Π½Π°Π±ΠΎΡ ΠΈΠ· 100+ ΡΠ°ΡΡΠ΅ΠΉ, Π° ΡΠ°ΠΊΠΆΠ΅ Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΡΡΡΡΠΊΡΡΡΡ ΡΠΊΠΈΠ½ΠΎΠ² ΠΈ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ ΡΠ΅ΠΌΡ. Π§Π°ΡΡΠΈ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ Π±ΡΡΡΡΠΎ ΡΠΊΠΎΠΏΠΈΡΡΠ΅ΡΠ΅ / Π²ΡΡΠ°Π²ΠΈΡΠ΅ Π² ΡΠ²ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ — ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΏΡΠ°Π²ΡΡΠ΅ ΠΈΡ , ΠΊΠΎΠ³Π΄Π° ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π³ΠΎΡΠΈΠ·ΠΎΠ½ΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΌΠ΅Π³Π°ΠΌΠ΅Π½Ρ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ ΠΏΠΎΠ΄ΠΌΠ΅Π½Ρ ΠΊΠΎΡΠ½Π΅Π²ΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². PrimeFaces Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΈΠΌΠ΅Π΅Ρ ΡΠΆΠ°ΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ ΡΠ΅ΠΌ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄Π²ΠΈΠΆΠΊΠΎΠΌ ΡΠ΅ΠΌ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Sass Ρ ΠΏΡΡΡΡ ΡΠΎΡΠ½ΡΠΌΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , ΠΎΠ±ΡΠ°Π·ΡΠΎΠΌ ΡΠ΅ΠΌΡ ΠΈ Π·Π½Π°ΡΠΊΠ°ΠΌΠΈ ΡΡΠΈΡΡΠΎΠ².
ΠΡΡΠ³ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Java
Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° — ΡΡΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π²ΠΈΠ΄ΠΎΠ² Java-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° Π΄ΡΡΠ³ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ java-
- ΠΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
- ΠΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ
- ΠΠ΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
- ΠΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
- ΠΠ°ΡΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
- ΠΠ΅Π±-ΡΠ΅ΡΠ²Π΅ΡΡ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ
ΠΠ°Π²Π°ΠΉΡΠ΅ ΠΏΠΎΡΠΌΠΎΡΡΠΈΠΌ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Java-
1.ΠΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
Java ΡΡΠΈΡΠ°Π΅ΡΡΡ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. ΠΡΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎ Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ, ΡΠ°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Android Studio ΠΈ Kotlin. Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π·Π°Π΄ΡΠΌΠ°ΡΡΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ ΡΠΎΠ»ΡΠΊΠΎ Java? ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π° JVM, ΡΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π°Π²ΡΠΎΠΌΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ DVK Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΠΉ.
ΠΡΠΈ ΡΠ°ΠΉΠ»Ρ Π²Ρ ΠΎΠ΄ΡΡ Π² Π»ΡΠ±ΠΎΠΉ ΠΏΠ°ΠΊΠ΅Ρ APK ΠΏΠ°ΠΊΠ΅ΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Android. Π‘ java ΠΈ ΡΡΠΈΠΌ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠΌ OOps. ΠΠ½ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΡΠ°Π»ΡΠ½ΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΡ, ΠΏΡΠΎΡΡΡΡ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Ρ Android.ME (Micro Edition) — ΡΡΠΎ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠ΅Π³ΡΠ»ΠΈΡΡΠ΅ΠΌΠΎΠ΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠ΅ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΡ Π΄Π»Ρ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ².
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ Java ME, ΡΠ²Π»ΡΡΡΡΡ ΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΡΠΌΠΈ, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΌΠΈ ΠΈ ΠΈΠΌΠ΅ΡΡ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π°. ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Java ME ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ Π±ΡΠΎΡΠΈΡΡ Π²ΡΠ·ΠΎΠ² ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅ΠΌΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π°Ρ , Π·Π°Π½ΠΈΠΌΠ°ΡΡ ΠΌΠ΅Π½ΡΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ, Π΄ΠΈΡΠΏΠ»Π΅Ρ ΠΈ ΠΌΠΎΡΠ½ΠΎΡΡΠΈ.
2. ΠΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ
ΠΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ — ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ Π±ΠΎΠ»ΡΡΠΈΡ ΡΠ»Π΅ΠΊΡΡΠΎΠΌΠ΅Ρ Π°Π½ΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΈΡΡΠ΅ΠΌ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ.ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΡΠΈΡΡΠ΅ΠΌΡ Java Embedded ΡΠ²Π»ΡΡΡΡΡ SIM-ΠΊΠ°ΡΡΡ, ΠΏΡΠΎΠΈΠ³ΡΡΠ²Π°ΡΠ΅Π»ΠΈ Π΄ΠΈΡΠΊΠΎΠ² Blue-ray, ΡΠ΅Π»Π΅Π²ΠΈΠ·ΠΈΠΎΠ½Π½ΡΠ΅ ΠΈ ΠΊΠΎΠΌΠΌΡΠ½Π°Π»ΡΠ½ΡΠ΅ ΡΡΠ΅ΡΡΠΈΠΊΠΈ ΠΈ Ρ. Π.
ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ Π½Π΅ ΠΈΠΌΠ΅ΡΡ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°: Π±Π΅Π· ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΡ, Π±Π΅Π· ΠΌΡΡΠΈ ΠΈ Π±Π΅Π· Π΄ΠΈΡΠΏΠ»Π΅Ρ. . ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ΅Π°Π³ΠΈΡΡΡΡ Π½Π° Π²Ρ ΠΎΠ΄Π½ΡΠ΅ ΡΠΈΠ³Π½Π°Π»Ρ Π΄Π°ΡΡΠΈΠΊΠΎΠ², ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΡΠ΅ΡΠΌΠΎΠΌΠ΅ΡΡΡ ΠΈ Π°ΠΊΡΠ΅Π»Π΅ΡΠΎΠΌΠ΅ΡΡΡ. Π Π±Π΅Π·Π³ΠΎΠ»ΠΎΠ²Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΊ ΡΠ΅ΡΠΈ, ΠΌΠΎΠΆΠ΅Ρ ΡΠΏΡΠ°Π²Π»ΡΡΡ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠΎΠΌ ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ Π²Π΅Π±-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ (ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ).
3. ΠΠ΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
Java ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΠΏΠΎΠ»Π½ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅ΡΠ²Π»Π΅ΡΠΎΠ², struts ΠΈΠ»ΠΈ JSP.ΠΠ΄Π½Π°ΠΊΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Java ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, ΡΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π³ΠΎΡΡΠ΄Π°ΡΡΡΠ²Π΅Π½Π½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π΄Π»Ρ Π·Π΄ΡΠ°Π²ΠΎΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΡ, ΡΠΎΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ, ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΡΡΠ°Ρ ΠΎΠ²Π°Π½ΠΈΡ.
ΠΠΎΠΌΠΏΠ°Π½ΠΈΡ ΡΠ°ΠΊΠΆΠ΅ Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π»Ρ ΡΠ»Π΅ΠΊΡΡΠΎΠ½Π½ΠΎΠΉ ΠΊΠΎΠΌΠΌΠ΅ΡΡΠΈΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΡΠΊΡΡΡΠΎΠ³ΠΎ ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Broadleaf.
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° Π²Π΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
- ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
- ΠΠ΅Π±-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ.
- ΠΠΎΡΡΡΠΏΠ΅Π½ Π½Π° ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ .Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° ΡΠ°Π±ΠΎΡΠ΅ΠΌ ΡΡΠΎΠ»Π΅.
- Π ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π±ΡΠ°ΡΠ·Π΅ΡΠΎΠ².
4. ΠΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
Java EE — ΠΏΠΎΠΏΡΠ»ΡΡΠ½Π°Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Java Enterprise Edition, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠ°Ρ API ΠΈ ΡΡΠ΅Π΄Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π»Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΈ Π·Π°ΠΏΡΡΠΊΠ° ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΊΠΎΡΠΏΠΎΡΠ°ΡΠΈΠ²Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠ΅ΡΠ΅Π²ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π²Π΅Π±-ΡΠ»ΡΠΆΠ±Ρ.
5. ΠΠ°ΡΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
Java ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ°ΡΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² Π½Π°ΡΡΠ½ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡΡ ΠΈ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΡ .ΠΡΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π±ΡΡΡΡΡ, Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½Ρ ΠΈ Π½Π΅ ΡΡΠ΅Π±ΡΡΡ ΠΎΡΠΎΠ±ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ»ΡΠΆΠΈΠ²Π°Π½ΠΈΡ.
6. ΠΠ΅Π±-ΡΠ΅ΡΠ²Π΅ΡΡ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ
Π‘Π΅ΡΠ²Π΅Ρ — ΡΡΠΎ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΈ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π½Π° Π·Π°ΠΏΡΠΎΡΡ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ, ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΠΊΠ°ΠΊ ΠΊΠ»ΠΈΠ΅Π½Ρ. ΠΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΠ΅Π²ΡΠΌ ΡΠ΅ΡΡΡΡΠΎΠΌ ΠΈ Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΠ»ΡΠ³ΠΈ. ΠΡΠ°ΠΊ, ΡΠ΅Π³ΠΎΠ΄Π½Ρ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ° Java ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΡ Java ΠΈ ΡΠ΅ΡΠ²Π΅ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Java. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π² ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² ΠΏΡΠ΅ΠΎΠ±Π»Π°Π΄Π°ΡΡ Apache Tomcat, simple, Jo !, Rimfaxe ΠΈ Ρ. Π.
ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ΅ΡΠ²Π΅Ρ — ΡΡΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ, ΠΈΠ»ΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ, ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ, ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΠΈ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π½Π° Π·Π°ΠΏΡΠΎΡ, ΡΠ΄Π΅Π»Π°Π½Π½ΡΠΉ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌΠΈ ΠΈΠ»ΠΈ, ΡΠΊΠ°ΠΆΠ΅ΠΌ, ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠΌ. ΠΠ΅Π±-ΡΠ΅ΡΠ²Π΅Ρ ΠΈ ΡΠ΅ΡΠ²Π΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ — ΡΡΠΎ Π΄Π²Π° ΡΠΈΠΏΠ° ΡΠ΅ΡΠ²Π΅ΡΠΎΠ².
ΠΠ΅Π±-ΡΠ΅ΡΠ²Π΅Ρ ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΡΠ΅ΡΠ²Π»Π΅ΡΠΎΠ², Π° Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° Ρ ΠΎΡΡΠΈΠ½Π³Π΅ Π²Π΅Π±-ΡΠ°ΠΉΡΠΎΠ². Π ΡΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠ°ΠΊ ΡΠ΅ΡΠ²Π΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ Π²Π΅Π±-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΠΈ EJB-ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ.
Π Π°Π±ΠΎΡΠ°ΡΡΠΈΠΉ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅Ρ
ΠΡΠΎΡ ΡΠ΅ΡΠ²Π΅Ρ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π½Π° Π·Π°ΠΏΡΠΎΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π΄Π²ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ².
- ΠΡΠΎ Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΎΡΠ²Π΅Ρ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ΅Π½Π°ΡΠΈΡ ΠΈ ΡΠ²ΡΠ·ΠΈ Ρ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ .
- ΠΡΠΎ ΠΎΡΠΏΡΠ°Π²ΠΊΠ° ΡΠ°ΠΉΠ»Π° ΠΊΠ»ΠΈΠ΅Π½ΡΡ, ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ³ΠΎ Ρ Π·Π°ΠΏΡΠΎΡΠ΅Π½Π½ΡΠΌ URL.
ΠΡΠΈΠΌΠ΅Ρ Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠ°
- ΠΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½ΠΎ ΠΊΠ»ΠΈΠ΅Π½ΡΡ Π² Π²ΠΈΠ΄Π΅ HTTP-ΠΎΡΠ²Π΅ΡΠ°.
Π Π°Π±ΠΎΡΠΈΠΉ ΡΠ΅ΡΠ²Π΅Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ
ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΡΠ»ΡΠΆΠ±Π°ΠΌΠΈ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠ°Π½ΠΈΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ ΠΈ Π·Π°ΡΠΈΡΡ ΠΏΡΡΠ΅ΠΌ Π½Π°ΡΡΠ°ΠΈΠ²Π°Π½ΠΈΡ ΠΈ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ Π΄Π°Π½Π½ΡΠΌ. Π ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ½ΡΠΉ ΠΏΡΠΎΠ΄ΡΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π½Π° ΡΡΠ΅Π΄Π½Π΅ΠΌ ΡΡΠΎΠ²Π½Π΅ ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ.
ΠΡΠΈΠΌΠ΅Ρ ΡΠ΅ΡΠ²Π΅ΡΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ
- ΠΡΠΎ ΡΠ΅ΡΠ²Π΅Ρ Ρ ΠΎΡΠΊΡΡΡΡΠΌ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΌ ΠΊΠΎΠ΄ΠΎΠΌ ΠΎΡ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²Π° JBOSS
- Glassfish, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ Sun Microsystem. Π‘Π΅ΠΉΡΠ°Ρ ΠΏΡΠΈΠΎΠ±ΡΠ΅Π» Ρ ΠΏΠΎΠΌΠΎΡΡΡ oracle.
- Weblogic Π΄Π°Π΅Ρ Ρ ΠΎΡΠ°ΠΊΡΠ»ΠΎΠΌ.
- Websphere Π΄Π°Π΅Ρ Ρ IBM.
7. ΠΠ±Π»Π°ΡΠ½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
ΠΠ±Π»Π°ΡΠ½ΡΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΎΠ·Π½Π°ΡΠ°ΡΡ, ΡΡΠΎ Π΄ΠΎΡΡΠ°Π²ΠΊΠ° ΠΠ’-ΡΠ΅ΡΡΡΡΠΎΠ² ΠΏΠΎ Π·Π°ΠΏΡΠΎΡΡ ΡΠ΅ΡΠ΅Π· ΠΠ½ΡΠ΅ΡΠ½Π΅Ρ Ρ ΠΎΠΏΠ»Π°ΡΠΎΠΉ ΠΏΠΎ ΠΌΠ΅ΡΠ΅ ΠΏΠΎΡΡΡΠΏΠ»Π΅Π½ΠΈΡ. ΠΡΠΎ Π΄Π°Π΅Ρ ΠΎΡΠ²Π΅Ρ Π½Π° Π²ΠΎΠΏΡΠΎΡ ΠΎΠ± ΠΠ’-ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ΅ ΠΏΠΎ Π½Π΅ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎΠΉ ΡΠ΅Π½Π΅.Java ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²Π°ΠΌ Π²ΡΠ±ΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ Π²Π°ΠΌ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² ΠΎΠ±Π»Π°ΠΊΠ΅, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ SaaS, LaaS ΠΈ PaaS.
ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠ»ΡΠΆΠΈΡΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΡΠΌ Π΄Π»Ρ ΡΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ²ΠΎΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ Π² ΠΎΠ±ΠΌΠ΅Π½Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΠ³ΠΎ, ΡΡΠΎ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ.
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
Java Π΄Π²ΠΈΠΆΠ΅ΡΡΡ Π²ΠΎ Π²ΡΠ΅Ρ ΠΎΠ±Π»Π°ΡΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ. Java-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡ Π²Π΅Π·Π΄Π΅. ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ Π»ΡΠ΄ΠΈ ΡΠΎΠ±ΠΈΡΠ°ΡΡΡΡ Π½Π°ΡΠ°ΡΡ Π±ΠΈΠ·Π½Π΅Ρ ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ.ΠΡ ΡΠ°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ java ΠΈΠ·-Π·Π° Π΅Π³ΠΎ ΡΠΈΠ»ΡΠ½ΡΡ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π° Π»ΡΠ±ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅. Π ΡΡΠΎΠΌ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ java.
ΠΡΠΎ Π»ΡΡΡΠΈΠΉ ΡΠ·ΡΠΊ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π±Π°Π½ΠΊΠΎΠ²ΡΠΊΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π§ΡΠΎ ΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎ ΡΠ΅ΡΡΠ΅Π·Π½ΠΎΠΉ Π·Π°ΡΠΈΡΡ Π² ΡΡΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ. Java — Π»ΡΡΡΠΈΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π±ΠΎΡΡ Π² Π΄ΠΎΠΌΠ΅Π½Π°Ρ Java. ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π½ΡΠΆΠ΄ Π±ΠΈΠ·Π½Π΅ΡΠ°. Π ΡΠ°ΠΊΠΆΠ΅ Π΄Π΅Π»Π°Π΅ΠΌ java-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Data Science. ΠΠ½ΠΎΠ³ΠΈΠ΅ Π»ΡΠ΄ΠΈ ΠΈΠ·ΡΡΠ°ΡΡ java, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΎΠ½ Π±ΡΡΡΡ Π² ΡΠ·ΡΠΊΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠΎΠ³Π΄Π° Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π±ΠΎΠ»Π΅Π΅ Π·Π°ΡΠΈΡΠ΅Π½Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π»Π΅Π³ΠΊΠΎ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΡΡΡ. Π’Π°ΠΊ ΡΡΠΎ Java-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡΡ Π² Π±ΠΈΠ·Π½Π΅ΡΠ΅ ΠΈ Π½Π° ΡΠ°Π±ΠΎΡΠ΅. ΠΡΠ΅ Π»ΡΠ΄ΠΈ Ρ ΠΎΡΡΡ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ Π²Π΅Π±-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ. ΠΠΎΡΠΎΠΌΡ ΡΡΠΎ Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΎΠ±Π»Π°ΡΡΡ Π²Π΅Π±-ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΡΠ΅Π½Ρ Π²ΠΎΡΡΡΠ΅Π±ΠΎΠ²Π°Π½Π°.
Java ΠΎΡΠ΅Π½Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ ΡΠ·ΡΠΊΠΎΠ². Π Π½Π΅ΠΌ ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, ΠΏΠ°ΠΊΠ΅ΡΠΎΠ². ΠΡΠΎ ΠΎΡΠ΅Π½Ρ Π±ΡΡΡΡΡΠΉ ΡΠ·ΡΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΈ Java ΠΎΠ±ΡΡΠ½ΠΎ Π²Π΅Π·Π΄Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ, ΠΊΠ°ΠΊ Python GUI, Django Framework, ΡΠ°ΠΊ ΡΡΠΎ ΡΡΠΎ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎ Π»ΡΠ΄Π΅ΠΉ.
ΠΠΎΡ ΠΈ Π²ΡΠ΅!
ΠΠ°Π΄Π΅ΡΡΡ, Π²Π°ΠΌ ΠΏΠΎΠ½ΡΠ°Π²ΠΈΠ»Π°ΡΡ ΡΡΠ°ΡΡΡ, ΠΏΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΈ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΠ΅ΡΡ Π·Π½Π°Π½ΠΈΡΠΌΠΈ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ.
.