Kurs Java

Droga do kariery programisty Java

W odpowiedzi na coraz częściej zadawane pytania przygotowaliśmy dla Was specjalny artykuł poświęcony tylko i wyłącznie kolejnym krokom w drodze do kariery programisty Java. Innymi słowy, odpowiadamy dziś na pytanie "Jak zostać programistą Java i jak się dalej rozwijać w tym zawodzie?". Jeśli zaczynasz przygodę z programowaniem w Javie, powinieneś(naś) przeczytać ten artykuł od deski do deski, bez pominięcia jakiegokolwiek szczegółu.

Dziś na rynku istnieje tyle możliwości i rozwiązań, że łatwo się w tym pogubić. Można postawić w swoim rozwoju na coś, co w dłuższej perspektywie nie przyniesie oczekiwanych efektów. To bardzo ważne, aby na początku dobrze zaplanować drogę, w którą wyruszasz.
Programista Java - Droga
Artykuł jest rozwinięciem mapy, którą widzisz na obrazku.
Interaktywna wersja jest dostępna na stronie głównej naszego portalu.
Krok pierwszy jest dosyć oczywisty. Tak jak uczysz się języka polskiego, tak samo tutaj uczysz się języka programowania Java. W przypadku języka polskiego z pojedynczych słów układasz zdania, a z tych zdań powstają potem rozbudowane treści. Musisz przy tym przestrzegać reguł gramatycznych. Podobnie jest z Javą. Najpierw poznajesz słowa kluczowe oraz podstawową składnię języka, a następnie zasady, które pozwalają łączyć wszystkie słowa w działający program.

Do pisania zdań w języku polskim wystarczy Ci zeszyt albo notatnik (lub edytor) w komputerze. W przypadku pisania kodu wykorzystujesz narzędzia, które pomagają Ci to robić. Są one trochę jak Word do edycji tekstu. Sprawdza na bieżąco, czy nie popełniasz błędów, ułatwia tworzenie struktur w postaci nagłówków czy tabelek oraz umożliwia automatyczne wyrównanie i przygotowanie wcięć.

Narzędzia programistyczne, czyli tak zwane IDE również pomogą Ci szybko zweryfikować czy Twój kod jest poprawny (za pomocą kompilatora). Wspomagają również jego tworzenie przez generację powtarzalnych fragmentów (np. konstruktorów) oraz formatują go, kiedy tylko tego potrzebujesz. Najlepsze IDE do programowania w Javie to Eclipse i IntelliJ. To zdecydowani liderzy wśród narzędzi programistycznych.

Podczas tworzenia programu kod piszesz w IDE w plikach tekstowych umieszczonych w konkretnym miejscu. Nazywamy je projektem. Projekt to taki folder, w którym znajdują się wszystkie pliki programu. W tym folderze znajdują się inne foldery, a w nich kolejne i tak dalej. Znasz to doskonale z systemu operacyjnego, gdzie przecież trzymasz wiele folderów.

Pliki z rozszerzeniem *.java to normalne pliki tekstowe. Masz do nich dostęp tak samo z poziomu IDE, jak i z poziomu katalogów na dysku. To co ważne, a o czym jeszcze nie wspomnieliśmy, to nazewnictwo. W Javie foldery pod głównym folderem projektu nazywamy pakietami.
Appa Notka. Nauczenie się Javy to podstawa. Możesz oczywiście równolegle interesować się kolejnymi krokami i uczyć się ich, jeśli czujesz taką potrzebę. Natomiast w tym momencie i tak najważniejsze jest doskonałe opanowanie zagadnień Javy. Im lepszą wiedzę zdobędziesz na tym etapie, tym lepiej i szybciej nauczysz się trudniejszych tematów, takich jak Spring, czy Hibernate. Te rozwiązania bazują na wszystkich możliwych funkcjonalnościach Javy i pominięcie jakiegoś zagadnienia na początku nauki może skutkować późniejszymi problemami w zrozumieniu tych frameworków.
Maven to narzędzie, które ułatwia Ci pracę z Twoim projektem. Pozwala na określenie, jakie biblioteki zewnętrzne muszą być ściągnięte z internetu, aby można było z nich skorzystać w projekcie. Nie będziesz przecież pisał(a) wszystkiego sam(a) od zera. W internecie istnieje wiele gotowych bibliotek, które są bardzo pomocne przy tworzeniu programów. Dzięki Mavenowi nie musisz ich szukać na stronach internetowych. Wystarczy, że znasz nazwę i wpiszesz ją do specjalnego pliku, a Maven sam ją znajdzie i ściągnie za Ciebie.

