W tym artykule przedstawiam technologie i narzędzia, które należy moim zdaniem znać, aby ubiegać się o pracę jako Młodszy Programista Java. Wspomnę także o kilku przydatnych umiejętnościach. Nie stanowią one kompletnej listy – wybrałem te z nich, które są moim zdaniem najistotniejsze, aby osoba przychodząca do pracy mogła czuć się w niej pewnie. Przy każdym z zagadnień znajdziesz:
- krótki opis czym jest dana technologia/narzędzie i do czego służy,
- wymagany poziom znajomości.
Ciężko w prosty sposób określić wymagany poziom wiedzy, dlatego będą pokrótce opisywał, co powinniśmy na dany temat wiedzieć lub co powinieneś być w stanie zrobić.
Gdybyśmy wybrali inny język programowania jako nasz cel, to większość z opisanych tu narzędzi i technologii by się nie zmieniła. Wiele z nich jest niezależnych od języka programowania, z którego korzystamy. Przy omawianych zagadnieniach umieszczę informację, czy są one raczej związane z pracą jako programista Java, czy też daną technologię/narzędzie znajdziemy też na innych projektach.
Zwrócę jeszcze uwagę na jeden fakt: każdy projekt jest inny. Na projektach stosowane są różne narzędzia, biblioteki i technologie. W związku z tym, przy omawianiu niektórych z nich umieściłem alternatywy, z którymi można się spotkać pracując jako programista.
Artykuł podzielony jest na trzy części:
- Część 1 – Najistotniejsze technologie, narzędzia, umiejętności.
- Część 2 – Istotne zagadnienia z wymaganą podstawową znajomością.
- Część 3 – Dodatkowe technologie i narzędzia, które warto znać.
Część 1 – Najistotniejsze technologie, narzędzia, umiejętności¶
Spis treści
Język programowania Java¶
Warunkiem koniecznym do rozpoczęcia pracy jako programista Java jest znajomość tego języka. W końcu dużo czasu w pracy (ale mniej, niż mogłoby się wydawać) spędza się na pisaniu kodu Java, analizowaniu już istniejącego kodu oraz jego modyfikacji.
Jeżeli nie miałeś do tej pory styczności z językiem Java, to spójrz na poniższy listing – zawiera on prosty program napisany w Javie. Jego zadaniem jest pobranie od użytkownika promienia koła i wyświetlenie policzonego pola koła o tym promieniu:
import java.util.Scanner; public class PoleKolaOPodanymPromieniu { public static void main(String[] args) { int promienKola; double poleKola; System.out.println("Podaj promien kola:"); promienKola = getInt(); poleKola = 3.14 * promienKola * promienKola; System.out.println( "Pole kola o tym promieniu wynosi: " + poleKola ); } public static int getInt() { return new Scanner(System.in).nextInt(); } }
Cały kod zawarty jest w klasie o nazwie PoleKolaOPodanymPromieniu. W klasach zawieramy logikę programów. Klasa ta zawiera dwie metody, które dzielą logikę zawartą w klasie i wykonują różne zadania. Pierwsza metoda to main, która jest szczególną metodą w programach napisanych w języku Java – to od niej zaczyna się wykonanie naszych programów. Druga metoda nosi nazwę getInt i korzysta ona z funkcjonalności klasy Scanner. Autorami tej klasy są twórcy języka Java. Pozwala ona na wczytywanie danych z linii poleceń od użytkownika. Aby z niej skorzystać, na początku pliku musieliśmy skorzystać z instrukcji import.
W metodzie main zdefiniowane są dwie zmienne: promienKola i poleKola. Programiści używają zmiennych do przechowywania danych różnego rodzaju. promienKola jest typu int, jak Integer, więc może przechowywać liczby typu całkowitego, podczas gdy poleKola jest typu rzeczywistego double (od double precision). W dalszej części metody korzystamy z instrukcji System.out.println do wypisania na ekran komunikatów dla użytkownika – najpierw prosimy go o podanie promienia, który zapisujemy w zmiennej promienKola korzystając z wywołania metody getInt. Następnie, wyliczamy pole koła i zapisujemy je w zmiennej poleKola. Na końcu metody main wypisujemy wynik obliczeń.
Aby skompilować i uruchomić powyższy program, z poziomu linii poleceń należałoby wykonać dwie poniższe komendy:
W pierwszej komendzie korzystamy z programu o nazwie javac. Jest to kompilator programów napisanych w języku Java, który kompiluje kod zrozumiały przez nas, programistów, na kod zrozumiały dla komputera. Kolejny program o nazwie java to Maszyna Wirtualna Java – jest to specjalny program służący do uruchamiania i wykonywania skompilowanych programów Java. Po uruchomieniu programu drugą komendą, program zapytał mnie o promień koła – podałem liczbę 5, a program wypisał wyliczone pole koła o tym promieniu i zakończył działanie.
Poznanie wszystkich aspektów korzystania z Javy zajmuje lata praktyki i nikt na rozmowach kwalifikacyjnych o pracę jako Młodszy Programista Java raczej nie będzie wymagał znajomości wszystkich zaawansowanych technik jej użycia. Ważniejsze to znać i rozumieć główne elementy programowania. Pod kątem programowania w Javie musisz znać:
- zmienne, typy podstawowe, instrukcje warunkowe, pętle, tablice,
- uruchamianie klas Java, pakiety, importowanie klas,
- klasy, dziedziczenie, polimorfizm, interfejsy, wyjątki,
- typy generyczne, lambdy, strumienie, kolekcje, podstawy wielowątkowości.
Na swojej drodze do zostania programistą najwięcej czasu spędzisz właśnie na nauce języka Java. Wszystkie pozostałe technologie i narzędzia możesz znać w znacznie niższym stopniu, szczególnie na początku swojej przygody z programowaniem.
Zauważ, że na powyższej liście nie umieściłem wymogu znajomości jakichkolwiek bibliotek wspierających proces tworzenia oprogramowania w Javie. Poświęciłem im osobne wpisy w dalszej cześci tego artykułu.
Jeżeli chcesz nauczyć się programowania w Javie od podstaw, to zapraszam do przeczytania mojego kursu Nauka programowania w języku Java. Kurs przeznaczony jest dla osób, które nie mają doświadczenia w programowaniu.
IntelliJ IDEA¶
IntelliJ IDEA to jedno z dostępnych na rynku narzędzi typu IDE, czyli Integrated Development Environement, które w ostatnich latach zyskało na popularności.
IntelliJ IDEA to program przeznaczony dla programistów m. in. do pisania kodu, debuggowania go (czyli wyszukiwania w nim błędów i ich analizowania), oraz refactoringu (zmianie struktury kodu bez zmiany funkcjonalności np. w celach uporządkowania kodu). Posiada on bardzo wygodny edytor, który nie tylko koloruje składnię naszego kodu i ułatwia jego pisanie, ale także wskaże w nim błąd, który możemy od razu poprawić:
Co powinieneś umieć: IntelliJ IDEA to bardzo rozbudowane narzędzie oferujące dużo funkcji, ale na początku wystarczy znać je na tyle, by być w stanie używać go do tworzenia i otwierania projektów, dodawania klas, debuggowania kodu, oraz zmiany ustawień projektu. Przyda się także znajomość podstawowych skrótów klawiaturowych, które znacznie przyspieszą i ułatwią proces pisania kodu i jego analizy.
Jeżeli chcesz nauczyć się używania IntelliJ IDEA od podstaw, to zajrzyj do mojego kursu IntelliJ IDEA w akcji.
Dużą zaletą IntelliJ IDEA jest dostępna darmowa wersja do użytku niekomercyjnego, którą można pobrać z oficjalnej strony: https://www.jetbrains.com/idea
Na poniższym obrazku zaprezentowany jest IntelliJ IDEA:
Alternatywa: Eclipse – kiedyś bardzo popularne IDE dla programistów Java, jednak na wszystkich projektach, na których pracowałem w ostatnich latach, korzystano z IntelliJ IDEA.
Czy występuje tylko na projektach Java: tak, ale firma tworząca to narzędzie ma w repertuarze także podobne narzędzia dla innych języków programowania, takich jakich C++ czy JavaScript.
Obsługa linii poleceń¶
Linia poleceń to aplikacja, która przyjmuje komendy do wykonania. Nie mam tutaj na myśli jedynie linii poleceń systemu Windows, ale ogólnie narzędzia tego typu – w Linux będzie to tzw. terminal.
Różne systemy operacyjne oferują różne komendy, które możemy uruchamiać w linii poleceń. Warto poznać podstatowe komendy zarówno dla systemu Windows, jak i Linux. W pracy programisty linia poleceń jest bardzo często używanym narzędziem. To z linii poleceń budujemy projekty Maven, uruchamiamy aplikacje napisane w Javie, zarządzamy repozytorium Gita, szukamy plików, analizujemy logi itd.
Co prawda większość z opisanych powyżej zadań można wykonać korzystając z graficznych narzędzi, ale, po pierwsze, nie zawsze będą one dostępne do użycia, a po drugie, korzystanie z linii poleceń do wykonania różnych zadań jest po prostu bardzo szybkie. Niekiedy nie da się też wykonać pewnej operacji bez pomocy linii poleceń.
W systemie Windows linia poleceń wygląda następująco:
Aby pracować jako programista, powinieneś znać podstawy korzystania z linii poleceń. Mam tutaj na myśli następujące zagadnienia:
- uruchamianie linii poleceń,
- wywoływanie komend oraz przekazywanie im argumentów,
- znajomość najczęściej stosowanych komend,
- zrozumienie standardowego wejścia i wyjścia (standard in / standard out),
- umiejętność przekierowywania komend (pipe) oraz ich łączenie (chain).
Przygotowałem kurs obsługi linii poleceń, dzięki któremu nauczysz się podstaw linii poleceń w systemie Windows: Podstawy linii poleceń.
Alternatywa: brak, ale na różnych systemach linie poleceń będą oferowały różne komendy.
Czy występuje tylko na projektach Java: nie, z linii poleceń będziemy korzystać na większości projektów.
Git¶
Git to darmowe narzędzie służące do zapamiętywania historii zmian wykonywanych w plikach naszego projektu.
Każda zapamiętana w historii wersja naszego projektu to tzw. commit. Zbiór plików oraz ich historię nazywamy repozytorium. Możemy w łatwy sposób sprawdzać i porównywać zmiany wprowadzane do plików w kolejnych dniach, miesiącach, a nawet latach. Jeżeli wiemy, że w jednej wersji system działał poprawnie, a kilka dni później znaleziony został błąd, to możemy prześledzić i przeanalizować zmiany wprowadzone od czasu działającej wersji do aktualnej i znaleźć modyfikację kodu, która spowodowała błąd.
Gita używamy z linii poleceń wywołując odpowiednie komendy, np. git commit -m "Nowa wersja raportu" spowoduje dodanie do historii nowego committa, w którym zawarte będą wysczególnione wcześniej przez nas pliki. Komunikatem skojarzonym z tym committem będzie "Nowa wersja raportu".
Istnieje wiele "nakładek" graficznych na Gita, czyli programów, które pozwalają wyklikać komendy zamiast wpisywać je z linii poleceń, ale moim zdaniem najpierw należy poznać podstawy korzystania z Gita z linii poleceń, a ewentualnie dopiero później spróbować programów graficznych. Wadą programów graficznych jest to, że korzystanie z nich jest wolniejsze niż alternatywa, czyli linia poleceń. Wiele osób uważa naukę Gita za kiepską inwestycję czasu, ale jeżeli nie poznamy podstaw jego działania, to jego używanie będzie nie tylko frustrujące, ale może też przysporzyć problemów na projekcie.
Git w ostatnich latach bardzo zyskał na popularności, w sporej mierze dzięki BitBucketowi oraz GitHubowi, czyli serwerom udostępniającym przechowywanie repozytoriów Gita dla firm oraz osób prywatnych. Jeżeli rozpoczniesz pracę na projekcie, gdzie będzie używany Git, to repozytoria będą najprawdopodbniej przechowywane właśnie na jednym z tych serwerów.
Korzystanie z systemu kontroli wersji jest nieodzownym elementem pracy każdego programisty. Raczej nie ma szansy na to, by na projekcie programistycznym nie był używany żaden system tego typu.
Co powinieneś być w stanie zrobić w Gicie:
- sprawdzać, które pliki zmieniły się od ostatniego commita i jakie zmiany w nich wprowadzono,
- indeksować (stage'ować) pliki do zacommittowania,
- wykonywać committy,
- potrafić tworzyć branche i merge'ować je,
- rozumieć jak działają komendy pull, push, fetch, oraz rebase,
- analizować historię zmian.
Dodatkowo powinieneś ogólnie rozumieć, co dzieje się z historią zmian, gdy wykonujesz commit, rebase i inne komendy, które wpływają na historię repozytorium. Warto także wiedzieć, do czego służą Pull Requesty oraz zaznajomić się z BitBucketem lub GitHubem. Oba udostępniają darmowe wersje do użytku domowego.
Alternatywa: przed Gitem używane były CVS oraz SVN, ale zdecyowanie bardziej prawdopodobne jest spotkanie na nowym projekcie Gita. Istnieją jeszcze inne systemy kontroli, takie jak np. Mercurial.
Czy występuje tylko na projektach Java: nie, spotkamy się z nim na większości projektów.
Szukanie w internecie¶
Umiejętność, o którą nikt nas nie zapyta na rozmowie kwalifikacyjnej, a która jest moim zdaniem kluczowa dla każdego programisty. Nie tylko w pracy, ale także podczas nauki programowania.
Umiejętność przeszukiwania bezkresu Internetu jest bardzo cenna, ponieważ może nam zaoszczędzić dużo czasu. Mało tego – zaoszczędzi też czas wszystkich osób, które będziemy pytać, zamiast zajrzeć do Internetu!
W Internecie można znaleźć odpowiedzi na większość problemów i błędów, które napotkamy jako programiści. Na 99% pytań zostały już udzielone odpowiedzi i znajdziemy je na Google. Ponadto, bardzo ważnym zasobem dla każdego programisty jest stackoverflow.com – na tej stronie użytkownicy zadają pytania związane z programowaniem, a inni użytkownicy udzielają im odpowiedzi. Najlepsze odpowiedzi dostają punkty, więc skoro komuś innemu pomogła dana odpowiedź, to jest duża szansa, że pomoże i nam. Warto założyć tam konto i dawać punkty osobom, których odpowiedzi Ci pomogły – to nic nie kosztuje.
Odpowiedzi na większość pytań znajdziemy szybko – wystarczy wpisać w wyszukiwarce kilka fraz związanych z problemem lub wkleić komunikat błędu. Czasem jednak przyjdzie nam spędzić w Internecie kilka godzin wraz z wypróbowywaniem znalezionych rozwiązań.
Szukanie odpowiedzi w Internecie to umiejętność, której trzeba się nauczyć. Odpowiedni dobór słów kluczowych ma duże znaczenie przy rzadziej spotykanych błędach i problemach, na które prędzej czy później się natkniemy. Szczególnie ma to znaczenie w pracy, ponieważ wiele interesujących i trudnych problemów i błędów pojawia się właśnie na dużych projektach.
SQL i relacyjne bazy danych¶
SQL to skrót od Structured Query Language. SQL to język, którym posługujemy się, aby robić zapytania do bazy danych. Zapytanie to odpowiednio smorfułowane odpytanie bazy danych o pewne dane. Poza pobieraniem danych, możemy także nimi manipulować: dodawać je, aktualizować, oraz usuwać.
Relacyjna baza danych to aplikacja, która w obiektach nazywanych tabelami przechowuje różnego rodzaju dane. Każda tabela ma kolumny, które opisują właściwości przechowywanych w niej rekordów. Przykładowa reprezentacja tabeli o nazwie pracownicy zawierającej dane pracowników mogłaby wyglądać następująco:
id | imie | nazwisko | stanowisko | id_departamentu |
---|---|---|---|---|
1 | Anna | Kowalska | PROGRAMISTA | 20 |
2 | Jan | Strzelecki | HR | 30 |
3 | Marek | Cisowski | PROGRAMISTA | 20 |
4 | Joanna | Jastrzębska | MANAGER | 10 |
id, imie, nazwisko, stanowisko, oraz id_departamentu, to kolumny. Każdy rząd tabeli (zwany rekordem) zawiera dane jednej osoby. Przykładowe zapytanie zapisane w SQL do pobrania imienia i nazwiska dla osób pracujących na stanowisku PROGRAMISTA mogłoby wyglądąć następująco:
SELECT imie, nazwisko FROM pracownicy WHERE stanowisko = 'PROGRAMISTA';
Jak widać, treść tego zapytania jest czytelna – w zasadzie czytając je po prostu od lewej do prawej mamy pewne pojęcie, jakie dane to zapytanie zwraca. Nauka podstaw SQL jest zdecydowanie szybsza i prostsza od nauki programowania, jednak opanowanie zaawansowanego SQLa zajmuje lata praktyki, szczególnie gdy w grę wchodzą bazy danych zawierające tabele z dziesiątkami/setkami milionów rekordów. Pisanie zapytań, aby działały szybko na dużej liczbie danych, to optymalizacja zapytań. Nie jest to łatwe zadanie i czasem w pracy zdarza się, że użytkownicy zgłaszają problemy związane z wolnym działaniem systemu. Wolno wykonujące się zapytania SQL są nierzadko powodem takiego stanu rzeczy.
Na początku przygody z programowaniem zdecydowanie wystarczą Ci podstawy SQL. Poniżej wylistowałem to, co powinieneś według mnie umieć:
- tworzyć zapytania z klauzulami WHERE, GROUP BY, oraz ORDER BY,
- ograniczać listę zwracanych kolumn,
- korzystać z instrukcji UPDATE, INSERT, DELETE,
- łączyć tabele za pomocą JOINów oraz rozumieć, czym różnią się poszczególne rodzaje złączeń,
- tworzyć proste tabele,
- korzystać z podzapytań,
- rozumieć znaczenie uprawnień i roli,
- znać podstawowe tabele techniczne,
- mieć podstawową wiedzę na temat indeksów i planów zapytań.
Poza znajomością SQL, warto byłoby poznać także podstawy funkcjonowania serwerów baz danych. Musisz wiedzieć, czym jest commit, rollback, do czego służą transakcje oraz jak połączyć się z serwerem.
Bazy danych są bardzo często używane do przechowywania danych wykorzystywanych w systemach, z których korzystamy na co dzień. Na rynku dostępnych jest wiele serwerów baz danych oferowanych przez różne firmy – najbardziej popularnym jest Oracle. Poza tym na pewno spotkasz się z PostgreSQL lub MySQL.
Z mojego doświadczenia wynika, że w dzisiejszych czasach programiści uważają naukę SQL oraz działania baz danych za kiepską inwestycję czasu, tym bardziej, że w nowoczesnych językach programowania istnieje wiele bibliotek wspomagających wykorzystanie baz danych. Moim zdaniem nauka podstaw zarówno baz danych, jak i SQL, znacząco zwiększa nasze zrozumienie sposobu, w jaki nasze aplikacje powinny z baz danych korzystać oraz co możemy dzięki nim osiągnąć. Zapobiega to także problemom, które z takiej niewiedzy mogą wyniknąć. Co ważniejsze, jeżeli nauczymy się SQL np. korzystając z bazy danych firmy Oracle, to będziemy mogli większość tej wiedzy wykorzystać podczas pracy z innymi serwerami baz danych. Poza tym, zazwyczaj pisanie zapytań w SQL jest po prostu przyjemne 😉
Alternatywa: istnieją rodzaje baz danych zwane nierelacyjnymi, które przechowują dane w inny sposób, i w inny sposób się do tych danych odnosimy. Z czasem zyskują one coraz bardziej na popularności, ale nadal przeważa wykorzystanie relacyjnych baz danych. Przykłady kilku rodzajów nierelacyjnych baz danych:
- dokumentowe, np. MongoDB,
- grafowe, np. Neo4j,
- klucz-wartość, np. Redis.
Warto wiedzieć, że istnieją inne rodzaje baz danych, ale na początku przygody z programowaniem ich znajomość nie jest moim zdaniem wymagana.
Czy występuje tylko na projektach Java: nie, bazy danych są powszechnie używane na projektach programistycznych.
Skróty klawiaturowe¶
Możesz zastanawiać się, co na tej liście robią skróty klawiaturowe. Co prawda nikt nie będzie Cię z nich odpytywał na rozmowie kwalifikacyjnej, ale są dwa bardzo ważne powody, dla których o nich wspominam.
Po pierwsze, znajomość skrótów klawiaturowych ma bardzo duży wpływ na szybkość pracy. Stosując je możemy zaoszczędzić bardzo dużo czasu podczas korzystania z komputera. Po drugie, skróty klawiaturowe zwiększają wygodę pracy.
W szczególności króty klawiaturowe związane z edycją tekstu są moim zdaniem bardzo ważne dla programistów, a w szczególności dla osób, które dopiero uczą się programować. Dzięki ich wykorzystaniu jesteśmy w stanie szybko manipulować kodem źródłowym i przemieszać się po plikach. Mniej czasu spędzamy na operacji myszą komputerową, dzięki czemu możemy skupić się na pisaniu kodu – potrzeba zmiany ręki pomiędzy klawiaturą a myszą zajmuje sporo czasu. Niekiedy też wykonywanie operacji myszką jest znacznie wolniejsze, niż skorzystanie ze skrótu klawiaturowego.
Przygotowałem krótką listę skrótów klawiaturowych, które są moim zdaniem szczególnie przydatne dla programistów: Skróty klawiaturowe dla programistów.
Maven¶
Maven to popularne, darmowe narzędzie wspomagające programistów Java. Maven ułatwia:
- dodawanie do projektu zależności do danej biblioteki bądź frameworku,
- kompilowanie i budowanie projektu,
- przeprowadzanie testów jednostkowych i integracyjnych,
- generowanie raportów z testów oraz stron informacyjnych o projekcie,
- i wiele więcej – w zależności od tego, co potrzebujesz.
Maven jest na tyle popularny i oferuje dużo równocześnie niewiele wymagając, że istnieje mała szansa, byś nie spotkał Mavena na projekcie, do którego dołączysz (ewentualnie będzie to Gradle, alternatywne narzędzie dające podobną funkcjonalność).
Jeżeli opanujesz podstawy Mavena raz, to będziesz w stanie zbudować każdy korzystający z niego projekt. Wszystkie projekty w Maven konfiguruje się w podobny sposób – jeśli poznasz format pliku konfiguracyjnego Mavena pom.xml, to będziesz w stanie się w nim odnaleźć na dowolnym projekcie.
Znajomość Mavena stanowczo zmniejsza próg wejścia w nowy projekt, a sam Maven nie tylko pozwala nam zaoszczędzić sporo czasu, ale także ułatwia nam pracę.
Nie musisz znać zaaawansowanych technik związanych z Maven – wystarczą podstawy: budowanie projektu, struktura projektów Mavenowych, dodawania zależności, konfiguracja pluginów, odnajdywanie się w projektach wielomodułowych.
Solidne podstawy Maven nabędziesz po przeczytaniu mojego darmowego kursu Podstawy Maven.
Alternatywa: Gradle – podobne narzędzie, które w ostatnich latach zyskało popularność. W Gradle korzystamy z języka Groovy m. in. do definiowania, jak nasz projekt ma być budowany i jakie ma zależności.
Czy występuje tylko na projektach Java: tak.
Spring i Spring Boot¶
Spring to bardzo popularny framework dla programistów Java. Na początku swojego istnienia oferował on łatwe wykorzystanie Dependency Injection, czyli "wstrzykiwania" do obiektów innych obiektów, które wymagane są do ich działania. Pozwala to z jednej strony na łatwą wymianę używanych klas, a z drugiej zmniejsza liczbę powiązań pomiędzy klasami w naszych programach.
Przez lata Spring osiągnął dużą popularność, a w rezultacie rozrósł się tak bardzo, że w tej chwili oferuje moduły ułatwiające pracę z bazami danych, tworzeniem web service'ów, zarządzaniem uprawnieniami w aplikacjach i wiele, wiele innych. Kilka lat temu powstał Spring Boot – ma on na celu jeszcze bardziej przyspieszyć i ułatwić tworzenie aplikacji za pomocą Springa.
Na oficjalnej stronie Springa znajdziesz wiele darmowych anglojęzycznych tutoriali, które wprowadzą Cię w świat Springa: spring.io.
To, co powinieneś wiedzieć na temat Springa, to w pierwszej kolejności podstawy jego działania pod kątem wstrzykiwania zależności oraz konfiguracji beanów, czyli obiektów, które mogą być wstrzykiwane jako zależności. Dodatkowo, w Springu korzystamy z adnotacji, których liczba może momentami przysporzyć o zawrót głowy. Warto rozumieć jak działają adnotacje takie jak Configuration, Bean, ComponentScan i tym podobne. Gdy poznasz podstawy Springa, warto zaznajomić się z tworzeniem RESTowych web service'ów korzystających z modułu Web MVC Springa. Podstawy wykorzystania Spring Boota też się przydadzą.
Jeżeli chcesz zacząć uczyć się Springa od podstaw, to polecam książkę Spring in Action wydawnictwa Manning.
Alternatywa: w związku z tym, jak wiele funkcjonalności oferuje Spring, ciężko podać jeden alternatywny framework. Na projektach, które nie korzystają ze Springa, możesz spotkać się np. z technologią EJB, czyli Enterprise Java Bean.
Czy występuje tylko na projektach Java: tak.
Język angielski¶
Polscy programiści są chętnie zatrudniani przez zagraniczne firmy ze względu na wysoką jakość kodu, jaki dostarczają. Praca na zagranicznych projektach to ciekawe doświadczenie, a także szansa na wysoką stawkę za godzinę pracy. Jednak wymaganiem koniecznym pracy na takich projektach jest zazwyczaj komunikatywna znajomość języka angielskiego. Poza pisaniem maili w języku angielskim, często odbywają się rozmowy na żywo z osobami np. na Skype, które nie znają języka polskiego. Nierzadko takie osoby pracują razem z nami w biurze i współpracujemy z nimi na co dzień.
Co więcej, większość materiałów, z których będziesz korzystał podczas nauki i pracy, napisanych jest w języku angielskim. Mam tutaj na myśli dokumentacje, książki, artykuły, odpowiedzi na StackOverflow, i innych stronach.
Ponadto, wszelki kod źródłowy na projektach komercyjnych powinien stosować anglojęzyczne nazwy. Nie spotkałem się w pracy, aby korzystano w kodzie z języka polskiego (poza okazjonalnymi komentarzami). Spotkałem się, natomiast, z kodem ze zmiennymi, nazwami klas i innych obiektów, zapisanych w języku Francuskim oraz Duńskim. Ciężki orzech do zgryzienia.
Nie znając angielskiego na tyle, aby być w stanie się z jego pomocą porozumieć z innymi osobami, zamykasz sobie drzwi do wielu ciekawych projektów, dlatego warto moim zdaniem zainwestować w naukę tego języka.