Java Developer? Przejd┼║ na wy┼╝szy poziom wiedzy ­čöą­čĺ¬ ┬áSprawd┼║

Team Leader? Podnie┼Ť efektywno┼Ť─ç swojego zespo┼éu ­čĹî┬áSprawd┼║

Sprawd┼║, jak dobrze znasz TE technologie w Java ­čĹÇ

utworzone przez Java, Program Java Developer

W ┼Ťwiecie Java istnieje i jest wykorzystywanych wiele technologii. Prawd─Ö m├│wi─ůc, gdy wkracza┼éem w Javowy ┼Ťwiat to a┼╝ nie wiedzia┼éem, za co si─Ö zabra─ç ÔÇô tego jest a┼╝ tyle ­čśĘ.

Zacz─ů┼éem przegl─ůda─ç oferty pracy, co jest wymagane. Rozmawia┼éem z kolegami, kt├│rzy ju┼╝ programuj─ů. ┼╗eby si─Ö os┼éucha─ç, je┼║dzi┼éem na konferencje i chodzi┼éem na lokalne meetupy organizowane przez spo┼éeczno┼Ť─ç, ale r├│wnie┼╝ przez firmy.

Doczytaj do końca, a możesz też tego blogposta potraktować jako

Ôťů check-liste,
Ôťů co wiesz,
­č漠a czego jeszcze nie.

Technologie

By─ç mo┼╝e Ty ju┼╝ wiele wiesz, a mo┼╝e troch─Ö ju┼╝ popracowa┼ée┼Ť w bran┼╝y. W Programie Java Developera zawarli┼Ťmy cz─Östo wykorzystywane technologie. S─ů to:

  • Spring Boot i jego komponenty Spring Cloud
  • Spring Data, Hibernate, MyBatis
  • Apache Kafka
  • Consul (service discovery)
  • ZooKeeper
  • Zipkin (tracing)
  • Grafana i Prometheus (monitoring)
  • Systemy kolejkowe (JMS), np. ActiveMQ
  • Maven

Wszystkie te technologie dok┼éadnie omawiamy w Programie Java Developera (link do pe┼énej agendy TUTAJ).

Zebrali┼Ťmy i usystematyzowali┼Ťmy wiedz─Ö w jednym miejscu. Je┼╝eli ju┼╝ teraz to brzmi dla Ciebie dobrze to:

A je┼╝eli jeszcze nie wiesz, to czytaj dalej… ­čśë

Sprawdź, które z tych technologii i zagadnień znasz i jak dobrze. Zaczynamy:

1. Mikroserwisy s─ů popularne

Architektura mikrous┼éug zyska┼éa ostatnimi laty mocno na popularno┼Ťci. Istnieje bardzo du┼╝o korzy┼Ťci z ich stosowania, takie jak relatywnie proste komponenty, autonomia zespo┼éu i cykl wydawniczego, niezale┼╝ne skalowanie itd. Architektura ta jednak stawia pewne wyzwania, np:

  • Odporno┼Ť─ç na awarie (resiliency) podczas wywo┼éa┼ä innych mikrous┼éug
  • Gromadzenie log├│w (Log Aggregation) w dynamicznym ┼Ťrodowisku
  • Monitoring i Tracing (┼Ťledzenie) ┼╝─ůda┼ä w rozproszonym systemie
  • Service Discovery
  • Load Balancing (server side i client side), czyli rozk┼éadanie ruchu
  • Caching danych

Opr├│cz technicznych wyzwa┼ä pozostaj─ů jeszcze te strategiczne, czyli: jak podzieli─ç system, domen─Ö, na samodzielne komponenty.

2. Systemy kolejkowe s─ů (prawie) wsz─Ödzie

Spos├│b komunikacji przez systemy kolejkowe daje spor─ů niezale┼╝no┼Ť─ç. Mo┼╝na zleca─ç operacje, kt├│re b─Öd─ů wykonane: w swoim czasie, gdy system b─Ödzie wolny, po kolei, bez ich utraty. Podczas u┼╝ywania system├│w kolejkowych warto zna─ç:

  • Jak dzia┼éaj─ů systemy kolejkowe, czym jest Broker, Queue, Topic, Durable Subscription
  • Standard JMS (Java Message Service), jako pr├│ba ujednolicenia API
  • Spring JMS
  • Jakie s─ů gwarancje dostarczenia i odebrania wiadomo┼Ťci
  • Jak radzi─ç sobie z duplikatami (idepotentno┼Ť─ç) i jakie s─ů strategie rozwi─ůzania tego probelmu
  • Czym jest i kiedy wyst─Öpuje At-least-once delivery i At-most-once delivery
  • Jak skalowa─ç system opartych o kolejki, np. kolejno┼Ť─ç przetwarzania zada┼ä i wsp├│┼ébie┼╝ny dost─Öp do zasob├│w
  • Jak zapewni─ç wysokodost─Öpny klaster w architekturach Active/Active i Active/Passive z mechanizmem Leader Election

