Java – Introduzione alla libreria Jansi

Esiste una libreria Java probabilmente poco nota ma molto usata ad esempio dai sistemi di build Maven/Gradle che si chiama Jansi, per la gestione delle ANSI escape sequences all’interno delle console/terminali testuali. Ho pubblicato un articolo introduttivo su questa libreria sul portale IProgrammatori (iprogrammatori.it) con cui collaboro da tempo.
Potete leggere l’articolo completo qui Introduzione alla libreria Jansi.

Pubblicato in Java

Java – I “compact number format” dal JDK 12

Nel framework della piattaforma Standard Edition di Java esiste già da un po’ di tempo la funzionalità dei “compact number format” che era stata introdotta nel JDK 12 rilasciato nel mese di Marzo del 2019. Si tratta di un nuovo modo di formattare in stringa i numeri usando una forma compatta, in una maniera praticamente molto similare a come, ad esempio, un sistema operativo indica in modo abbreviato che un file ha la dimensione di es. 57 MB invece che indicare il numero esatto di byte.

Questa funzionalità è ad oggi ancora poco nota ma probabilmente solo perché è stata poco “pubblicizzata” e poco documentata (non ne ho trovato traccia nemmeno nel tutorial ufficiale Oracle). Questo articolo serve a descrivere questa funzionalità mostrando degli esempi di codice per illustrare il funzionamento in generale.

Continua a leggere

Java – Creazione di uno Stream di dati “casuali”

La Stream API, introdotta nel JDK 8, viene generalmente e tipicamente utilizzata per operare sui dati che provengono dalle “collezioni” (liste, set, ecc...) oppure, in certi casi, dagli array. Ma cosa si può fare se si volesse creare uno stream di dati “casuali”? Mi è capitato pochi giorni fa di pensarci, le soluzioni effettivamente esistono e sono semplici ma bisogna prima stabilire se si intende ottenere uno stream di numeri (int, long, ecc...) casuali oppure uno stream di oggetti casuali.

Continua a leggere

Java – Ricerca/rimozione di oggetti non “standard” nelle liste

Nel Java Collections Framework le collezioni di tipo “lista” (tutte le implementazioni della interfaccia java.util.List) hanno alcuni metodi dedicati alla ricerca e rimozione degli oggetti. In questo articolo verrà discusso l’utilizzo di questi metodi con particolare riferimento alla situazione in cui una lista contiene oggetti di classi non “standard”, ovvero scritte da zero.

Continua a leggere

Pubblicato in Java

Java – Confronto tra ArrayList e Vector

Tra le varie collezioni contenute nel Java Collections Framework della piattaforma Standard Edition di Java, esistono le due ben note classi java.util.ArrayList e java.util.Vector. Sono due “collezioni” molto simili come concetti e funzionalità, quindi si prestano molto bene ad essere messe a confronto.
Non sono certamente il primo che si occupa di fare una analisi di questo tipo ma con questo breve articolo l’obiettivo è di esporre in maniera chiara e puntuale tutte le similitudini e le differenze più rilevanti che si possono riscontrare su queste due collezioni.

Continua a leggere

Pubblicato in Java

Java – La fase di inizializzazione degli oggetti

In Java c’è un aspetto della programmazione ad oggetti che è veramente fondamentale e importante da comprendere bene: la fase di inizializzazione degli oggetti, cioè tutto quello che avviene quando si crea una “istanza” di una classe partendo dalla invocazione new NomeClasse(). In questo articolo cercherò di descrivere in maniera accurata le regole e i concetti sulla inizializzazione degli oggetti.

Continua a leggere

Pubblicato in Java

Java – “Helpful NullPointerExceptions” da Java 14

Nel JDK 14 è stata aggiunta una nuova funzionalità della JVM chiamata “Helpful NullPointerExceptions” che è stata sviluppata e portata avanti tramite la JEP-358 (JEP=JDK Enhancement Proposals). Si tratta della possibilità di ottenere dalla JVM dei messaggi di eccezione molto più “parlanti” nel solo caso di NullPointerException lanciati direttamente dalla JVM (e attenzione, non “programmaticamente” dalla applicazione!).

Continua a leggere

Java – Autowiring di un Logger con Spring Framework/Boot

Nelle applicazioni Java di un certo livello, specialmente nelle web application, è tipico utilizzare il logging per tracciare le attività della applicazione. In questo articolo descriverò una tecnica molto semplice per “iniettare” il Logger di una libreria di logging all’interno di un bean gestito da Spring (Framework o Boot).

Continua a leggere