Qualche anno fa quando Java era Sun Microsystems e non ancora Oracle, fu avviato lo sviluppo di OpenJDK una nuova JDK basata gran parte sul codice della JDK proprietaria di Sun Microsystems, ma rilasciata con licenza GPL!
Nel corso degli anni lentamente questa versione e` cresciuta, abbiamo visto uscire OpenJDK 6 (non troppo stabile), e poi OpenJDK 7 che attualmente e` la 'reference implementation' di Java!
Fino ad ora lo sviluppo e` stato guidato (e materialmente fatto) da alcune grandi aziende interessate all'evoluzione di java, con non molte contribuzioni esterne e un processo complicato di tracciatura di bug e submit di patch, ma siamo arrivati ad un punto di svolta, alcuni sviluppatori OpenJDK connessi con alcune grandi community java, hanno avviato una iniziativa per facilitare chiunque fosse interessato a contribuire ad un pezzetto della OpenJDK!
I riferimenti a questa iniziativa li potete trovare (in inglese) qui: Adopt Open JDK
Lo scopo di questa iniziativa sono molteplici:
Introdurre nuove persone nel ciclo di sviluppo
Migliorare gli strumenti di bulding
Migliorare i processi di submit e tracking di bug e patch
Produrre piu` test case open source
Il lavoro da fare in molti casi non e` cosi complesso, e molto spesso non ha a che fare con C++, un esempio su tutti e` scrivere test case per le Collection Java, sono abbastanza sicuro che almeno il 99% dei membri del JUG Roma non ha nessun problema a scrivere un test case ed ad usere le Collection Java!!
Diversi JUG sparsi nel mondo hanno gia` iniziato ad organizare "Hack Days"!!
Iniziamo anche noi a contribuire scrivendo nella mail list, iniziando a buildare la OpenJDK 8!
Il primo passo per contribuire e` avere un ambiente di sviluppo pronto! Ecco le Istruzioni (in inglese) per preparare il proprio anbiente di sviluppo (testate in un OpenJDK Hack Day )!
Probabilmente ispirati dal successo di CoffeeScript, recentemente sono stati creati dei nuovi linguaggi che compilano verso JavaScript. Questi sono Dart, presentato da poco da Google, Ceylon sviluppato da Red Hat, Kotlin di JetBrains (la società che creato IntelliJ IDEA), TypeScript di Microsoft ed Haxe.
Dart
Le caratteristiche principali di Dart sono il fatto di poter fare programmazione ad oggetti, la tipizzazione dinamica, cioè non c'è bisogno di specificare il tipo di una variabile, ed il package manager denominato "pub" che permette di gestire le dipendenze di un progetto in modo molto comodo.
Un enorme difetto di Dart è che la quantità di JavaScript che viene prodotta è sproporzionata rispetto al codice di partenza. Una decina di righe di Dart si trasformano in 40 Kilobyte di codice JavaScript, che è un po' troppo.
C'è anche il video di presentazione alla Google Developers Conference di Milano:
Ceylon
Ceylon è un linguaggio sviluppato da Red Hat che è anch'esso ad oggetti e modulare. Da Ceylon è possibile utilizzare sia le librerie di Java che di JavaScript. Supporta gli import con i numeri di versione, il polimorfismo degli operatori e le funzioni di ordine superiore.
Il confronto tra Dart è Ceylon pè riassunto qui da Gavin King, colui che ha creato Ceylon:
«Hi, well, there's lots of differences, but I suppose the broad differences are: - Ceylon compiles to the JVM and JS virtual machines, Dart has its own virtual machine, and also compiles to JS. - Ceylon has a very powerful, very strict static type system, Dart is more of a halfway point between a dynamic language and a language like Java. If Dart starts to take off, I think that we'll certainly build an additional compiler backend for the Dart VM, including interop with the Dart language. It was nice to see one of the developers of Dart already reach out to me on the reddit thread.» http://ceylon-lang.org/blog/2013/11/12/ceylon-1/#comment-1124817759
Per una introduzione a Ceylon:
Kotlin
A differenza degli altri due linguaggi, Kotlin ha dei tipi statici, cioè il tipo di una variabile deve essere specificato dal programmatore e noto al tempo della compilazione.
Anche da Kotlin è possibile usare classi Java e ci sono funzioni di ordine superiore e funzioni anonime.
Per una introduzione a Kotlin:
TypeScript
Anche TypeScript è un linguaggio open source che compila in JavaScript. Ha il grande vantaggio di essere una estensione di JavaScript e quindi automaticamente qualsiasi codice JavaScript può essere aggiunto a sorgente TypeScript e possono essere utilizzati tutti i framework JavaScript già esistenti. Esiste anche un plugin per Eclipse.
Per una introduzione:
Haxe
Haxe è un linguaggio che può essere compilato in tantissimi linguaggi di programmazione, tra cui JavaScript, Java, C#, C++ e PHP.
Per una introduzione ad Haxe:
Altri linguaggi
Ai linguaggi citati sopra si aggiungono:
Il prossimo incontro sarà il 28 Novembre alle 18 presso la sede Red Hat in Via Andrea Doria 41M (zona Prati).
Per raggiungerla scendere a Metro A Cipro o Ottaviano - equivalente 500 metri a piedi.
La sede è raggiungibile anche con l'autobus 23.
Il programma prevede 3 microtalk ed un talk.
I 3 microtalk sono:
Emanuele Gherardini (System Architect - Gaming Platform at GTech s.p.a.): "Pattern per la concorrenza: Master Worker vs Actor Model";
Vitalij Zadneprovskij (Senior Java Consultant at SDP Solutions): "Sviluppo di moduli SOA con Java EE" L’architettura SOA è resa possibile dalle tecnologie che fanno comunicare moduli eterogenei. SOA e component based development, quanto sono simili e quanto diversi? I passi che hanno preceduto i web services: CORBA ed RMI. I web services. Esempio di architettura SOA. Implementazione di web services con Jersey;
Matteo Moci (Software Engineer at Cybion Srl): "Elastic Search" Primi passi con un aggregate-oriented database. I concetti principali, le funzionalità di base e alcuni aspetti da tenere in considerazione per costruire un’applicazione scalabile.
Il talk è:
Andrea Leoncini (JBoss Senior Solution Architect at Red Hat): “Writing application with the new Cloud Paradigm.” OpenShift enables you to create, deploy and manage applications within the cloud. In this workshop an Introduction to the platform, its internal architecture and a quick demo.