Ultimamente si è molto parlato del miglioramento del linguaggio Java.
Come risposta a C#, Java 5 ha introdotto i Generics, il construtto foreach, l’auto (un)boxing e i varargs, assieme ad altre cose per rendere più semplice l aprogrammazione in Java.
Attraverso le annotazioni è possibile introdurre metainformazioni in maniera più pulita rispetto ai commenti normali (anche rispetto a tecnologie come xdoclet). In risposta a C# 3, sono stati proposti altri cambiamenti. Ma il programmatore odierno di Java riuscirà a capire anche il codice futuro?
Ecco cosa ne pensa Ed Burnette, personaggio di spicco nel mondo Eclipse.
Mi piacciono le novità , ma attenzione, questo è Java, non C#. Java proviene da una varietà di industrie, a C# proviene da una sola. Se C# cambia, allora la Microsoft creerà una nuova versione del framework che installerà su ogni computer. Java non si può permettere tale lusso. Ci sono ancora clienti che utilizzano Java 1.4.1 e servirà almeno un altro anno prima che sia i produttori di Virtual Machine sia gli sviluppatori assorbano le novità di Java 5. E perchè dovrebbero? Java è magnifico a causa delle caratteristiche del linguaggio? Sarebbe più popolare se permettesse di saltare un paio di parentesi, un cast o una chiamata a funzione? No, anzi!!!
Le nuove caratteristiche del linguaggio rendono Java meno grande e difficile da estendere, così come nuove caratteristiche in java.* e javax.* o nuovi metodi nelle classi comunemente utilizzati, come Integer e String. Probabilmente è solo eresia, ma sono sicuro che sono nel giusto.
Prendiamo come esempio Mylar, un plugin di Eclipse scritto da zero, utilizzando tutte le nuove funzionalità di Java 5. Ma c’è un piccolo problema: non tutti possono usare Java 5. Per esempio, non c’è supporto a Java 5 con il compilatore gcc (attraverso gcj).
Java è grande a causa dell’enorme quantità di software disponibile da terze parti. La maggior parte del software open source oggigiorno è scritto in Java. Ma Java ha bisogno di stabilizzarsi, altrimenti perderà tale vantaggio. Ormai ha compiuto 10 anni e dovrebbe essere maturo… non morto ma maturo!
Infatti c’è un lato negativo con le nuove versioni di Java: per esempio molti plugin per eclipse sono stati riscritti per funzionare in quello che viene chiamato “ambiente fondamentale”. Questo è un sottoinsieme di Java che funziona anche nelle vecchie versioni, in virtual machine più piccole e in ambienti vincolati.
Ai linguistici piace introdurre nuovi elementi, nuovi comandi e keyword speciali, ma gli utenti sono disposti ad utilizzare tali funzionalità ? Probabilmente un gruppo di utenti le vuole, ma la maggior parte si chiederà che cambiamenti saranno richiesti al loro codice, se sarà il caso di aggiornarsi o se il codice di terzi richiederà tali funzionalità prima che il mio sia pronto. Annoiante, lo so, ma sono domande molto pratiche su punti molti importanti.
Il mio suggerimento? Mantenere la linea al livello di Java 1.4 (o precedente). Imposta il tuo ambiente di sviluppo a non accettare i costrutti di Java 5 automaticamente. Avrai comunque il vantaggio di usare le migliorie introdotte con l’ultimissima JVM, come una miglior allocazione della memoria e un miglior compilatore JIT, senza apportare cambiamenti al codice. Guarda i cambiamenti in Java 5 e oltre, e chiediti onestamente: “Ne ho veramente bisogno? Sto guadagnando più di quanto mi vincoli a questo?” La maggior parte delle volte la risposta sarà un “no”.
Ma quando sarà sicuro utilizzare i costrutti di Java 5? Almeno quando il Java Runtime Environment 5.0 non sarà presente ovunque. Con questo intendo che quando sarà disponibile su tutte le piattaforme, incluse quelle gratis o open source, e ogni persona avrà provato ad utilizzarla, scovarne i bug e adattarcisi. Pià gente usa il tuo codice, più tardi è opportuno convertirsi.
Concludendo, le innovazioni dovrebbero concentrarsi al di fuori del linguaggio e delle librerie di base, posti in cui risiede la vera potenza di Java. Smettetela di fare di Java un bersaglio che si sposta velocemente. Accettate la sua maturità come una buona cosa, come una forza con cui ci si può costruire sopra, non come una debolezza che ha bisogno di essere corretta.
Articolo tradotto da Matteo di developers-blog.blogspot.com
Articolo originale: www.eclipsezone.com/eclipse/forums/t54318.html