Co bardzo ważne, Maven może w prosty sposób zebrać wszystkie pliki z Twojego projektu wraz z katalogami (pakietami) i spakować je w jeden plik, podobnie jak to robi narzędzie kompresujące zip. Tutaj także powstaje archiwum (z rozszerzeniem jar), do którego mozesz zajrzeć, aby przejrzeć pliki, jakie znajdują się w środku. Zbudowanie takiego pliku zrobi za Ciebie Maven. Ty musisz tylko wpisać odpowiednie słowa (komendy), którymi nakażesz mu stworzenie paczki. Co ważne, taka paczka nazywa się artefaktem. W tym jednym pliku masz cały swój projekt. Możesz go wrzucić do dowolnej przechowalni (magazynu) takich artefaktów. Wtedy inne osoby będą miały do niego dostęp.
Twój program może robić bardzo niewiele, na przykład drukować na konsoli zwykły tekst albo odczytać zawartość pliku. Nie będzie to jednak specjalnie pomocne dla większej grupy ludzi. Co innego aplikacje webowe i każdy inny rodzaj programów, które są tworzone po to, aby ułatwiać innym ludziom codzienne życie. Zwykle ich głównym zadaniem jest przechowywanie i późniejsze udostępnianie danych. Pytanie brzmi, gdzie można zapisywać takie dane? Masz tutaj kilka możliwości.

Dane możesz po prostu zapisać w pliku, ale obsługa plików nie będzie wygodna, gdy danych zacznie przybywać. Możesz też przechować je w bazie danych, gdzie będą uporządkowane i wygodne w obsłudze. I to jest właśnie najlepsze rozwiązanie. Baza będzie takim odpowiednikiem papierowej biblioteki z podziałem na segmenty i regały z półkami. Tyle że tutaj nie będzie bibliotekarza. Sam(a) musisz wkładać dane w odpowiednie miejsca, wyszukiwać je, wyciągać i wkładać z powrotem. Do tego celu służy niezbyt skomplikowany język SQL a słowa, które wykorzystuje, tworzą zapytania (takie sqlowe odpowiedniki zdań). To one umożliwiają modyfikacje danych w bazie.

Nie ma innej rady. Chcesz być programistą Javy, musisz rozumieć, jak dokładnie działają bazy i poznać operacje, jakie możesz na nich wykonywać. Po tym, jak nauczysz się tworzyć proste zapytania, Twoim kolejnym rokiem będzie poznanie możliwości, jakie daje Javowy framework do obsługi baz danych z poziomu samego języka Java, a więc z pominięciem własnoręcznego tworzenia zapytań.
Appa Notka. Doskonałe opanowanie Javy oraz podstaw Mavena i SQL-a pomoże Ci wyróżnić się na tle innych i być może dzięki temu uda Ci się zdobyć swoją pierwszą pracę. W celu zwiększenia swoich szans na zatrudnienie dobrze jest zapoznać się z dobrymi praktykami, jakie obowiązują w pracy z kodem. Nazywamy je wzorcami projektowymi. Możesz na przykład zapoznać się z naszą stroną Wzorce projektowe. Strona ta jest ciągle rozwijana i niedługo pojawi się na niej jeszcze więcej treści.
Dane możesz zapisywać, wyszukiwać i usuwać bez żmudnego pisania zapytań SQL. Wystarczy, że baza istnieje, a Ty użyjesz frameworka, który przy pomocy Javy umożliwi Ci obsługę danych przechowywanych w bazie. Taki jest właśnie Hibernate. Ma swoje za uszami, ale to świetny i już wręcz legendarny framework do pracy z danymi z poziomu kodu programu. Musisz się go dobrze nauczyć, jeśli chcesz na dłużej zagościć w zawodzie programisty.

