martedì 6 giugno 2017

JAVA MAGAZINE - MAGGIO GIUGNO 2017


Selezione di articoli del bimestrale online Java Magazine, a cura di Programmazione Applicata.






Java Magazine - Maggio Giugno 2017 [link]

Questo numero è all'insegno delle librerie, set di funzioni utili che ti permettono di "non inventare la ruota di nuovo" e molto altro per progetti professionali o Open Source.

Eventi [pag 5]

Come anticipato nel precedente articolo, gli appassionati di Eclipse il 21-22 Giugno 2017 potranno partecipare all'EclipseCon a Tolosa in Francia [link].

Se invece siete appassionati di motori e avete pianificato di visitare il Museo Mercedes-Benz [link] o il Museo Porsche [link] di Stoccarda, in Germania, sappiate che in questi giorni (5-6 Giugno 2017) si sta svolgendo il Java Forum, una serie di approfondimenti curato dal JUG di Stoccarda [link].

Lombok [pag 10]

Immaginate di dover creare da zero una classe con molti attributi privati e quindi necessariamente realizzare quella noiosa valanga di metodi set-get indispensabili per renderli accessibili, immaginate adesso di dover gestire anche la non-nullabilità degli attributi nei metodi di set e magari anche gestire dei blocchi try-catch. Per automatizzare la generazione di questo codice elementare è stata preparata la libreria Lombok [link] che ha lo scopo di generare automaticamente del codice a partire da semplici piccole annotazioni come @NonNull o @Setter.

Sono totalmente favorevole a strumenti di generazione di codice, tuttavia credo che ormai tutti i programmatori di un certo livello siano ormai arrivati ad utilizzare uno strumento preferito oppure, come nel mio caso, se lo siano fatto da soli.

JSoup [pag 22]

Non è una novità ma è interessante vedere come JSoup [link], progetto Open Source nato nel lontano Gennaio 2010, sia diventato uno standard de-facto della industria informatica per quanto riguarda il parsing di pagine HTML in Java. A cosa serve un parser HTML? per estrarre informazioni a partire da un URL, per manipolare elementi di una pagina siano essi HTML, CSS o addirittura JQuery.

Un semplice esempio pratico? immaginate di avere una determinata pagina HTML e voler estrarre tutte le immagini a cui fa riferimento. Con poche semplici istruzioni è possibile estrapolare tutti i tag <img> ed ottenere la lista desiderata.

Librerie, da dove partire [pag 28]

A pagina 28, Stephen Colebourne uno degli Oracle Java Champion che ha dato un grandissimo contributo al linguaggio grazie al suo lavoro su Joda-Time e il framework java.time di Java 8, ci spiega le best-practice per realizzare librerie.

Quando si progetta una libreria è utile pensare agli utilizzi comuni che se ne fa. Nel 2004, la diatriba era contesa fra librerie omni-comprensive (esempio: Apache IO) oppure librerie altamente specializzate (esempio: Apache CLI).

Una libreria omni-comprensiva è costituita da tanti metodi pubblici che eseguivano semplici processi, era responsabilità del programmatore andare a scegliere quali metodi utilizzare e spesso cadeva nella scrittura di una classe wrapper per estrarre esclusivamente quelli di cui aveva bisogno.

D'altrocanto, una libreria altamente specializzata si contrappone con piccoli metodi ma con elaborazione di dati sostanziosa (come un parser XML o il sopra citato parser HTML).

In entrambi i casi è sempre il programmatore a dover decidere quale strumento utilizzare o, peggio ancora, di quale libreria fare a meno o rimpiazzare con una che copre maggiormente le proprie necessità. Questa frustrazione ha fatto nascere una terza tipologia di libreria: la business library che non fa tutto quello che potrebbe servire ma fa tutto quello che serve al programmatore. Una libreria precisa ed efficiente che tuttavia è poco riutilizzabile e spesso si sposa ad un solo progetto o una famiglia di progetti.

Per quanto stimi il lavoro di Colebourne, ritengo che l'argomento librerie sia ancora un punto aperto e non esista una "libreria perfetta" in ogni occasione, dipende da progetto e progetto. Il lavoro più duro è sempre quello del software designer che a volte deve costruire una intera architettura sulla base di una libreria che potrebbe non essere quella giusta per lui. Attenzione!!


Nessun commento:

Posta un commento