Dzisiejszym wpisem chciałbym rozpocząć serię artykułów z kategorii Przybornik Javowca, w ramach którego będę publikował informacje o ciekawych bibliotekach, frameworkach oraz narzędziach ułatwiających życie programisty Java. W środowisku Java istnieje ogromna rzesza ciekawych projektów, często kontrybuowanych wyłącznie hobbystycznie, które potrafią diametralnie uprościć i przyspieszyć naszą pracę. Niestety nierzadko jest tak, że zanim wpadniemy na właściwy, to próbujemy odkryć koło na nowo i zaczynamy programować wszystko od zera. Artykuły z tego cyklu mają uchronić Cię przed takimi sytuacjami i przybliżyć najpopularniejsze rozwiązania często implementowanych problemów.

Boilerplate – co to takiego?

Próbowałem, ale nie znalazłem w języku polskim dobrego odpowiednika słowa „boilerplate”, więc postanowiłem pozostać przy angielskim oryginale i wyjaśnić w kilku słowach o co chodzi. Termin boilerplate code odnosi się do tych części kodu źródłowego, które muszą zostać wprowadzone, żeby w ogóle mieć możliwość rozpoczęcia pracy nad właściwym zadaniem. Można chyba powiedzieć, że to taki „szablonowy” kod.

Java należy do tej grupy starożytnych języków, w których boilerplate spotykamy w wielu miejscach. Dobrym przykładem jest choćby wypisanie ciągu znaków na ekranie. W Javie wygląda to tak:

a dla kontrastu w Pythonie wystarczy:

Jest to tylko prosty przykład, ale chyba wystarczająco oddaje ideę terminu „boilerplate”.

Czym jest i co potrafi Lombok?

Project Lombok jest biblioteką języka Java, mającą ukoić część bolączek związanych z boilerplatem. Działa ona w ten sposób, że w trakcie kompilacji, na podstawie określonych adnotacji generuje odpowiedni kod źródłowy.

Spójrzmy na przykładowy feature (przykład zaczerpnięty z dokumentacji) – generowanie getterów/setterów. Kod źródłowy w czystej Javie wyglądający następująco:

możemy uzyskać wykorzystując adnotacje @Getter@Setter z Lomboka:

Gdy mamy więcej pól w klasie, to kod którym zarządzamy przy pomocy Lomboka jest naprawdę zwięzły. Szczególnie, że adnotacje @Getter@Setter możemy używać również na całej klasie, a nie tylko na poszczególnych polach.

Fajnym przykładem jest też użycie adnotacji @Builder. Żeby uzyskać coś takiego w Javie (znów przykład zaczerpnięty z dokumentacji):

wystarczy napisać:

Wygląda zachęcająco? 🙂

Jeszcze więcej możliwości

Przykłady, które pokazałem to tylko ułamek możliwości Lomboka. W celu zapoznania się z pełną listą możliwości odsyłam do strony projektu. Zachęcam równie do obejrzenia poniższego demo:

Wsparcie w IDE

Ktoś może się teraz zastanowić jak z Lombokiem żyć w praktyce – skąd moje IDE ma wiedzieć, że adnotacja @Getter na polu String firstName daje nam metodę String getFirstName()? To się w ogóle skompiluje? Owszem tak 🙂 Do szczęścia trzeba naprawdę niewiele. Wystarczy zainstalować odpowiednią wtyczkę do swojego ulubionego IDE i wszystko będzie śmigać. Sam używam takiej w IntelliJ IDEA i nie zaobserwowałem żadnych problemów. Lombok jest już całkiem dojrzałym projektem, więc myślę, że analogiczne pluginy do Eclipse’a, czy NetBeansa również nie powinny sprawiać kłopotów.

Cykl artykułów "Przybornik Javowca"

Ten wpis jest częścią cyklu, w ramach którego opisuję moje doświadczenia i spostrzeżenia na temat różnego rodzaju sprawdzonych bibliotek, frameworków i innych narzędzi, które pomagają programiście Java w codziennej niedoli :)

Artykuły z tej serii łączą się wyłącznie tematyką i nie są ze sobą mocno związane, a więc spokojnie możesz je czytać wybiórczo. Wszystkie opublikowane do tej pory wpisu znajdziesz poniżej:

  1. Lombok – the boilerplate killer
  2. Flyway – dbaj o swoje relacje
  3. biblioteki przydatne w projektach Java

Dwa podejścia

Przyznam szczerzę, że do Lomboka przekonałem się dopiero za drugim podejściem. W pierwszej pracy był on projektem wyklętym 😉 W obecnym zespole używamy go na co dzień i teraz stwierdzam, że naprawdę potrafi ułatwić życie. Jeśli biblioteka nie przekonuje Cię na pierwszy rzut oka, to nie przekreślaj jej od razu. Daj jej przez jakiś czas szansę na placu boju. Może okaże się, że jest Twoim najlepszym kompanem na polu bitwy.