Hibernate udostępnia specjalne oznaczenia dla klas, które reprezentują tabele na bazie. Takie oznaczone klasy nazywamy encjami. Obsługą danych zajmuje się specjalny zarządca tych encji, czyli EntityManager. Musisz nauczyć się reguł, jakie obowiązują we współpracy z Hibernatem. Wtedy on odwdzięczy się dużą elastycznością i wygodą w obsłudze. Najlepsze jest to, że możesz napisać kod Java, a on zamieni go na SQL-a i sam będzie kontaktował się z bazą.
Jeśli poważnie myślisz o karierze programisty, to pamiętaj, że dziś programiści tworzą przede wszystkim aplikacje webowe i ogólnie systemy pracujące w sieci. Aplikacja webowa to taki zbiór stron w internecie (lub intranecie), które pozwalają na interakcję z użytkownikiem. Użytkownik przegląda dane, może je tworzyć, aktualizować i usuwać.

Tak samo jak każda strona, którą przeglądasz, tak i aplikacja webowa znajduje się pod adresem URL. To ten adres, który wpisujesz w przeglądarce. To, że w odpowiedzi na niego otrzymujesz widok strony, jest możliwe dzięki pracy protokołu HTTP (albo jego szyfrowanej wersji HTTPS). To, czego nie widzisz jawnie w pasku URL, to sposób, w jaki Twoje żądanie zostaje obsłużone. Mówimy tutaj o zastosowaniu odpowiedniej metody.

Standardowo, gdy wpisujesz w przeglądarce adres strony, uruchamiana jest metoda typu GET, co oznacza "pobierz". Ten rodzaj metody jest najbardziej popularny i służy do pobierania stron lub innych zasobów z serwera, który znajduje się w zupełnie innym miejscu niż Ty i Twoja przeglądarka. To jednak nie jest jedyna metoda protokołu HTTP.

Protokół korzysta z innych metod (na przykład POST, PUT), aby wysyłać dane na serwer z Twojej przeglądarki. To właśnie dzięki nim możesz modyfikować dane w aplikacjach webowych. Tworzy to ruch w drugą stronę. To nie przeglądarka otrzymuje dane, ale sama je wysyła, co pozwala na "złapanie ich" na serwerze. Kod Java, który jest tam uruchomiony, odbiera te dane i może je zapisać w bazie. Następnie inny użytkownik, otwierając właściwą stronę w przeglądarce, pobiera dane za pomocą metody GET.

Taka wymiana danych pomiędzy interfejsem użytkownika w przeglądarce a programem Java na serwerze odbywa się regularnie. Aplikację webową tworzy wówczas część kodu, który jest w przeglądarce i zwykle jest napisany w jakimś frameworku Javascript oraz gruba warstwa kodu Java znajdująca się na serwerze, wykorzystująca najczęściej Springa do przetwarzania danych oraz Hibernate'a w celu zapisu/odczytu danych do/z bazy.

REST to tak naprawdę zbiór praktyk, styl podejścia do tworzenia aplikacji webowej. Opiera się na wysyłaniu żądań i odbieraniu odpowiedzi przez protokół HTTP. Pojęcie jest ukierunkowane na konkretne zasoby w aplikacji webowej. Zasobem jest podmiot, na którym pracuje aplikacja. W naszej przykładowej aplikacji StartAPPa takim zasobem jest item, ale w aplikacji rezerwującej bilety do kina będzie to ticket, movie i tym podobne.

I tak na przykład zapisując obiekt nowego filmu (lub item, czy dowolny inny obiekt), wysyłamy z przeglądarki zestaw danych (z formularza), po czym na serwerze kod Java otrzymuje te dane i tworzy na ich podstawie obiekt filmu. Dalej obiekt transportuje dane do bazy za pośrednictwem Hibernate'a. Ostatecznie do przeglądarki wraca identyfikator zapisanego rekordu w bazie.

