Nodyn : Node.js s'invite sur la machine virtuelle Java
Le projet permet de combiner Java et Node.js pour des projets plus performants

Le , par Hinault Romaric, Responsable Actualités


« JavaScript est partout … ou est en passe de se retrouver partout. » Critiqué par certains, adulé par d’autres … le langage de script continue à conquérir des adeptes et s’étend désormais au-delà du Web.

JavaScript s’est retrouvé sur les serveurs grâce à Node.js. La plateforme de développement événementiel a conquis plusieurs entreprises américaines, qui ont abandonné notamment Java et Ruby On Rails pour celle-ci, avec des gains en performances et en productivité.

Fort de ce succès qui repose essentiellement sur son modèle de programmation événementiel I/O non bloquant, Node.js vient jouer sur les plates bandes du langage Java.

Grâce au projet open source Nodyn, Node.js peut désormais fonctionner sur la machine virtuelle Java (JVM). Soutenu par Red Hat, l’objectif du projet est de fournir une meilleure intégration entre Java et Node.js, et permettre ainsi aux applications Java de tirer parti des atouts de Node.js.

Avec Nodeyn, les développeurs seront également capables de faire travailler les applications Node.js avec les applications Java existantes. Ainsi, des travaux sont en cours pour intégrer le projet au sein de l’écosystème JBoss, et ses développeurs ont pour ambition de permettre son utilisation avec l’ensemble de l’univers Java, y compris les applications utilisant d’autres langages qui s’exécutent sur la JVM, à l’instar de Scala ou Clojure.

« Imaginez votre application Node fonctionner sur la JVM, ou avez immédiatement accès à tout ce que le monde Java peut fournir, directement à partir de JavaScript. Vous avez tout l’écosystème Java à votre disposition depuis DynJS. Pourquoi ne pas injecter un peu de JRuby ou Clojure à votre application », peut-on lire sur le site du projet

Nodyn est un surensemble de Node.js qui s’exécute au dessus de Dyn.js, un compilateur bytecode JavaScript, qui utilise les caractéristiques dynamiques de Java 7. Dyn.js est une alternative open source au moteur d’exécution JavaScript d’Oracle Nashorn. Le projet repose également sur Vert.x, un framework open source basé sur la JVM pour le développement d’applications Web évolutives « event-driven ».

Pour l’instant, le projet est encore au stade de préversion. Certaines API Node.js n’ont pas encore été intégrées à celui-ci.

Le site du projet

Le code source de Nodyn sur GitHub

Et vous ?

Que pensez-vous de ce projet ? Etes-vous attiré par celui-ci ?


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de Calmacil Calmacil
http://www.developpez.com
Membre du Club
le 14/03/2014 10:43
Je suis toujours choqué de voir associés "Java" et "performance" dans la même phrase.
Avatar de Xinu2010 Xinu2010
http://www.developpez.com
Membre confirmé
le 14/03/2014 10:49
Citation Envoyé par Hinault Romaric  Voir le message
Que pensez-vous de ce projet ? Etes-vous attiré par celui-ci ?

Pas du tout
Avatar de sizvix sizvix
http://www.developpez.com
Membre du Club
le 14/03/2014 11:11
Du JS dans la JVM, c'est ce que Rhino fait déjà depuis de longues années ( je crois qu'il est même déjà intégré dans le JVM, à moins que ça ne soit dans certaine version )
Mais apparement Rhino dans Node à la place de V8 est plus rapide, ça serait ralentir le tout que de faire l'inverse...
Sans intérêt donc ...
Ça existe déjà, et depuis longtemps.
Si on veut avoir tout NodeJS avec plus de perf et en plus de l'intégration se Java et ses objets, autant voir remplacé V8 par Rhino, c'est bien plus efficace ...
Avatar de cryo94 cryo94
http://www.developpez.com
Membre régulier
le 14/03/2014 13:59
Je suis toujours choqué de voir associés "Java" et "performance" dans la même phrase.

Comparé à quoi ? Desktop ? Web ? Php ? Temps de développement ?

Que pensez-vous de ce projet ? Etes-vous attiré par celui-ci ?