Potencjalne problemy

Nie będę ukrywał, że Lombok nie jest wolny od wad. Na szczęście do tej pory zauważyłem tylko jedną większą. Mianowicie czasami gryzie się on z innymi bibliotekami generującymi kod (np. z Querydsl). Nie ma się jednak tego co, aż tak bardzo obawiać. Nie jest tak bowiem, że nie da się używać Lomboka i Querydsl jednocześnie. Czasami po prostu zdarza się (gdy używamy elementów jednego tam gdzie działa drugi), że jeden drugiemu wchodzi w drogę i całość się nie kompiluje. Obejściem problemu jest po prostu rezygnacja z feature’u Lomboka w danym miejscu i wszystko śmiga. Nie znalazłem jeszcze innego sensownego rozwiązania tego problemu. Jeśli Ty masz już jakieś sprawdzone, to chętnie się o nim dowiem 🙂 Napisz o nim w komentarzu.

Wołanie o pomoc

Jeżeli spodobał Ci się dzisiejszy artykuł i chciałbyś opublikować podobny na temat swojej ulubionej biblioteki, nietypowego frameworku, czy innego pożytecznego narzędzia, to gorąco zachęcam do kontaktu ze mną (poprzez komentarz poniżej, mailowo pod adresem piotr@programistanaswoim.pl lub przez dowolny portal społecznościowy). Bardzo chętnie nawiążę stałą lub doraźną współpracę na tej płaszczyźnie. Powody są dwa. Po pierwsze ciekawych narzędzi jest tyle, że sam nie dam rady ich przedstawić. Po drugie zamierzam publikować informacje o narzędziach, które zostały sprawdzone w bojach i faktycznie dobrze działają w praktyce, a takich miałem okazję przetestować ograniczoną ilość. Perspektywa innej osoby na pewno byłaby bardzo pomocna.

Zapraszam do komentowania i wyrażania swojej opinii na temat Lomboka. Może masz gorsze doświadczenia z tą biblioteką? A może znasz jego lepszy zamiennik? Z przyjemnością przeczytam o tym poniżej.


Bądź na bieżąco!

Podobają Ci się treści publikowane na moim blogu? Nie chcesz niczego pominąć? Zachęcam Cię do subskrybowania kanału RSS, polubienia fanpage na Facebooku, zapisania się na listę mailingową:

Dołączając do newslettera #NoweRozdanie2 otrzymasz dostęp do dodatkowych materiałów:

  • PDF: „Jednoosobowa działalność gospodarcza krok po kroku” (do artykułu)
  • PDF: „FAQ: Jak pracuje się dla Roche/Sii?” (do artykułu)
  • PDF: „Jak zmniejszyć prawdopodobieństwo wystąpienia kontroli i co zrobić kiedy urzędnik zapuka do Twoich drzwi?” (do artykułu)

Powyższe dane są przechowywane w systemie Mailchimp i nie są udostępniane nikomu innemu. Więcej szczegółów znajdziesz na stronie polityki prywatności.

lub śledzenia mnie na Twitterze. Generalnie polecam wykonanie wszystkich tych czynności, bo często zdarza się tak, że daną treść wrzucam tylko w jedno miejsce. Zawsze możesz zrobić to na próbę, a jeśli Ci się nie spodoba – zrezygnować :)

Dołącz do grup na Facebooku

Chcesz więcej? W takim razie zapraszam Cię do dołączenia do powiązanych grup na Facebooku, gdzie znajdziesz dodatkowe informacje na poruszane tutaj tematy, możesz podzielić się własnymi doświadczeniami i przemyśleniami, a przede wszystkim poznasz ludzi interesujących się tą samą tematyką co Ty.

W grupie Programista Na Swoim znajdziesz wiele doświadczonych osób chętnych do porozmawiania na tematy krążące wokół samozatrudnienia i prowadzenia programistycznej działalności gospodarczej. Vademecum Juniora przeznaczone jest zaś do wymiany wiedzy i doświadczeń na temat życia, kariery i problemów (niekoniecznie młodego) programisty.

Wesprzyj mnie

Jeżeli znalezione tutaj treści sprawiły, że masz ochotę wesprzeć moją działalność online, to zobacz na ile różnych sposobów możesz to zrobić. Niezależnie od tego co wybierzesz, będę Ci za to ogromnie wdzięczny.

Postaw mi kawę na buycoffee.to

Na wsparciu możesz także samemu zyskać. Wystarczy, że rzucisz okiem na listę różnych narzędzi, które używam i polecam. Decydując się na skorzystanie z któregokolwiek linku referencyjnego otrzymasz bonus również dla siebie.

Picture Credits