mardi 5 février 2008

Annonce de SUN pour une JVM multilangages : le projet Da Vinci Machine

L'actualité technologique avance tous les jours avec :

SUN annonce officiellement le support d'une machine virtuelle multi-langages. Le schéma est inspiré (copié) de DotNet. Il était déjà timidement présenté depuis le JDK 6 (standard d'intégration de langage de "script").

Microsoft a déjà intégré un complément de la couche CLR (Commum Language Runtime) une couche DLR (Dynamic Langage Runtime) pour accueillir les langages à typage dynamique comme Python ou Ruby.

Des architectes de SUN ont présenté au dernier Lang.NET symposium, au campus Microsoft à Redmond, des évolutions importantes de la JVM. Ces évolutions complètent le byte code et la JVM pour permettre un accueil plus performant de ces langages dynamiques. Cela va, au passage, accélérer certaines partie du JDK (la réflexion, ...).

C'est une avancée importante de la plate-forme Java (la JVM et les API), qui va dans le même sens que la plate-forme DotNet : unification des runtimes qui deviennent indépendant du langage source. Le langage n'est que un moyen d'accéder au runtime (Threading, Garbage collector, compilateur Just In Time, ...).

L'interopérabilité entre langages est native : le byte code (JVM ou DotNet) ne connais pas le langage source qui l'a généré. Toutes les solutions techniques déjà développé dans un langage pour une plate-forme sont utilisables dans un autre langage. Exemple : des objects écrit avec le langage Groovy sont répliqués entre deux JVM par la solution Terracotta qui sait distribuer des objets JVM (initialement fait pour des objets dont le source est en Java).

Cette unification des runtime est l'avancé la plus importante de ce début de siècle, dans le domaine du logiciel.


SUN parle de renaissance, car il y a déjà près de 200 compilateurs (y comprit le GNAT pour l'ADA avec JGNAT) qui génère du byte code pour la JVM. Le principe est déjà utilisé, mais cela n'est pas très connu. C'est pour cette raison que SUN souhaite en faire un peu plus de publicité.


url : http://openjdk.java.net/projects/mlvm

Bonne lecture.



Sun's Da Vinci Machine broadens JVM coverage
Intent is to make it easier for more languages to run on virtual machines

Sun is working on technology to make it easier to run different languages on the Java Virtual Machine. Called the Da Vinci Machine, the project is being described by Sun as "a multi-language renaissance for the Java Virtual Machine architecture."

The project features prototype JVM extensions to run non-Java languages efficiently as well as architectural support. lthough many languages besides Java have been implemented on the JVM, including Ruby, the intent is to make the JVM more compatible with other languages, said Charles Nutter, core developer of JRuby, which is a version of Ruby to run on the JVM. "For the most part, almost every language that's more than five years old has some kind of implementation on the JVM," he said.


2008 Lang.NET Symposium - Conference Agenda
This week several of us from Sun attended the Lang.NET Symposium.


BRAVO FOR THE DYNAMIC RUNTIME!
The centerpiece of the conference was of course Microsoft's Common Language Runtime, and especially the new Dynamic Language Runtime, Jim Hugunin's encore to IronPython which factors out the reusable logic that glues dynamic languages on top of the CLR.


Dynamic Languages on the JVM and the DLR
Sun announced today the Da Vinci Machine Project, an effort aimed at creating JVM extensions to support dynamic languages as first-class JVM citizens. Writing about the growing interest in new programming languages on the two main runtimes-the JVM and Microsoft's CLR-Sun's John Rose remarks in Bravo for the Dynamic Runtime.


New Languages on the JVM: Pain Points and Remedies
So what's missing?
• Dynamic invocation
• Lightweight method objects
• Lightweight bytecode loading
• Continuations and stack introspection
• Tail calls and tail recursion
• Tuples and value-oriented types
• Immediate wrapper types
• Symbolic freedom (non-Java names)
• And always, higher performance


Da Vinci Machine a multi-language renaissance for the Java Virtual Machine architecture
Mission
We are extending the JVM with first-class architectural support for languages other than Java, especially dynamic languages. This project will prototype a number of extensions to the JVM, so that it can run non-Java languages efficiently, with a performance level comparable to that of Java itself. Our emphasis is on completing the existing bytecode and execution architecture with general purpose extensions, as opposed to a new feature for just one language, or adjoining an unrelated new execution model. We want the new languages to co-exist gracefully with Java in the JVM, and to benefit (like Java) from its powerful and mature technologies.


Sub-Projects and Investigations

  • Dynamic invocation
  • Lightweight method objects
  • Lightweight bytecode loading
  • Interface injection
  • Continuations and stack introspection
  • Tail calls and tail recursion
  • Tuples and value-oriented types
  • Immediate wrapper types
  • Runtime support for closures
  • Faster interface invocation
  • Faster reflection
  • Symbolic freedom (non-Java names)