Tecnologie
Le versioni delle seguenti tecnologie utilizzate all’interno del progetto sono reperibili all’interno del file build.gradle
.
Indice
Java
Il server è scritto in Java 14, utilizzando OpenJDK come JDK di riferimento.
Spring
Spring è utilizzato principalmente come framework di dependency injection e per l’esposizione delle web API.
MongoDB
Per la persistenza dei dati viene utilizzato il database non-relazionale MongoDB, collegamento facilitato dall’integrazione fornita da Spring Data MongoDB.
Lombok
Lombok è un libreria Java alla quale viene delegata la scrittura di determinati metodi (quali getter, setter e costruttori), ciò ha permesso di ridurre il carico di lavoro degli sviluppatori ed il numero di unit test richiesti.
OpenAPI
L’esposizione di REST API attraverso il framework Spring ha permesso anche di generare automaticamente una documentazione di tali API fruibile attraverso un’interfaccia web (accedibile mediante l’URL /swagger-ui.html
). Tale documentazione viene facilmente estesa attraverso l’utilizzo di annotazioni fornite dalla libreria Swagger.
iText7
iText7 è la libreria utilizzata per la creazione dei report PDF.
Solidity
Solidity è il linguaggio con il quale è scritto lo smart contract Ethereum.
Web3j
Web3j è la libreria utilizzata per interfacciarsi con la blockchain Ethereum. Tale libreria implementa una classe astratta attraverso la quale viene esposto lo smart contract Solidity.
Ganache
Ganache permette di simulare localmente una blockchain Ethereum così da facilitarne il testing.
jUnit
jUnit 5 è il framework utilizzato per la scrittura degli unit test.
Mockito
Mockito è la libreria utilizzata all’interno degli unit test per la creazione di mock.
JaCoCo
Il code-coverage degli unit test viene misurato attraverso JaCoCo e poi esposto attraverso il servizio web Codecov.
Spotless
Lo stile del codice prodotto è applicato e controllato attraverso la libreria Spotless, le regole di tale formato sono definite all’interno di build.gradle
.
Gradle
Gradle è un tool di build-automation che permette di configurare il progetto e le sue dipendenze attraverso un file build.gradle
. Grazie a questo strumento è possibile riprodurre autonomamente il processo di build mediante continuous-integration.
Docker
Docker permette di creare facilmente container per definire ambienti di intallazione e configurazione definiti e riproducibili in qualsiasi macchina.