giovedì 11 dicembre 2008

Java è morto, viva Java

C'era una volta il C++. Un linguaggio complesso, nato in un periodo in cui la OOP era in gran parte materia accademica. Il C++ (in gran parte) ha consentito di traghettare il mondo professionale dall'approccio procedurale a quello ad oggetti. Con il tempo, e con l'accumulo dei casi d'uso, il C++ è diventato sempre più ingombrante. La sua sintassi è troppo ricca di costrutti legati ad una visione a basso livello del sistema operativo, ma se devo implementare un sistema informativo e non una libreria grafica, non voglio preoccuparmi di tenere a bada allocazioni, indirizzi di memoria, buffer di file.
Così (banalizzando molto...) nacquero gli ambienti RAD, come Visual Basic e Delphi, che portarono anche importanti evoluzioni nei linguaggi. Soprattutto Delphi (derivato dal Turbo Pascal, ok) creò forse il primo vero ambiente di sviluppo per applicazioni commerciali con una visione moderna e ricca delle esperienze accumulate negli anni.
Da lì poi si passò a Java (da cui Microsoft si ispirò per il C#) che ripulì ancora di più la sintassi creando il primo vero linguaggio ad oggetti puro (non strettamente accademico).

Il C++ però non è affatto sparito, anzi. Se ci si basa sulle richieste di lavoro, il C++ arranca ma è ancora tra i primi 10. Questo perchè, in ogni caso, il C++ è ancora la crosta immediatamente successiva alle API di basso livello di quasi tutti i sistemi operativi. Fornisce le spalle solide su cui appoggiarsi con altri strumenti più adatti alle esigenze degli utenti finali.
Mi ha meravigliato scoprire quanto Python leghi bene al C++. Un linguaggio semplice, interpretato, in simbiosi con un mostro della sintassi. XBMC, un frontend per mediacenter che mi ha quasi fatto dimenticare Meedio, è scritto in C++, ma si appoggia a Python per i plugin. Un'idea semplice ed efficace, che permette a chi vuole contribuire di lavorare con un editor di testo e qualche nozione di programmazione non troppo sofisticata.

Dove voglio arrivare con tutto questo pippone? A me sembra che anche per Java sia arrivato il momento di diventare una solida spalla. Esistono ormai centinaia di piattaforme software scritte in Java e molte sono diventate ormai imprenscindibili per realizzare applicazioni data-oriented. Spring e Hibernate sono i casi più eclatanti.
Ma forse Java è diventato anche lui troppo "a basso livello" per le applicazioni moderne. Ormai quasi ogni specifica funzionale può essere soddisfatta assemblando mattoncini già esistenti. Un esempio è XML, che per anni è stato un surrogato a Java per questi scopi. Si assemblavano mattoni utilizzando XML. Però la relativa semplicità di XML ha fatto sì che assemblare mattoni sia diventato più difficile che scriverne di nuovi.
Io ho la sensazione (molto a naso, non sono un guru o un analista di mercato), che i tempi siano maturi perchè Groovy possa diventare il linguaggio della prossima generazione di applicazioni, almeno nell'ambito dei sistemi a prevalenza open source e multipiattaforma. La semplicità di Groovy unita all'efficienza (computazionale) di Java. Grails ne è l'esempio più riuscito.
Chi ha pensato a JavaFX, lasci perdere. Su quel terreno Java prenderà batoste dolorose.
Da parte mia, per l'anno nuovo mi sono prefisso di convertire a Groovy il più possibile delle mie attività (vincoli aziendali permettendo). Un primo passo potrebbe essere la scrittura dei test case di applicazioni Java, che mi permetterebbe di valutare senza rischi le sue caratteristiche di performance. Un secondo passo potrebbe essere, giusto un esempio, una portlet in Groovy.
Se poi ci fosse qualcosa di disponibile per Eclipse RCP, non sarebbe male...