Clicky

Systempuntoout: Bitter Java ,Beyond Java!

Tuesday, November 08, 2005

Bitter Java ,Beyond Java!

Bruce Tate accompagna il suo recente libro Beyond Java con un interessante articolo su OnJava .
L'argomento e' il seguente:
un sempre piu' largo numero di sviluppatori crede che java non sia più sufficientemente produttivo a confronto di altri linguaggi e tecnologie oggi disponibili.
Il dominio Java , in determinati domini applicativi, potrebbe essere minacciato da quattro differenti "insidie":

1. Dynamic language
Ruby , con l'hype del framework Rail , e' diventato molto popolare per la semplicità e l'eleganza del suo codice.
Attraverso il typing dinamico e' possibile convertire il verboso java:

for (Iterator i = aList.iterator(); i.hasNext(); ) {
Item each = (Item) i.next();
if (each.getPrice>1000) {
anotherList.add(each);
}
}


in una perla come questa:

anotherList = aList.collect({|item| item.getPrice>1000)})


Oppure, senza ricamare troppo, basta pensare come un semplice snippet Python:

mioFile=open('c:\\test.txt','r').read()

possa trasformarsi in un incubo Java fatto di FileInputStream, InputStreamReader,BufferedInputStream.
E' sintomatico trovare su comp.lang.java.programmer, un thread di 50 messaggi dove ci si lancia alla ricerca del miglior codice per una semplice lettura di un file!

2. Continuation Server
I Continuation based framework ,sfruttando i costrutti continuation forniti dal linguaggio a cui si appoggiano, sono in grado di simulare una applicazione stateful; in questo modo e' possibile facilitare la programmazione di applicazioni web evitando l'ingrato compito di dover buttare tutto sulla sessione per legare la navigazione su pagine distinte.
I continuation server cercano di sollevare il programmatore web gestendo in maniera trasparente il salvataggio degli stati dell'applicazione risolvendo problemi comuni come la gestione del dannato tasto back sul browser.
Da segnalare seaside in smalltalk ed il gruppo Borges, Iowa e Wee basati su Ruby.

3. Convention over Configuration
Chi utilizza web framework java come Struts o Spring Mvc sa che esistono dei file di configurazione dove , specificato un controller , vengono dichiarate le viste da chiamare in base all'esito dell'operazione eseguita.
L'approccio di Ruby on Rails sfrutta una convenzione per gestire la stessa cosa.
Per esempio, un controller BlogController, con un metodo show, terminata la propria esecuzione , chiamerà la vista rshow.html all'interno della cartella blog_controller

La tendenza dei nuovi framework punteranno più sulla convention che sulla configuration svincolando il programmatore da parecchio lavoro.

4. Metaprogramming
Stanchi di mappare le tabelle del vostro Db in oggetti di dominio ?
Ruby , ed il particolare il framework ActiveRecord,permette di lavorare ad un livello di astrazione molto alto consentendo di
dichiarare una classe senza specificarne gli attributi.
class Person <>
Sarà Ruby ad andare su db , fare lo scan della tabella relativa a Person (people!) ed aggiungere attributi e behaviour alla classe.(tutto a runtime!)


E' la prima volta ,dopo dieci anni di strapotere, che Java ha degli avversari aggressivi che possono dare fastidio nell'immediato futuro.
Bruce Tate seppe pronosticare il successo di Spring e la caduta degli EJB2.0;vedremo se avrà ragione anche questa volta.



0 comments: