Project Lombok è una libreria Java che si propone di ridurre il codice boilerplate. Aggiungendo semplici annotazioni al codice, Lombok genera automaticamente getter, setter, costruttori, e molto altro ancora, rendendo il codice più pulito e leggibile. Questo tutorial ti guiderà attraverso i passaggi per configurare Project Lombok utilizzando Maven ed IntelliJ IDEA.
Prima di procedere con il tutorial, è necessario aver installato sul proprio dispositivo sia Maven che l’IDE (va bene anche la community edition gratuita) che potete scaricare dai link riportati sopra.
Creazione di un nuovo progetto Lombok con Maven
Fortunatamente le ultime versioni di IntelliJ sono già compatibili nativamente con Project Lombok e non richiedono l’utilizzo di plugin esterni. Questo è il motivo per cui abbiamo scelto di usare questo IDE per il nostro tutorial. Se preferite usare altri tool come ad esempio Eclipse, il procedimento è analogo a meno del fatto che sarà necessario installare l’apposito plugin.
Per creare un nuovo progetto Maven usando IntelliJ è possibile seguire i seguenti step:
- Selezionare la voce del menù “File -> New -> Project”
- Selezionare Maven come sistema di gestione delle dipendenze e cliccare su “Next”
- Dare un nome al progetto e selezionare una directory locale per salvare i file
Una volta creato il progetto vuoto, la prima cosa da fare consiste nell’importare la dipendenza da Lombok all’interno del file “pom.xml”:
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
</dependencies>
Esempio di utilizzo di Lombok
Una volta inizializzato il progetto, siamo pronti per fare il nostro primo test di utilizzo di Lombok. Supponiamo quindi di dover sviluppare un programma che gestisca dei colori secondo la scala RGB. Ogni colore avrà quindi 3 variabili di tipo numerico (int) che rappresentano le gradazioni di rosso, giallo e verde.
Mediante Lombok è possibile scrivere molto brevemente la classe come segue:
import lombok.AllArgsConstructor;
import lombok.Getter;
@AllArgsConstructor
@Getter
public class RgbColor {
private int red;
private int green;
private int blue;
}
Abbiamo utilizzato nell’esempio due delle annotation più comuni di Lombok:
- @AllArgsConstructor: definisce automaticamente un costruttore sulla classe che prenda in input i valori di tutte le variabili contenute al suo interno.
- @Getter: definisce automaticamente tutti i metodi getter per le variabili della classe.
Volendo scrivere la stessa classe senza usare Lombok il codice sarebbe stato molto più verboso e ripetitivo:
public class RgbColor {
private int red;
private int green;
private int blue;
public RgbColor(int r, int g, int b) {
this.red = r;
this.green = g;
this.blue = b;
}
public int getRed() {
return red;
}
public int getGreen() {
return green;
}
public int getBlue() {
return blue;
}
}
Possiamo apprezzare sin da subito alcuni dei pregi più importanti di questa libreria ovvero la capacità di rendere il codice molto più leggibile oltre che velocizzare lo sviluppo. In merito al secondo punto bisogna dire che comunque alcuni degli IDE più diffusi, tra cui anche IntelliJ, dispongono di funzionalità che generano automaticamente i metodi partendo dalle variabili della classe quindi il tema della velocità è abbastanza relativo.
Per testare il codice possiamo creare una seconda classe con un main di esempio:
public class Main {
public static void main (String[] args) {
RgbColor color = new RgbColor(30, 22,55);
System.out.println("red: " + color.getRed());
System.out.println("gren: " + color.getGreen());
System.out.println("blue: " + color.getBlue());
}
}
Naturalmente abbiamo potuto utilizzato sia il costruttore che i metodi getter esattamente come se li avessimo implementati nel modo tradizionale.
Il funzionamento in compile-time
Lombok è una libreria “particolare” in quanto non interviene durante il runtime dell’applicazione ma agisce durante la fase di compilazione. In altre parole estende il funzionamento del compilatore java e va ad iniettare all’interno del codice le parti mancanti prima di generare il bytecode che poi viene eseguito durante l’esecuzione del programma.
Proprio per questo motivo la dipendenza Maven è stata importata con scope “provided”. Questo significa che la dipendenza è necessaria solo durante la compilazione e il test del progetto, ma non sarà inclusa nel pacchetto finale dell’applicazione (ad esempio, il file JAR o WAR generato).
Project Lombok è uno strumento essenziale per qualsiasi sviluppatore Java che desideri ridurre il codice boilerplate e migliorare la leggibilità del proprio codice. Con una semplice configurazione e l’uso di annotazioni, Lombok può automatizzare molti compiti ripetitivi, permettendo agli sviluppatori di concentrarsi su ciò che conta davvero: la logica dell’applicazione.
Se non hai ancora provato Lombok, ti incoraggio a farlo nel tuo prossimo progetto Java. Non solo semplificherà il tuo codice, ma ti farà anche risparmiare tempo prezioso.