3. Apache Kafka zyskuje na popularno┼Ťci

Apache Kafka to system kolejkowy coraz bardziej zyskuj─ůcy na popularno┼Ťci. Potrafi on dobrze si─Ö skalowa─ç i pracowa─ç w trybie bardzo szybkiego przetwarzania jak i przesy┼éania wiadomo┼Ťci z wysok─ů gwarancj─ů dostarczenia. Mo┼╝esz dobra─ç model dzia┼éania w zale┼╝no┼Ťci od wymaga┼ä niefunkcjonlanych. To, co niew─ůtpliwie warto wiedzie─ç to:

  • Czym si─Ö r├│┼╝ni szybka (dziesi─ůtki milion├│w wiadomo┼Ťci na sekund─Ö), a bezpieczna komunikacja w Kafce (brak utraty, duplikat├│w wiadomo┼Ťci, zachowana kolejno┼Ť─ç).
  • W jaki spos├│b Kafka dzia┼éa od ┼Ťrodka, jak dzia┼éa broker, czym s─ů grupy konsument├│w
  • Jakie s─ů strategie commitowania offsetu
  • Jakie s─ů wyzwania zwi─ůzane z High Availibility oraz jak dzia┼éa proces rebalancingu – czyli jak „postawi─ç” Kafk─Ö produkcyjnie

4. JPA i Hibernate oraz Spring Data

Praktycznie ka┼╝da aplikacja korzysta z bazy danych. S─ů one r├│┼╝ne. Dost─Öp do relacyjnych baz danych to na tyle cz─Östy przypadek, ┼╝e powsta┼éo wiele implementacji ORM (czyli framwork├│w mapuj─ůcych dane i operacje). Zdefiniowany zosta┼é nawet standard JPA (Java Persistence API).

Jednym z najbardziej dojrzałych frameworków jest Hibernate. Umożliwia on mapowanie obiektowo-relacyjne, czyli odwzorowania obiektów klas na bazę danych.

Popularno┼Ťci─ů cieszy si─Ö r├│wnie┼╝ projekt Spring Data, kt├│ry w automatyczny spos├│b tworzy dost─Öp do bazy danych udost─Öpniaj─ůc gotowe metody. Szybko mo┼╝esz zbudowa─ç aplikacj─Ö, kt├│ra ma gotow─ů integracj─Ö z baz─ů danych.

Pos┼éuguj─ůc si─Ö tymi narz─Ödziami warto wiedzie─ç o:

  • Standardzie JPA, Hibernate jako implementacji oraz Spring Data jako framework wykorzysuj─ůcy te technologie
  • Jak dzia┼éa Entity Manager, jaki jest cykl ┼╝ycia encji  (stan transient, detached, removed, managed)
  • Jak dzia┼éa transakcyjno┼Ť─ç i jakie s─ů tryby propagacji transakcji
  • Jakie s─ů adnotacje i jakie zapytania generuj─ů ÔÇ×pod spodemÔÇŁ ÔÇô co i kiedy ORM wysy┼éa do bazy
  • Czym si─Ö r├│┼╝ni JOIN, JOIN FETCH i subquery, jak rozwi─ůzywa─ç problem wydajno┼Ťciowy N+1 oraz jak ┼Ťledzi─ç zapytania w celu dalszej ich optymalizacji

5. JDBC, ORM oraz MyBatis

JDBC (Java DataBase Connectivity) jest specyfikacj─ů i podstaw─ů komunikacji z bazami danych, le┼╝y u podstaw innych framerork├│w, kt├│re z niego korzystaj─ů. Standard JDBC implementuj─ů sterowniki do konkretnych bazy danych, kt├│rych u┼╝ywasz w projektach.