NE connaissant pas node.js ca peut être intéressant.
En tout cas je trouve que la prise en charge d'autres technos dans java une bonne option pour le langage.

Microsoft attire de plus en plus de monde avec la possibilité de coder ses sites web en C# / C++ / C / VB
Avatar de abriotde abriotde
http://www.developpez.com
Membre confirmé
le 14/03/2014 14:02
Rhino n'est pas plus rapide que V8. Il peut juste rivalisé avec en mode compilé. Mais l'intérêt de javascript c'est en partie son mode interprété.
CF : http://fr.wikipedia.org/wiki/Rhino_(moteur_JavaScript) : "En mode compilé, Rhino peut rivaliser en performances avec SpiderMonkey, son équivalent implémenté en C, mais il serait toutefois victime de fuites de mémoire5. En mode interprété, la compilation du script est plus rapide, et aucune fuite de mémoire n'a lieu, mais le script est alors plus lent."

Rhino est toutefois un projet intéressant pour tout développeur java qui veut manipuler du javascript.
Avatar de lunatix lunatix
http://www.developpez.com
Rédacteur
le 14/03/2014 17:32
Rhino est maintenant vieillissant : il a été developpé avant les evolution de la jvm pour faciliter le developpement de langages dynamiques (introduction du mot clé bytecode : invokeDynamic)
c'est plutot pas mal de voir apparaitre de nouvelles implementations nashorn et Dyn.js qui devraient etre bien plus performantes que rhino
Avatar de ymajoros ymajoros
http://www.developpez.com
Membre habitué
le 15/03/2014 9:38
Je suis toujours choqué de voir associés "Java" et "performance" dans la même phrase.

Une explication ou c'est juste un a priori ?
Avatar de Traroth2 Traroth2
http://www.developpez.com
Expert Confirmé Sénior
le 17/03/2014 11:54
En gros c'est un moyen de rendre Vert.x compatible Node.js en utilisant DynJS et le module dynJS pour Vert.x. Si ça marche bien, ça peut être carrément intéressant. Faire tourner npm et Grunt, par exemple, ça pourrait être vraiment cool.
Avatar de leminipouce leminipouce
http://www.developpez.com
Membre Expert
le 17/03/2014 16:22
Citation Envoyé par sizvix  Voir le message
Du JS dans la JVM, c'est ce que Rhino fait déjà depuis de longues années

Nashorn est justement le remplacement du très vieillissant Rhino. Je l'utilise régulièrement et pour sûr, il est lent, très lent, trop lent.

Dyn.JS est juste une alternative FLOSS à Nashorn.

Nodyn s'appuie dessus pour faire tourner Node.js. Pour moi, ça me semble très intéressant !
Avatar de la.lune la.lune
http://www.developpez.com
Membre Expert
le 18/03/2014 16:50
Citation Envoyé par Hinault Romaric  Voir le message
Fort de ce succès qui repose essentiellement sur son modèle de programmation événementiel I/O non bloquant, Node.js vient jouer sur les plates bandes du langage Java.

Je ne pense pas, et je ne pense non plus que Java vit une vraie limite devant la programmation événementielle I/O non bloquante. Ceci est tout juste une question d'architecture entre les technologies web de Java.

Les conteneurs de servlet ont choisit le modèle piloté par des thread et Node.js est basé sur le modèle événementielle.

Mais, je tiens à souligner que les travaux de Red Hat qui ont donné naissance à Vert.x deux ans après la sortie de Node.js, fut la réponse sur une architecture équivalente à celle de à Node.js dans le monde Java. Vert.x est aussi basé sur la programmation événementielle non bloquante .

Vert.x s'exécute de façon asynchrone, ainsi, les entrées sortie sont entre le client et le serveur sont gérés par un seul thread, qui gère toutes les requêtes de façon asynchrone. On peut bien évidement mettre en place un cluster, récupérer des données de façon asynchrone depuis le cluster au client.

Vert.x représente des performances considérables devant celle de Node.js, et spécialement le Vert.x écris en Java qui prend la première position en performance. Comme vous savez qu'on peut exécuter plusieurs langages sur le JVM.

