Cześć, czy jeżeli chcę w przyszłości zawodowo programować w Javie, to powinienem nauczyć się Swinga? Czytałem, że następcą Swing jest JavaFX i nawet Oracle zaleca, aby wszystkie aplikacje posiadające GUI tworzyć już tylko na JavaFX. Jednak z drugiej strony dużo napisanych programów zostało stworzonych z wykorzystaniem Swinga i podobno powinno się go znać przynajmniej na średnim poziomie, bo może się kiedyś zdarzyć, że w pracy trzeba będzie zmodyfikować/ulepszyć program napisany w Swingu.
Jak z tym jest?
Sens nauki Swinga jest tylko taki ze możesz potrzebować supportować napisane w nim aplikacje, tak jak sam zauważyłeś. Sensu nauki JavaFX nie ma wcale, bo takich aplikacji praktycznie nie ma i nie będzie. JavaFX wypadła nawet z JDK i jest teraz dodatkową, niezależnie rozwijaną biblioteką...
Po co się uczyć tego na zapas? JavaFX i Swing to nisza, większość to jednego aplikacje webowe i tutaj warto zainwestować czas. Jak kiedyś gdzieś trafisz i będziesz musiał coś pisać w Swingu to wtedy się nauczysz :)
A czy w Javie pisze się często aplikacje desktopowe z GUI?
Np taka biblioteka, jaką zrobił ten koleś na zakończenie całego kursu: link
Często - tak, jako jakieś aplikacje na zaliczenie na studiach
Często komercyjnie - nie, bo po co robić aplikację z topornym GUI (w Swing) lub znośnym, ale nie fancy GUI w czymś, czego prawie nikt nie używa, skoro można zrobić to samo w Springu i wystawić przez weba, bez zmuszania ludzi do ściągania jakiś jarów lub instalatorów? ;)
A ja myślę że jak uczysz się programować w Javie to wcale nie jest to pozbawione sensu napisania aplikacji w Swingu czy JavaFX. Owszem, komercyjnie tego nie będziesz używał, ale będzie to dobra okazja poćwiczyć pewne elementy z programowania które może przykrywać taki Spring, jak naprzykład wielowątkowość czy operacje IO :)
Hej. Może powiem jak to wygląda z mojej perspektywy - trenera programowania:) Zdecydowanie polecam chociaż pobawić się Swingiem, ale nie dlatego, że pisanie aplikacji okienkowych będzie Ci jakoś bardzo przydatne w pracy. Podczas nauki programowania Swing jest świetnym poligonem do zabawy z obiektowością w praktyce + Swing jest względnie łatwy i przyjemny dla początkującego. Dodatkowo częściowo oswajasz się z wzorcami projektowymi (listener -> observer). No i przede wszystkim aplikacja z wyskakującym okienkiem daje o wiele więcej satysfakcji, niż konsolowa:) JavaFX jest równie mało przydatna w pracy komercyjnej, ale do tego jest jeszcze strasznie ciężka do opanowania na początek.
Panowie, żeby nie zaśmiecać forum innym tematem, to jeszcze tutaj dopytam: skoro Java nie jest wykorzystywana do pisania aplikacji desktopowych to... do czego jej się używa? xd
Pewnie głównie do pisania aplikacji mobilnych na androida, a także przetwarzania danych na serwerze, czyli backendu (dobrze myślę? xd). Czy jest coś jeszcze?
kario97 napisał(a):
Panowie, żeby nie zaśmiecać forum innym tematem, to jeszcze tutaj dopytam: skoro Java nie jest wykorzystywana do pisania aplikacji desktopowych to... do czego jej się używa? xd
Pewnie głównie do pisania aplikacji mobilnych na androida, a także przetwarzania danych na serwerze, czyli backendu (dobrze myślę? xd). Czy jest coś jeszcze?
Do napisania minecrafta. Reszta zastosowań to jakieś nieważne śmieci.
Do pisania backendu, jednak backend to nie tylko "przetwarzanie danych na serwerze". Z pomocą Javy pisze się rdzeń działania większości aplikacji. To nie tylko przetwarzanie danych, ale też mechanizmy logowania, zapisywanie do bazy danych, zwracanie danych połączonych z kilku różnych źródeł a do tego zawsze można dodać "front" czyli HTMLa, który jest wypełniany danymi z aplikacji. Do tego połączenia z zewnętrznymi serwisami, praca kilkunastu aplikacji jako jeden spójny system i w sumie wiele innych:) Większość systemów informatycznych ma pod spodem Javę. Do tego oczywiście Android + desktop - nie chodzi o to, że nie pisze się go w Javie tylko generalnie teraz powstaje bardzo mało aplikacji desktopowych w porównaniu do webowych.
Co do samego "przetwarzania danych" bo możesz to trochę błędnie pojmować - każda Twoja interakcja z dowolnym systemem to dane. Wysłanie formularza rejestracji, kilknięcie "lajka" na fejsbuku, otworzenie posta na forum to operacja przetwarzania danych - coś jest zwracane/wyszukiwane, zapisywane, aktualizowane etc. Java jest odpowiedzialna właśnie za to - nie rozum przypadkiem przetwarzania danych jako jakiegoś liczenia statystyk w tle na serwerze.
Jeśli uczysz się Javy to swing jest spoko, a jeśli chcesz się nauczyć robić desktopowe aplikacje i pracować w tym komercyjnie to liczy się chyba tylko .NET WPF i stare już WinForms, oraz UWP (chociaż to też nisza). Ja tak zaczynałem i nie miałem później problemu z przesiadką na Jave i backend