Opr├│cz Spring Data i Hibernate warto wiedzie─ç:

  • Jak w┼éa┼Ťciwie dzia┼éaj─ů ORMy?
  • ORMy to nie tylko Hibernate. Istnieje lekka alternatywa np. MyBatis
  • S─ů czasem momenty kiedy ORM nie daje rady i musisz zej┼Ť─ç do poziomu natywnego SQL i JDBC
  • Jak przetwarza─ç bardzo du┼╝e ilo┼Ťci danych za pomoc─ů kursor├│w lub operacji wsadowych gdzie ORMy niekoniecznie musz─ů da─ç sobie rad─Ö
  • Jak wywo┼éywa─ç procedury i funkcje

6. Czysty kod, domain model i dobre praktyki

Jako programista cz─Ö┼Ťciej czytasz i analizujesz kod, ni┼╝ go piszesz. Znaj─ůc techniki pisania czystego kodu u┼éatwiasz prac─Ö samemu sobie oraz wsp├│┼épracownikom w zespole. Umiej─Ötna refaktoryzacja i pisanie tzw. ÔÇ×czystegoÔÇŁ kodu u┼éatwia analiz─Ö, utrzymywanie i testowanie aplikacji z kt├│r─ů pracujesz. W tym zakresie warto zna─ç:

  • Wzorce projektowe ÔÇô pos┼éugiwanie si─Ö dobrze znanymi rozwi─ůzaniami problem├│w oraz terminologi─ů znacznie u┼éatwia prac─Ö w projekcie i komunikacj─Ö
  • Umiej─Ötno┼Ť─ç szybkiej refaktoryzacji kodu, dzielenie go na mniejsze fragmenty zgodnie z zasadami SOLID.
  • Zasady KISS, YAGNI, DRY, Prawa Demeter, Fail Fast
  • Tworzenie bogatego modelu domenowego modeluj─ůcego rzeczywisto┼Ť─ç i niezmienniki, regu┼éy biznesowe oraz operacje

7. Stabilny i testowalny kod

Testy zapewniaj─ů nam siatk─Ö bezpiecze┼ästwa podczas wprowadzania zmian. Uruchamiaj─ůc je chcemy mie─ç pewno┼Ť─ç, ┼╝e nie wprowadzili┼Ťmy b┼é─Öd├│w. W tym aspekcie powiniene┼Ť umie─ç:

  • Pisa─ç czytelne testy, z reu┼╝ywalnym kodem (np. Matki Obiekt├│w, klasami Steps, Assert Object Pattern) ÔÇô czyli Clean Code w testach
  • Powodowa─ç, aby raport z test├│w by┼é bardzo czytelny w momencie odkrycia b┼é─Ödu
  • U┼éo┼╝y─ç piramid─Ö test├│w, aby znale┼║─ç balans pomi─Ödzy poziomem izolacji i szybko┼Ťci─ů wykonywania, a pewno┼Ťci─ů, ┼╝e wszystkie klasy posk┼éadane razem realizuj─ů sp├│jny stan systemu
  • Dobrze zna─ç biblioteki, kt├│rych u┼╝ywasz (asercje, mocki, testy parametryzowane), aby Twoje testy by┼éy maksymalnie czytelne
  • Zna─ç strategie testowania I/O, ewentualnie wykorzystywa─ç techniki takie jak Consumer-Driven Contract

8. Maven / Gradle

Maven i Gradle to konkuruj─ůce ze sob─ů narz─Ödzia do budowania aplikacji i rozwi─ůzywania zale┼╝no┼Ťci w Java. Typowym przypadkiem u┼╝ycia jest definiowanie zale┼╝no┼Ťci wprowadzanych do projektu. U┼╝ywaj─ůc Mavena warto dodatkowo wiedzie─ç:

  • Jak dzia┼éa cykl ┼╝ycia Maven, w jaki spos├│b dzia┼éaj─ů pluginy
  • Jak mo┼╝na definiowa─ç zale┼╝no┼Ťci, opr├│cz zwyk┼éego dependency (scopes, bill of materials i importy)
  • W jaki spos├│b tworzy─ç i publikowa─ç artefakty do repozytorium, czyli jak stworzy─ç dzia┼éaj─ůcy pipeline z releasowaniem projektu
  • W jaki spos├│b rozwi─ůzywa─ç problemy z przypadkowymi lub brakuj─ůcymi zale┼╝no┼Ťciami, np. classpath hell

