Jednym z często zadawanych pytań przez osoby które dopiero zaczynają się uczyć Javy, są pytania dotyczące w kontekście aplikacji desktopowych z wykorzystaniem JavyFX lub Swinga. Temat jest mi wyjątkowo bliski – przez pierwsze 3 lata komercyjnego programowania w Javie, tworzyłem system desktopowy 😊 Dziś porozmawiamy sobie na te tematy 😊
01. Krótka historia Javy na desktopach
Od pierwszej wersji Javy, wydanej w 1995 roku – Java posiadała zestaw narzędzi do budowy graficznego interfejsu użytkownika. W tamtych czasach było Abstract Window Toolkit, znany szerzej jako AWT.
AWT było prekursorem do tworzenia interfejsu użytkownika. Zaledwie dwa lata później powitaliśmy Swinga który został zbudowany z założeniem wyeliminowania większości problemów związanych z AWT. Swing bardzo szybko wyparł AWT, i stał się głównym narzędziem do budowy interfejsu użytkownika. Swing jest dostępny od wersji Javy 1.2.
Swing rządził niepodzielnie aż do 2008 roku, w którym to Oracle zaprezentowała Javę FX – nowe narzędzie do tworzenia interfejsu użytkownika.
Od tego momentu zaczął się podział – część developerów została przy Swingu, część przeszła na Javę FX, a jeszcze większa część w ogóle porzuciła Javę na desktopy.
02. Swing vs JavaFX
JavaFX w pierwszych fazach rozwoju borykała się wieloma problemami, mówiąc krótko nie była to dopracowana technologia, przez co Swing ciągle był numerem jeden jeśli chodzi o budowanie interfejsu użytkownika na desktopach.
Sytuacja zmieniła się wraz nadejściem Javy 8, JavaFX została dodana do głównego JDK/JRE Javy, a większość problemów została już poprawiona. Od tego momentu można się spotkać z odwróceniem trendu – JavaFX była częściej polecana przez ekspertów, jako nowocześniejsze narzędzie w porównaniu do już przestarzałego Swinga.
Jednak mimo to iż JavaFX obecnie jest bardziej polecana, to jeden z największych projektów desktopowych napisanych w Javie, ciągle używa Swinga – mowa tutaj oczywiście o jednym z najlepszych IDE – IntelliJ.
IntelliJ, czyli najbardziej zaawansowany IDE ciągle używa Swinga do budowy swojego interfejsu. Trzeba im to przyznać że ludzie z JetBrains zrobili naprawdę niesamowitą robotę – wszystko działa naprawdę świetnie, przez co produkt zdobył niesamowitą popularność.
03. Czy w ogóle warto uczyć się Javy na desktopy?
Jaka osoba która przez pierwsze 3 lata komercyjnego programowania tworzyłem aplikacje desktopowe w Javie, jestem zdania że jest to ślepy zaułek. Moim zdaniem, jest to ciekawostka którą można się zainteresować – jednak nie poświęcałbym tym tematom zbyt wiele czasu.
Po pierwsze – nie dajmy sobie wmówić że jeden konkretny język jest super do wszystkiego – tak nie jest. Java idealnie się sprawdza do rozwiązań po stronie backendowej, jednak jeśli chodzi o tworzenie interfejsu użytkownika na desktopy ma zdecydowanie więcej wad niż zalet.
Jedną z głównych wad Javy podczas tworzenia aplikacji desktopowych jest to, iż użytkownik który chciałby z takiej aplikacji skorzystać, musi na swoim komputerze mieć zainstalowaną Javę w konkretnej wersji. Jeśli chodzi o JavaFX (w najnowszej wersji – 11+) musi mieć zainstalowane dodatkowe moduły które pozwolą mu na uruchomienie takiej aplikacji. Niby nic – a jednak, wiele razy borykaliśmy się z problemem że użytkownik miał Javę w dużo starszej wersji niż było to wymagane, a aktualizacja była niemożliwa ze względu na korporacyjne wymagania. Rozwój aplikacji przez to był bardzo utrudniony.
Java na desktopy jest jedynie niewielkim procentem tworzonych aplikacji przy pomocy Javy, większość systemów to systemu działające po stronie serwera. Bardzo ciężko jest znaleźć pracę gdzie tworzy się aplikacje desktopowe w Swingu/JavieFX – z tego też powodu ten wycinek Javy traktowałbym raczej hobbystycznie 🙂