Le symposium
Lang.NET 2008 achevé, faisons le point sur les annonces et
perspectives sur les langages Java et .Net.
.Net C#, VB, C++ versus "Java sinon rien"
Les détracteurs du langage Java sont de plus en plus nombreux, non pas que
Java soit dépassé, mais plutôt parce que le concept de machine virtuelle
(JVM) proposé par SUN dès 1995 ne laisse pas la possibilité de
choisir un autre langage. Bref, c'est Java sinon rien ! En effet, la
JVM permet l' exécution d'un code compilé (Java bytecode) provenant d'un
et un seul langage : Java.
A contrario, Microsoft a proposé dès la première version de l'environnement
.Net, une machine virtuelle (CLR - Common Language Runtime) capable d' exécuter
un code compilé (IL - Intermediate Langage) provenant d'un ou plusieurs
langages répondant aux Common Langage Specifications (voir ECMA) : C#, VB.Net, C++ managé supportés par Microsoft et Delphi,
Cobol ... promus par des partenaires.
Des runtimes pour supporter les langages dynamiques
Ces 2 dernières années ont vu l'émergence de nouveaux langages, qualifiés de
dynamiques. Ceux-ci ont été intégrés à l' environnement d' exécution Microsoft
.Net en Avril 2007 grâce à une couche dédiée à la mise en oeuvre des
fonctionnalités dynamiques de ces langages. Il s'agit du Dynamic Langage Runtime (DLR). Pour information, les
travaux sur la DLR ont été initié par Jim Hugunin, à l'origine de IronPython, qui souhaitait faire
bénéficier de son expérience les futurs concepteurs de langages
dynamiques. La DLR est populaire sur la plate-forme Microsoft .Net, non
seulement au travers des langages dynamiques qui l'exploitent (Python, Ruby)
mais aussi parce que Microsoft propose la DLR sur plusieurs envrironnements
d'exécution grâce à la technologie SilverLight (à explorer au travers de cet
article MSDN : les coulisses de la CLR : DLR et SilverLight,
DLRConsole).
Côté Java, les développeurs ne sont pas en reste puisque certaines
communautés n'ont pas attendu pour implémenter des langages dynamiques (JRuby,
JPython notamment). En l'absence de DLR, ces implémentations sont complexes à
réaliser. C'est ce que constate SUN en lançant le projet "Da Vinci Machine" qui vise à
compléter la JVM de capacités dynamiques.
Perspective
Tirons partir de l'expérience de .Net en ce domaine. En effet, le projet
Ruby.Net vient d'être abandonné par son créateur (annonce
du 4 février) parce que celui-ci a pu constater que la DLR permettait
d'implémenter Ruby de façon plus robuste et performante. Ruby.Net laisse donc
la place à l'implémentation IronRuby qui repose sur la DLR (tout comme
IronPython).
Dans ce contexte que deviendront JRuby et JPython si le projet Da Vinci
Machine porte ses fruits ? Seront-ils abandonnés au profilt d'un "Wood"Ruby ou
d'un "Wood"Python reposant sur la Da Vinci Machine. Dans tous les cas, ils
seraient intéressants que les concepteurs de JRuby et JPython participent au
projet initié par SUN, pour faire profiter la communauté de leur
expérience à l'image de la contribution de Jim Hugunin vers la
CLR.