9. Sporo. Czy to wszystko? …

Ufff… sporo tego. Zebra┼éa si─Ö niez┼éa gar┼Ť─ç wiedzy.

Przede wszystkim nie powinno Ci sprawia─ç wi─Ökszych trudno┼Ťci wykorzystywanie podstawowych technologii u┼╝ywanych w projekcie.

  • Frameworka: np. Spring, Spring Boot, innego.
  • U┼╝ywanej bazy danych i narz─Ödzi do niej.
  • Sposobu komunikacji i bibliotek (do HTTP lub innego protoko┼éu np. Protobuf).
  • Do tego warto zna─ç technologie wspieraj─ůce, np. system kolejek, przetwarzanie wsadowe.
  • Mo┼╝e jakie┼Ť rozwi─ůzania, biblioteki, systemy ju┼╝ wypracowane w firmie?

Sk─ůd to wszystko wiedzie─ç?

Wiedza jest wsz─Ödzie… i to praktycznie ZA DARMO.

S─ů dokumentacje, s─ů pojedyncze prezentacje, nagrane wyst─ůpienia z konferencji i jest StackOverflow!

Musisz tylko wiedzie─ç, czego si─Ö nauczy─ç i po┼Ťwi─Öci─ç czas, ┼╝eby pozyska─ç wiedz─Ö. Potem wykorzystuj─ůc wiedz─Ö w praktyce nabywasz do┼Ťwiadczenie.

Moja propozycja

Jest tego sporo. Dlatego mam propozycj─Ö.

Przygotowali┼Ťmy Program Java Developera, kt├│ry zawiera usystematyzowan─ů wiedz─Ö na temat cz─Östo potrzebnych narz─Ödzi, technik i technologii w Java. Nie wyczerpuje to ca┼éej listy. Ale to pot─Ö┼╝na dawka wiedzy, kt├│r─ů mo┼╝na zmie┼Ťci─ç w rozs─ůdnym czasie, czyli:

  • 14 tygodni nauki w formie lekcji video.
  • Oko┼éo 40 godzin nagra┼ä
  • Sam decydujesz o tempie nauki ÔÇô masz DO┼╗YWOTNI dost─Öp do materia┼é├│w
  • Bez suchej teorii i dokumentacji – masa realnych przyk┼éad├│w w kodzie!
  • Dost─Öp do zamkni─Ötej grupy wymiany wiedzy: mentorzy + uczestnicy.
  • Kilka zamkni─Ötych webinar├│w na ┼╝ywo uczestnik├│w z mentorami

Piotr Pelczar, Damian Rudczyk i Krzysztof K─ůdzio┼éka to trzech bardzo do┼Ťwiadczonych Java Developer├│w. Om├│wili technologie Javove m├│wi─ůc o nich z w┼éasnego do┼Ťwiadczenia zdobytego na placu boju. To ┼é─ůcznie ponad 40 lat do┼Ťwiadczenia w Java!

To najlepszy moment na do┼é─ůczenia w tej cenie. 29 listopada 2021 o godzinie 21:00 zamykamy sklep, a ta┼äsza oferta ju┼╝ nie wr├│ci.

Tematy, kt├│re poruszamy to:

  • Integracja i monitoring Mikroserwis├│w
  • Systemy kolejkowe i skalowanie aplikacji
  • Apache Kafka ÔÇô wprowadzenie
  • Apache Kafka ÔÇô zaawansowane zagadnienia
  • Apache Kafka w Spring Boot
  • Od JDBC do Mapowania Obiektowo Relacyjnego (ORM)
  • ORM na przyk┼éadzie JPA i Hibernate
  • Anotacje, Spring + Hibernate oraz dobre praktyki
  • Spring Data
  • Czysty kod i wzorce projektowe 
  • Czysty kod, Domain Model i dobre praktyki
  • Stabilny i testowalny kod ÔÇô narz─Ödzia
  • Stabilny i testowalny kod ÔÇô techniki
  • Maven

Sam widzisz, ┼╝e jest GRUBO!

To jak? Widzimy się na pokładzie?

Na zakończenie

Na t─Ö chwil─Ö to wszystko. Pami─Ötaj, ┼╝e je┼╝eli masz jakie┼Ť pytania, napisz do nas. Jeste┼Ťmy po drugiej stornie.

Dyskusja