Odczyt danych odbywa się poprzez wysłanie z przeglądarki identyfikatora metodą GET. Na serwerze, po otrzymaniu identyfikatora, kod Java wykonuje pobranie filmu o tym id z bazy (przy pomocy Hibernate'a). Następnie dla danych pobranych z bazy tworzony jest obiekt, który ostatecznie zmieniany jest na formę rozumianą przez przeglądarkę i w tej formie jest do niej wysyłany.

REST opisuje wiele reguł i tylko częściowo je tu przedstawiliśmy (dowiesz się więcej, klikając w cyfrę 5 w kółeczku). Zagadnienie to jest zaawansowane i nie musisz dokładnie znać wszystkich jego składowych, zanim nie nauczysz się Javy, Mavena i Hibernate'a. Z tego powodu znajduje się dopiero na piątym miejscu na drodze do kariery. Pamiętaj jednak, że warto rozumieć podstawy. Wtedy łatwiej będziesz się orientował(a), do czego potrzebne są kolejno zdobywane umiejętności i jak to wszystko działa.
Do tej pory kilka razy napisaliśmy w tym artykule o serwerze i wykonywanym na nim kodzie Java. Pisaliśmy to zarówno w kontekście Hibernate'a, jak i prezentując REST-a. Za tym wszystkim stoi framework, który podobnie jak Hibernate stał się już legendą. Mowa oczywiście o frameworku Spring. To w nim będziesz wykorzystywać zdobytą dotychczas wiedzę w programowaniu Javie. Bez tej wiedzy ani rusz. Bardzo ważne jest doskonałe opanowanie umiejętności programowania w samej Javie przede wszystkim z tego powodu, że od tego momentu będziesz się uczył(a) dodatkowych reguł i nowych rozwiązań bazując na całym potencjale Javy.

Spring-a można uruchomić także bez udziału przeglądarki i wysyłania żądań oraz bez wiedzy z zakresu Hibernate'a, ale po pierwsze stracisz wiele z jego potencjału, a po drugie nie nauczysz się tworzyć nowoczesnych aplikacji webowych w Javie, a to powinno być Twoim celem.

Wracając do ścieżki kariery. Pisząc kod w ramach Springa, będziesz korzystać z wielu rozwiązań wspomagających odbieranie żądań przychodzących z przeglądarki i wysyłanie odpowiedzi z powrotem do niej. Przy okazji dane będą automatycznie zamieniane na obiekty Java, a obiekty Java na odpowiedzi rozumiane przez protokół HTTP i przeglądarkę. Spring będzie wiele obiektów tworzył za Ciebie, a Ty skupisz się na kodzie samego procesu, jaki ma zostać wykonany.
Appa Notka. Po zdobyciu wiedzy i umiejętności z kroków 1-6 staniesz się nie tylko programist(k)ą Javy, ale również zostaniesz tak zwanym backend deweloperem z umiejętnością budowy aplikacji webowych. Od tego momentu możesz albo skupić się na szlifowaniu swoich umiejętności backendowych, albo na dalszym zdobywaniu nowej wiedzy backendowej w postaci programowania webserwisów. Możesz też uznać, że interesuje Cię poznanie całego procesu budowy aplikacji webowej, a więc również frontendu. Decydując się na to, zmierzasz w kierunku pozycji fullstack dewelopera.
Na tym etapie potrafisz już tworzyć backend aplikacji webowej w Javie. To, że nie programujesz we frontendzie (w skrócie HTML plus Javascript po stronie przeglądarki), nie stanowi problemu, ponieważ najczęściej pracujesz w zespole, w którym istnieje również ktoś, kto specjalizuje się w takich rzeczach. Będziesz z nim współpracować. On powie, czego oczekuje od Ciebie, a Ty, co chcesz dostać od niego.

Przykładowo, jeśli zadanie dotyczy stworzenia formularza w aplikacji do obsługi filmów, frontendowiec przygotuje formularz i przycisk do wysyłania danych, a Ty napiszesz kod w Javie (z pomocą Springa), który przechwyci te dane oraz kod, który zapisze je do bazy.
Znajdując się w tym miejscu, jesteś już naprawdę daleko. Jeśli wcześniej dobrze wykonałe(a)ś swoją pracę nad zdobyciem umiejętności i doświadczenia to z pewnością masz już pracę, która Cię satysfakcjonuje i możesz sobie pozwolić na poszerzanie horyzontów. Na tym etapie różnie układają się kariery programistów.

Dużo zależy od projektów i zapotrzebowania na konkretne umiejętności w firmie, w której pracujesz, ale pamiętaj, że to przede wszystkim Ty szukasz dalszej drogi odpowiedniej dla Twoich zainteresowań i zgodnych z Twoją naturą. Na tym etapie już wiesz, czy interesuje Cię mistrzostwo w pracy z backendem, czy też bardziej chcesz pójść w stronę bardzo dobrej szerokiej wiedzy obejmującej cały proces tworzenia aplikacji webowej.

Mikroserwisy w takim bardzo prostym, wrecz banalnym ujęciu to taki podzielony backend aplikacji. Czyli zamiast tworzyć jeden duży projekt, który obsługuje wszystkie funkcjonalności aplikacji, tworzony jest zestaw projektów dedykowanych określonym elementom aplikacji. Projekty te są budowane jako niezależne artefakty i "nie widzą" nawzajem swojego kodu. Temat jest bardzo szeroki. Jeśli chcesz wiedzieć więcej, kliknij liczbę 8 w kółeczku.
Nie chcemy przedłużać, ponieważ kolejne punkty dotyczą już zagadnień mniej związanych z samą Javą i raczej służą poznaniu możliwości rozwoju w obszarze frontendu. Każdy z nich ma wystarczająco dużo informacji ukrytych na stronach pod kolejnymi cyframi. Zapraszamy Cię później do przejrzenia treści z tych stron.
Appa Notka. Zdobycie umiejętności z kroków 1-13 pozwoli Ci własnoręcznie stworzyć aplikację webową, którą pokazujemy na łamach naszego portalu. Pamiętaj jednak, że nikt raczej nikt nie będzie wymagał od Ciebie zbudowania takiej aplikacji tylko Twoimi rękami. Nad każdym projektem pracuje zwykle kilkuosobowy zespół programistów, z których każdy ma swoje mniejsze lub większe umiejętności i doświadczenie. Liczy się współpraca. Potrzebny jest czas.

Do tego coraz popularniejszym rozwiązaniem jest zatrudnianie backendowców (tych od Javy, kroki 1-6) oraz frontendowców, którzy nie znają się na Javie, ale mają świetnie opanowane umiejętności z kroków 9-13. Zespół może liczyć na przykład dwóch frontendowców, którzy dbają o to, co się dzieje po stronie przeglądarki i tworzą komponenty takie jak tabelki, listy, czy wykresy oraz dwóch backendowców zajmujących się tworzeniem tabel w bazie, oraz kodu przy pomocy Springa i Hibernate'a.

Istnieje jeszcze trzecia możliwość. W mniejszych firmach, z mniejszym budżetem czasami stosuje się rozwiązania hybrydowe. Wtedy backendowiec może tworzyć widoki aplikacji po stronie backendu, które później są przesyłane do przeglądarki. Rozwiązanie takie jest opisane na stronie Thymeleaf / JSP + JSTL.

Takie podejście oczywiście nie jest wydajne, ponieważ całość widoku ze wszystkimi wygenerowanymi znacznikami musi być wysłana przez sieć, ale bywa stosowane, jeśli firma tworzy oprogramowanie dla klienta w sieci wewnętrznej (intranet). Nie da się ukryć, że w otwartym internecie, jak również dla dużych klientów, szczególnie zagranicznych, aplikacje webowe nie są tworzone w ten sposób. Duże korporacje, dla których będziesz chciał(a) pracować (nie ukrywajmy - z powodów finansowych) stawiają na jakość, elastyczność oraz możliwość dalszej rozbudowy swoich aplikacji. Wtedy bardzo ważne jest, aby kod backendu i frontendu był odseparowany i tworzony za pomocą dedykowanych rozwiązań.
Autor: Jarek Klimas
Data: 23 maja 2020
Labele:Backend, Poziom podstawowy, Java
Masz swoje przemyślenia na temat artykułu? Podziel się nimi!
Masz pytanie odnośnie zagadnienia omawianego w artykule?
Coś, co napisaliśmy, nie zaspokoiło Twojego głodu wiedzy?
Daj nam znać co myślisz i skomentuj artykuł na facebooku!

Stale się rozwijamy, a więc bądź na bieżąco!
Na ten adres będziemy przesyłać informacje o ważniejszych aktualizacjach, a także o nowych materiałach pojawiających się na stronie.
Polub nas na Facebooku:
Nasi partnerzy: stackshare
Javappa to również profesjonalne usługi programistyczne oparte o technologie JAVA. Jeśli chesz nawiązać z nami kontakt w celu uzyskania doradztwa bądź stworzenia aplikacji webowej powinieneś poznać nasze doświadczenia.
Kliknij O nas .