La plate-forme Java s’ouvre à d’autres langages !

Depuis plusieurs années, la question de l'interopérabilité entre Java et les langages de scripting revient régulièrement sur la scène. Quelle est la situation aujourd'hui ? La technologie de Sun peut-elle interagir avec les langages de Scripting ?

Java versus Scripting

Il faut bien distinguer la plate-forme Java du langage Java. La plate-forme Java est basée sur la machine virtuelle, garante de la portabilité des applications d'un système d'exploitation à un autre. Le langage Java comporte une syntaxe très stricte (à la majuscule ou au point-virgule près !).

De plus, les applications utilisent généralement un nombre important de technologies autour du langage comme Hibernate, Spring, Struts, Swing... La montée en compétence sur Java peut donc prendre beaucoup de temps.

A l'opposé, les langages de scripting (PHP, Ruby, Groovy...) permettent une montée en compétence beaucoup plus rapide. La syntaxe est plus souple, le volume de code est bien plus réduit qu'en Java. Pour le développement de sites Web, ces langages offrent les mêmes fonctionnalités que Java: sessions utilisateur, autorisations, HTTPS, prise en charge de pièces jointes...

En revanche, ils ne permettent pas une bonne structuration des développements, ce qui est problématique sur des projets de grande envergure. Ces langages de scripting sont donc très adaptés au développement rapide de petites et moyennes applications.


Le multi-langages, oui mais dans quel contexte ?

Le monde Java offre depuis peu de nouvelles perspectives. Il est maintenant possible de développer en utilisant des langages de scripting comme Python, Ruby, Groovy, JavaScript puis d'exécuter le code sur une plate-forme Java. Un programme écrit dans un langage de scripting peut invoquer un traitement Java, et vice-versa.

On pourrait donc imaginer un projet dans lequel chaque développeur de l'équipe utiliserait son langage préféré, avant que l'ensemble soit livré en un langage compilé unique. Ceci est conceptuellement intéressant, mais une telle application serait impossible à maintenir et se transformerait rapidement en tour de Babel. En revanche, nous allons voir que le multi-langages peut-être pertinent dans bien des cas.

- Développement d'une application à courte durée de vie : application événementielle ou prototype / Proof of Concept. Ces typologies d'applications ne requièrent pas d'évolution et doivent être développées le plus rapidement possible. En ce cas, il est très intéressant de développer avec un langage de scripting, puis de déployer sur une plate-forme Java standardisée.

- Exploitation : les administrateurs de serveurs Java ont des tâches récurrentes à effectuer comme le déploiement d'applications, le paramétrage de la sécurité etc. Pendant longtemps, ces tâches étaient automatisables à condition de programmer en Java. Il faut bien reconnaître que la programmation en Java n'est pas la fonction première d'un administrateur de serveurs.

Avec les nouvelles fonctionnalités Java, il est maintenant possible d'écrire les scripts d'administration de serveurs Java dans des langages plus simples comme Groovy, Python, Ruby etc. (il est à noter que certains éditeurs avaient anticipé ce type de besoin depuis quelques années. IBM et BEA proposent même des environnements de développement de scripts d'administration en Python).

- Intégration d'une application
: lors de la réception d'une application ou d'un progiciel, il est souvent nécessaire de personnaliser certaines fonctionnalités. L'utilisation d'un langage de scripting permet d'exécuter dynamiquement les instructions de personnalisation d'une application, sans avoir à repackager une application dans sa totalité.


Java 6 et les langages de Scripting

Pour les langages de Scripting et Java, il y aura eu deux époques : avant Java 6 et après Java 6. Avant Java 6 les langages de scripting ne faisaient officiellement pas partie de la sphère Java. Il y a eu des initiatives comme Jython (issu de Python) et JRuby (issu de Ruby), mais ces langages utilisaient un compilateur externe qui générait du bytecode "standard" Java à partir des fichiers sources écrits en Python ou Ruby. Ce mécanisme était donc totalement indépendant de la machine virtuelle Java.

La dernière version de Java, immatriculée Mustang, a été publiée fin 2006. Cette version propose une unification des langages de scripting autour de la plate-forme Java. Il existe une spécification que devra implémenter tout langage de scripting pour la plate-forme Java.

Le langage Rhino (basé sur JavaScript) sera livré par défaut avec Java 6. Les intégrations avec d'autres langages seront disponibles sous forme de bibliothèques optionnelles (Groovy, JRuby...). Selon les langages, ces bibliothèques seront fournies soit par Sun soit par des organismes externes.


Java / .Net, un juste retour des choses ?

Lors de la création de l'offre .Net par Microsoft, de nombreux concepts avaient été "repris" de Java. Aujourd'hui, c'est au tour de Java de rattraper son retard sur le monde Microsoft. En effet, Microsoft propose depuis plusieurs années la possibilité de développer en Visual Basic, C# ... tout en déployant sur une plate-forme standardisée, la plate-forme .Net.

L'évolution de la plate-forme Java vers une plate-forme multi-langage peut être vue comme un juste retour des choses. D'une manière générale, l'émulation concurrentielle entre ces deux géants bénéficie toujours aux développeurs que nous sommes. Dernièrement, Microsoft a travaillé sur l'intégration de Python et PHP dans sa plate-forme .Net.


Conclusion

Le futur de Java en tant que plate-forme multi-langages semble très prometteur. La bonne intégration des langages de scripting passe par l'adaptation des environnements de développement pour Java. Des plugins pour Eclipse et NetBeans foisonnent en ce moment. NetBeans 6, prévu pour courant 2007, supportera la plupart des langages évoqués (PHP, JRuby, JavaScript...).

Il reste à espérer que les éditeurs mettront spécialement l'accent sur PHP. En effet, PHP reste de très loin le langage de scripting Web le plus utilisé par les entreprises. Une intégration parfaite avec PHP serait un très grand atout pour la plate-forme Java.