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.

Chcesz móc częściej czytać tego typu artykuły?

Teraz masz na to większy wpływ niż kiedykolwiek! Wejdź na portal Patronite i wesprzyj to co robię.

Żeby dowiedzieć się szczegółów zapoznaj się z tym artykułem.

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.

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ą (spokojnie, nie rozsyłam spamu):



Uwaga: Jeżeli w ciągu 24-godzin od zapisania się na listę mailingową nie otrzymasz wybranego przez siebie prezentu to skontaktuj się ze mną.

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ć :)

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 (nie koniecznie młodego) programisty.

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 zebrało się 12 820,52 zł, więc jak widzisz jest już co pokazać, ale do celu nadal sporo 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ć.

Wysoko ponad ten milion stawiam na szerzenie wiedzy i dotarcie do 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 (na małych wyświetlaczach) krawędzi ekranu znajdziesz przyciski, które Ci to ułatwią. Jeżeli ich nie widzisz, to najprawdopodobniej zostały zablokowane przez Twój program do blokowania reklam. Niezależnie od tego, czy prześlesz ten wpis dalej, czy nie, to ja i tak dziękuję Ci serdecznie za doczytanie do tego miejsca! Do przeczytania niebawem.

PS. Jeśli mój blog przypadł Ci do gustu tak bardzo, że chciał(a)byś mi się w jakiś sposób odwdzięczyć, to mam dla Ciebie kilka ciekawych propozycji, z których możesz skorzystać. Szczególnie gorąco zachęcam do wsparcia poprzez serwis Patronite, ale jeżeli zdecydujesz się na którąkolwiek z wymienionych opcji, to serdecznie Ci za to DZIĘKUJĘ!

Picture Credits