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

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 frameworka, czy innego pożytecznego narzędzia, to gorąco zachęcam do kontaktu ze mną (poprzez komentarz poniżej, mailowo pod adresem prondzyn@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.

Zachęcam również do dalszego obserwowania mojego bloga poprzez: polubienie fanpage na Facebooku, subskrypcję kanału RSS, zapisanie się do notyfikacji mailowych (formularz "Bądź na bieżąco" po prawej stronie) lub śledzenie mnie na Twitterze. Dzięki temu na pewno niczego nie pominiesz :)

Chcesz więcej? W takim razie zapraszam Cię do dołączenia do dedykowanej grupy 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.

1 000 000 zł

Milion złotych. Tak, milion złotych. Milion złotych to cel, który sobie postawiłem jakiś czas temu. Chcę zarobić milion złotych na tym blogu. Do tej pory udało mi się zarobić 462,59 zł, więc jak widzisz jeszcze mi trochę brakuje. Jeszcze nie wiem do końca jak, ale to zrobię. Na pewno nigdy nie będę pobierał żadnych opłat za dostęp do treści, bo tymi chcę się po prostu dzielić. Pierwszym krokiem niech będzie rozpropagowanie bloga wśród jak największej liczby osób. I tu mam prośbę do Ciebie: jeśli uważasz, ten artykuł za wartościowy, to udostępnij go proszę swoim znajomym. Przy lewej lub dolnej krawędzi ekranu znajdziesz przyciski, które Ci to ułatwią. Niezależnie od tego, czy prześlesz ten wpis dalej, czy nie, to ja i tak bardzo Ci dziękuję za doczytanie do tego miejsca! Do przeczytania niebawem.

Picture Credits