Od kilku miesięcy jestem bardziej aktywny na niektórych grupach dotyczących Javy. Zwłaszcza tych na Facebooku. Nieodłącznym elementem, który się tam pojawia, są pytania dotyczące pisania aplikacji w Java Swing. Dlaczego? Po co?
Podyskutujmy z tym chwilę.
Krótko, co to jest Java Swing?
Java Swing to zestaw komponentów do tworzenie graficznych interfejsów użytkownika, czyli GUI (ang. Graphical User Interface), w języku Java. Historycznie zestaw ten powstał, żeby nadać trochę elastyczności rozwiązaniom okienkowym, które wcześniej pisane były w AWT (Abstract Window Toolkit).
Teoretycznie Swing miał zbliżać aplikacje okienkowe w Java do tzw. look & feel znanego z systemów operacyjnych. Praktyka okazała się w tym przypadku dość brutalna. Tylko nieliczne aplikacje napisane w Java osiągają taki poziom wizualny, że chętnie się nich korzysta (np. IntelliJ Idea).
Pragmatycznie popatrzmy na rynek
Na warsztat weźmy cztery popularne portale z ogłoszeniami o pracę:
Rzeczywistość jest następująca. Na dzień 2020-05-21 i hasło java:
- 388 ofert https://nofluffjobs.com/pl/jobs/java?criteria=java&page=1
- 112 ofert https://bulldogjob.pl/companies/jobs/s/skills,Java
- 635 ofert https://www.pracuj.pl/praca/java;kw?rd=30
- 46840 ofert https://www.indeed.com/q-Java-jobs.html
Hasło swing daje z kolei następujące rezultaty:
- 3 oferty https://nofluffjobs.com/pl/jobs?criteria=swing&page=1
- 1 oferta https://bulldogjob.pl/companies/jobs/s/skills,swing
- 6 ofert https://www.pracuj.pl/praca/swing;kw
- 307 ofert https://www.indeed.com/jobs?q=Java+swing&l= (w tym przypadku zawężone są kryteria do java swing ze względu na to, że swing pojawia się w różnych branżach w różnych kontekstach i niemożliwe jest praktycznie znalezienie relewantnych ofert tylko na to hasło w języku amerykańskim).
Co z tego wynika?
#1 Zauważ, że ofert z hasłem java jest od 105 do 130 razy więcej na rynku polskim niż ofert, w których pojawia się swing. Na rynku amerykańskim ten parametr jest jeszcze wyższy.
#2 Weź pod uwagę, że swing pojawia się w ofertach, w których i tak jest również java.
#3 Weź pod uwagę też to, że swing może pojawić się w ofercie, ale to i tak nie znaczy, że będziesz coś w nim robił. Wystarczy, że osoba przygotowująca ogłoszenie kopiuje z roku na rok zestaw wymagań. Zauważ, że w drugą stronę takie coś raczej się nie zdarzy (nie będziesz programował w Swing bez znajomości Javy).
Nie trudno zauważyć, że ofert pracy, w których pojawia się swing jest niewiele, a sam swing jest tylko dodatkiem do java.
Skąd to się bierze?
Wróćmy teraz do stwierdzenia z pierwszego akapitu. Skąd bierze się duża liczba pytań i generalnie zainteresowanie Java Swing na grupach dla początkujących programistów?
Moim zdaniem jest kilka powodów. Ale wszystkie sprowadzają się do jednej głównej przyczyny. Źródła wiedzy są skoncentrowane na tym, co można zrobić w języku programowania jakim jest Java. Nie mówią o tym, co jest rzeczywiście w nim wykorzystywane, a co jest mimo wszystko dość pobocznym elementem w realnym życiu developera.
I tak:
Książki skupione są na omówieniu elementów języka, w których Swing jest jednym z jego elementów. Nie spodziewałbym się raczej w książce informacji o tym, że np. kolejne 50 stron o bibliotece Swing są fajne, ale i tak tego nie użyjesz w pracy zawodowej.
Kursy idą, moim zdaniem, podobną ścieżką. Przy czym tutaj zwykle pojawia się też motyw większej ekspresji aplikacji okienkowej niż zwykłej konsoli. Czy może to sprawiać, że uczestnik kursu czuje, że programuje coś bardziej konkretnego, czy namacalnego? Warto odpowiedzieć sobie samemu na takie pytanie.
Uczelnie, wg mnie wciąż dalekie od znajomości rynku komercyjnego, też raczej skupiają się po prostu na przerobieniu materiału.
Czy warto zgłębiać temat Java Swing?
Jakiś czas temu zastanawiałem się nad tym pytaniem. Brałem pod uwagę to, że być może uczenie się biblioteki Java Swing ma sens w sytuacjach, gdy chcemy nauczyć się pewnych technik, np. obsługi event listenerów w aplikacjach okientowych. Jednak tak naprawdę jest to dosyć naciągana próba znalezienia usprawiedliwienia dla nauki Java Swing.
Z perspektywy 12 lat rozwijania komercyjnie oprogramowania w Javie, ani razu przez ten czas nie napisałem linijki kodu w Java Swing. Podobnie, jak wiele moich koleżanek i kolegów.
Jeśli jesteś więc na początku swojej drogi z programowaniem. Jeśli chcesz dostać szybko pracę. To moim skromnym zdaniem, marnowanie czasu na technologię, w której prawdopodobnie nic komercyjnie nie napiszesz jest stratą czasu i energii.
Nie trać więc tego czasu i energii na rzeczy, które w sposób realny nie przybliżą Cię do zostania Junior Java Developerem.
A jeśli chcesz uczyć się rozwiązań okienkowych to jest wiele lepszych narzędzi do tego. A praktycznie patrząc, jeśli interesuje cię warstwa UI połączona z Javą, to ucz się raczej rozwiązań budowania aplikacji web’owych z użyciem frontendowych szkieletów Angular, czy React. W backendzie używaj Javy. To da Ci zdecydowanie większe szanse na znalezienie fajnej pracy niż uczenie się Java Swing.
Chętnie podyskutuję. Czekam na Twój komentarz 😎
Jeśli szukasz generalnie motywacji do zostania Junior Java Developerem to koniecznie przeczytaj Motywacja pracy jako Junior Developer. Artykuł ten porusza ważną kwestię dążenia do Twojego celu.
A jeśli chcesz wiedzieć, co warto poznać, żeby Twoja droga do kariery Junior Java Developera przebiegała sprawnie, to Handbook jest właśnie dla Ciebie. Kliknij poniżej:
Ja bym dodał że: – Aplikacje desktopowe są obecnie o wiele mniej popularne niż aplikacje webowe. Najczęście desktopy tworzy się jeszcze tam gdzie istnieje konieczność interakcji ze sprzętem np. oprogramowanie do kalibracji aparatów słuchowych. – JavaFX jest aktywnie rozwijanym następcą Swinga. Jeżeli ktos zastanawia się nad tworzeniem nowej aplikacji GUI w Javie to powinien wybrać właśnie JavaFX. Generalnie wykonywanie aplikacji GUI w Javie na komputery stacjonarne, to nie jest najlepszy pomysł. Java od zawsze miała problemy z zapewnieniem natywnego wyglądu i wspieraniem wszystkich funkcjonalności danego systemu operacyjnego. W mojej opinii Qt jest znacznie lepszą alternatywą. Dla aplikacji pisanych tylko i… Czytaj więcej »
To prawda, że aplikacje webowe powoli wypierają te desktopowe. Zresztą już teraz dużo aplikacji „desktopowych” jest w zasadzie oparte o rozwiązania dla web, jak np. Slack Desktop napisany w Electron.
Dzięki za komentarz 🙂
FX będące historycznie nowszym szybciej zostało ubite
bardzo płytki artykuł. Właściwie tylko o statystykach z portali rekrutacyjnych. Zero merytorycznych odniesień. A szkoda, może to nie jest najbardziej modny framework, ale zdecydowanie dobrze zaprojektowany, i kontakt z nim ustawia dobrze programistę w programowaniu obiektowym
Cześć, dzięki za krytyczny komentarz. Artykuł jest oparty o statystyki, jak sam zauważyłeś. Moim zdaniem wskazują one całkiem dobrze obecne zainteresowanie tą technologią na rynku pracy. Rynek w tym momencie daje jasny sygnał, że nie jest to framework, który daje jakieś perspektywy pracy. Mam też odmienne zdanie na temat jego przydatności do nauki programowania obiektowego. Myślę, że mamy w tym względzie inne perspektywy.