Wednesday, November 28, 2007

Quando una classe java synchronyzed non è thread-safe

Oggi mi è arrivata la consueta mail della newsletter di TheServerSide.com ed era recensito un articolo che ha subito attirato la mia attenzione. L'articolo in questione parla di una delle più controverse questioni che presenta il linguaggio Java: la concorrenza e la sicurezza dei thread.
Essendo l'argomento di rilevante attenzione, specie nel mondo Enterprise in cui sicuramente ci troviamo alle prese con questioni di performance, mi interessa in modo particolare. L'articolo si trova qui. E' una buona guida al problema della concorrenza in Java e aiuta a rendersi ben conto di quello che succede a livello di codice JVM quando si itera una semplice Collection. Questo è da tenere bene a mente quando si sviluppa, speciamente in ambiente distribuito come è per la maggior parte delle applicazioni Enterprise basate su Application Server, perché spesso si crede che l'AS tenga conto di queste vulnerabilità della JDK, mentre non è sempre così. E' per questo che bisogna considerare, laddove il progetto lo richieda, l'uso del package java.util.concurrent che si prende cura di tutti i particolari legati al problema della concorrenza dei thread.

Friday, November 16, 2007

AppFuse 2.0 released

Con colpevole ritardo, dovuto ad impegni lavorativi, logorio della vita moderna ecc. ecc., mi accorgo solo oggi che la tanto attesa versione 2.0 di Appfuse è stata rilasciata. La piattaforma di sviluppo web di Matt Raible, sviluppatore j2ee molto popolare nella comunità open source nonché apprezzato autore del libro Spring Live (The Spring Primer), ha completato il ciclo di sviluppo ed ora è stata rilasciata, dopo 13 mesi di incubazione, la nuova release.
Novità di questa versione, per chi avesse utilizzato la prima, la "mavenizzazione" del prodotto che ha permesso di sostituire la distribuzione fisica del pacchetto compresso con un'installazione rapida da repository remoto. Non solo, ha permesso un'integrazione più spinta con altri prodotti accessori che prima non era possibile o lo era solo parzialmente.
Il QuickStart Tour per l'utilizzo della piattaforma è questo .

Tuesday, November 13, 2007

Prototipo Closures: procedura compilazione

Dopo aver scaricato il pacchetto del sw da qui, lo estraggo in una cartella qualsiasi.
Imposto JAVA_HOME= [dir_inst_jdk6] e PATH=[dir_inst_jdk6] /bin
Da riga di comando,

cd /bin

guardando il contenuto della directory si notano degli script di shell chiamati
  • javac
  • java
  • javadoc
E qui la procedura è leggermente diversa per utenti linux e win.

Compilazione ed Esecuzione sotto Linux:

sotto bin

Dare i permessi di esecuzione agli script javac e java .
chmod +x nomescript

Compilazione:

javac prova.java

Esecuzione:

java prova

Ehi, questa roba compila!! Strano, funziona pure!


Compilazione ed Esecuzione sotto Win:

Essendo gli script bash, su piattaforma win non vanno e si deve fare di necessità virtù le strade sono due

  • rifarsi gli script, rimaneggiandoli e rinominandoli .bat
  • copiare la linea di comando corretta riportandola a console
ho scelto l'opzione 2 dato che non sono molto bravo con gli script M$-D@$ e che ero molto impaziente di completare il lavoro.

e così:

set CLOSURES=[dir_inst_dist_closures]

poi

posizionarsi nella cartella dei

Compilazione:

javac -J-Xbootclasspath/p:%CLOSURES%/lib/javac.jar -source 7 -d . prova.java

Esecuzione:

java -Xbootclasspath/p:%CLOSURES%/lib/javac.jar prova

e, come direbbe Matt Raible, YEAH, BABY YEAH!!


Friday, November 09, 2007

Un interessante articolo...

...sulle closures. Nel mio intento di saperne di più su questi strani "oggetti" (che - per inciso - non si sa se e quando verranno inclusi nell'implementazione del jdk) mi sono imbattuto in questo articolo. L'autore, Neal Gafter , è stato il mantainer del programma javac; non una persona qualsiasi, dunque.
Difficoltà: elevata
Chiarezza: buona
Da leggere: si, se interessati al processo di formazione del nuovo jdk.

Thursday, November 08, 2007

Prima installazione del JDK 7 (ea-b23)

Ho scaricato il binario della nuovissima versione del java developers kit, la 7, da qui.
Sto tentando di saperne di più su alcune features della versione 7, in nuce nella 6, come per esempio le closures.
L'installazione è identica alle passate versioni, quindi nessuna sorpresa.
Ho intenzione di seguire un esempio di utilizzo che ho trovato nel Ricky's technical blog.
Intanto creo un progetto java in eclipse e vi associo la jre 7.
Uh-Oh....primi guai...il jdk 7 sembra aver "impallato" eclipse...killo il processo e ricomincio.
Ok...andata...adesso posso iniziare a giocare con questi strani 'animali sintattici'.
Stay tuned!!