Ce qui est surprenant c'est qu'avec Dyn.js(js->baytecode), les applications Vert.x écrites en JavaScript pressentent des performances énormes au dessus de celles écrites en JavaScript pour Node.js basé sur sur le moteur V8, qui lui aussi compile JavaScript en code machine.

Certes, Vert.x s'est inspiré de Node.js, mais là où je veux en venir ce qu' voit que la question n'est pas sur le langage Java, mais sur la manière dont les architectures sont conçus. Car on reproche aux technologie Web de Java de manque de légèreté( et non pas les performance car java est très performant) et consommation un plus en mémoire et en énergie.

Personnellement j'ai commencé à donner une grande importance à cette technologie Vert.x, et je me disais que j'aurais aimé que des expert sréalise un outils pareil et je croyais fortement à sa réalisation. Voila Vert.x qui réalise ce que je rêvais. Tu crées toi même ton propre serveur http et tu paramètre tes composants comme tu veux.

Tout reste que je vois que le fait de porter Node.js sur la JVM est une bonne chose, car elle pourra aussi faire gagner tout avantage existant sur Java et n'existant pas sur Node.js et vis-versa, car aucun langage est exempte de faiblesse.

Et comme c'est ajouté aussi dit dans le site, que avec ça tu va pouvoir non seulement exécuter ton application en Node.js sur la JVM, mais tu va pouvoir exploiter la puissance de le technologie du clustering de Vert.x, car celle de Vert.x est très puissante que celle de Node.js il y a des benchmark qui prouvent cela.

Imagine running your Node.js app on the JVM with clean, clear access to Java directly in your Javascript. All that with vert.x's powerful clustering technology built right in.

Et je crois que parmi l'utilité de l'autre côté, c'est sur les grosse applications de transfert de fichier, ou téléchargement ne sont pas aussi géré avec la légèreté de Node.js.

Citation Envoyé par leminipouce  Voir le message
Nashorn est justement le remplacement du très vieillissant Rhino. Je l'utilise régulièrement et pour sûr, il est lent, très lent, trop lent.
Dyn.JS est juste une alternative FLOSS à Nashorn.

Nashorn n'est qu'a ces débuts et déjà le code JavaScript exécuté dessus n'est pas compilé Nashorn l'interprete, contrairement au code écris et compilé avec Dyn.JS, qui tourne sur Java comme les autres langages tourant sur la JVM(Scala, Clojure, JRuby...).

Alors Dyn.JS fonctionne avec les Apis MethodHandles et InvokeDynamic, comme nom l'indique "Dyn":dynamic. Mais tout reste que Nashorn aussi exploite l'invocation dynamic de méthode de la JVM, donc elle a devant elle toute la pile de l'API Java

Citation Envoyé par Traroth2  Voir le message
En gros c'est un moyen de rendre Vert.x compatible Node.js en utilisant DynJS et le module dynJS pour Vert.x.

Oui c'est un moyen mais il ne veut pas se limiter à Vert.x dans le moment où Nodyn fait partie de l’écosystème JBoss, qui dit JBoss dit Java EE.
Déjà c'est dit dans l'article:
Citation Envoyé par Hinault Romaric  Voir le message
Ainsi, des travaux sont en cours pour intégrer le projet au sein de l’écosystème JBoss

J'ai également lu un billet ici disant précisant que:
le projet Nodyn fait également partie de l'écosystème JBoss pour garantir la poursuite de l'intégration avec le reste du monde d'applications Java

Offres d'emploi IT
Développeur JAVA
CDD
AgroSup Dijon - EDUTER - Bourgogne - Dijon (21000)
Parue le 09/07/2014
Ingénieur réseau h/f
CDI
D&B SÉLECTION - Provence Alpes Côte d'Azur - Marseille (13000)
Parue le 28/07/2014
Ingénieur informatique conception et développement
CDI
SIGT - Ile de France - Paris (75010)
Parue le 17/07/2014

Voir plus d'offres Voir la carte des offres IT
 
 
 
 
Partenaires

PlanetHoster
Ikoula