A tutti coloro che, almeno una volta, hanno storto il naso di fronte a caterve di metodi get/set, toString ed altri che rendevano prolisso e poco leggibile il proprio codice, Lombok potrebbe tornare assai utile. Si tratta di una libreria (jar) ideata con l’obiettivo di minimizzare la scrittura di codice necessario ad operazioni utilizzate di frequente nella stesura di classi java (essenzialmente POJO) grazie all’utilizzo di annotazioni ad hoc: (more...)

Continua a leggere Lombok, una libreria per eliminare prolissità  nel codice

Categoria: Java

Dopo aver esaminato la classe path è la volta delle directory, la cui visualizzazione è stata fortemente modificata nella nuova API a tutto vantaggio della scalabilità : niente più array per modellare il contenuto di una directory (con ovvi cali di performance in caso di un grande numero di elementi presenti nella directory), ma un oggetto di tipo Iterator in grado di scorrerne il contenuto più il supporto a filtri ed espressioni regolari. Sono stati inoltre introdotti i link simbolici (collegamenti): un link simbolico è un riferimento a file o cartelle che possono essere creati, modificati o eliminati senza intaccare in alcun modo gli oggetti del filesystem a cui punta. I link simbolici sono supportati in ambiente UNIX così come in sotto Windows, ed ora grazie alle nuove I/O API in Java 7 saranno gestibili esplicitamente anche tramite codice. (more...)

Continua a leggere Verso Java 7: la nuova I/O API (parte 2)

Categoria: Java

L’avvento di Java 7 porterà  grosse novità  anche tra le librerie di I/O: si tratta di modifiche ormai necessarie in quanto la vecchia API, in buona parte risalente ai tempi di Java 1.0, si è spesso rivelata difficile da estendere e da gestire. Si pensi alla gestione dei file: problemi con la rinomina; scarso supporto alla gestione di permessi e metadati; scarsa efficienza nella copia; gestione delle notifiche di modifica (change notifications) poco efficiente; difficile gestione delle eccezioni (molti metodi della I/O API attuale non ne sollevano esplicitamente, per cui molto spesso è difficile capire perché un’operazione non sia andata a buon fine; nessuna possibilità  di sviluppare implementazioni di filesystem ad hoc, ad esempio per la gestione di archivi compressi. (more...)

Continua a leggere Verso Java 7: la nuova I/O API (parte 1)

Categoria: Java

Tags: ,

Con l'arrivo di Dolphin si conclude quello che è stato uno dei dibattiti più accesi degli ultimi tempi nella comunità  Java, ossia l’introduzione di funzioni lambda (lambda expressions) e chiusure (closures), fino ad ora solo in parte simulabili e riproducibili con i costrutti disponibili (ad esempio le classi anonime): il sottoprogetto incaricato di implementare questa feature già  da tempo presente in linguaggi quali Ruby o Python è Project Lambda. (more...)

Continua a leggere Verso Java 7: lambda expressions e closures

Categoria: Java

Le annotazioni (annotations) sono una realtà  in Java ormai dal 2004, anno del rilascio di Java SE 5 "Tiger", ed in breve tempo hanno raggiunto una diffusione capillare tanto nella JDK quanto nei framework più utilizzati e diffusi, specie in ambito Java EE. Con l’arrivo di Dolphin è prevista un’estensione dell’utilizzo delle annotazioni anche ai tipi: il sottoprogetto di OpenJDK7 in questione è Type Annotations, sviluppato in ambito accademico ed in parte basato su Checker Framework. Ecco un po’ di esempi di utilizzo delle type annotations. (more...)

Continua a leggere Verso Java 7: type annotations

Categoria: Java

Dopo le news su performance e linguaggi dinamici, scendiamo un pizzico più in profondità  nell’analizzare i futuri cambiamenti nello scrivere codice Java. Parzialmente influenzato proprio dai linguaggi dinamici (Mark Reinhold parla guarda caso di Python) il sottoprogetto di OpenJDK Project Coin è finalizzato a rendere più rapida e produttiva la scrittura di codice grazie a migliorie quali il supporto al tipo String nel costrutto switch (era ora!). Finalmente, quindi, potremo scrivere codice come: (more...)

Continua a leggere Verso Java 7: Project Coin

Categoria: Java

Inutile nasconderlo: sarà  per le numerose novità  previste, sarà  per i tempi biblici del rilascio, sarà  per il trambusto suscitato dall’affare Oracle-Sun, quel che è certo è che l’attesa per Java SE 7 è grande, e le recenti parole di Mark Reinhold in un Oracle TechCast hanno avuto una notevole eco in rete. Molte delle novità  annunciate, racchiuse in sottoprogetti (con codename quali Jigsaw, Coin, Type Annotations, ecc.) erano già  nell’aria da tempo, ma il fatto che arrivino conferme ufficiali da addetti ai lavori come Reinhold, software engineer impegnato in OpenJDK, non può che essere accolto come un buon segno per chi aspetta il rilascio di Dolphin. (more...)

Continua a leggere Verso Java 7: performance e linguaggi dinamici

Categoria: Java

Doppio rilascio per PrimeFaces, set di componenti JSF sviluppato in Turchia: le nuove versioni sono la 1.0.0, che utilizza JavaServer Faces 1.x, e la 2.0.0, basata invece sulle più recenti JSF 2.0. Con più di settanta componenti disponibili, supporto Ajax, utilizzo non intrusivo di JavaScript basato sulla recentissima versione 1.4 di JQuery, compatibilità  dichiarata con altre librerie di componenti JSF, PrimeFaces si pone come possibile alternativa alle più note e consolidate RichFaces o ICEfaces. (more...)

Continua a leggere PrimeFaces: JSF tra enterprise e mobile

Categoria: Java

Nato nel 2008 come tentativo da parte di Sun di imporsi nel mondo del collaborative hosting nonostante la presenza di realtà  consolidate quali SourceForge, Google Code o GitHub, Project Kenai (pronuncia: keen-eye, come testimonia il post celebrativo di Tim Bray) sembrava tristemente avviato a chiudere i battenti dopo l’ormai nota acquisizione di Sun da parte di Oracle. (more...)

Continua a leggere Nuova vita per Project Kenai

Categoria: Java

àˆ notizia di qualche giorno fa il rilascio della prima versione stabile di Qi4j (pronuncia: chee for jay). Sicuramente meno noto rispetto alle soluzioni Java EE di big del settore quali SpringSource, JBoss e Oracle, è un framework ispirato dai principi del Domain-Driven Design e in parte a quelli di Aspect Oriented Programming e Dependency Injection; ad evidenziare il lavoro svolto, gli ideatori di Qi4j, in gran parte sviluppatori della scandinava JayWay, hanno coniato una definizione ad hoc: Composite Oriented Programming (COP). (more...)

Continua a leggere Qi4j e la Composite Oriented Programming

Categoria: Java