PayPal abandonne Java pour JavaScript
Node.js a permis un gain important en performance et en temps à l'entreprise
Le 2013-12-02 07:04:05, par Hinault Romaric, Responsable .NET
JavaScript est très critiqué par certains pour ses faiblesses. Pourtant, au fil du temps, le langage continue à jouir d’une grande popularité sur le Web.
PayPal, le service de paiement en ligne, a récemment abandonné le langage Java sur ses serveurs pour Node.js, avec un gain considérable dans le rendu des pages Web.
Jeffe Harrell, directeur de l’ingénierie chez PayPal, décrit dans un billet de blog, les avantages architecturaux de passer de Java à JavaScript. « Imaginez un développeur HTML qui doit demander à un développeur Java de lier la page A et B », explique Harrell.
Devant ce problème, PayPal devait avoir recourt des développeurs ayant des compétences différentes pour l’application Web et l’application serveur. « Chez PayPal, le bloqueur primaire a toujours été la limite artificielle que nous avons établie entre le navigateur et le serveur », explique celui-ci.
Pour surmonter cette situation, PayPal s’est tourné vers Node.js, qui a permis à la fois d’écrire les applications devant s’exécuter dans le navigateur et les applications serveurs en JavaScript. « Il [N.D.L.R : Node.js] unifie nos spécialités pour nous permettre de créer une équipe qui comprend et réagit rapidement aux besoins des utilisateurs à n’importe quel niveau dans la pile de technologie », justifie Jeffe Harrell.
PayPal a dans un premier temps commencé à utiliser Node.js comme plateforme de test avant de passer celui-ci en production cette année.
Avant d’adopter la plateforme de développement JavaScript événementiel, PayPal par mesure de prudence, à développer un équivalent en Java de son application Node.js. Pour l’application Node.js, il a fallu deux ingénieurs et pratiquement la moitié du temps utilisé par cinq personnes pour créer la déclinaison Java. L’application Node.js avait 33 % moins de lignes de code et 44 % moins de fichiers utilisés, que l’application Java.
Les tests de performances en production sur du matériel identique ont montré que l’application Node.js était de 35 % plus rapide que son équivalent Java. S’appuyant sur ces résultats, PayPal envisage de développer toutes ses applications Web orientées client avec Node.js. « Il y a une douzaine d’applications dont la migration a été amorcée », écrit Harrell.
Source : Paypal
Et vous ?
Qu'en pensez-vous ? JavaScript avec Node.js est-il une meilleure solution pour les services Web que Java ?
PayPal, le service de paiement en ligne, a récemment abandonné le langage Java sur ses serveurs pour Node.js, avec un gain considérable dans le rendu des pages Web.
Jeffe Harrell, directeur de l’ingénierie chez PayPal, décrit dans un billet de blog, les avantages architecturaux de passer de Java à JavaScript. « Imaginez un développeur HTML qui doit demander à un développeur Java de lier la page A et B », explique Harrell.
Devant ce problème, PayPal devait avoir recourt des développeurs ayant des compétences différentes pour l’application Web et l’application serveur. « Chez PayPal, le bloqueur primaire a toujours été la limite artificielle que nous avons établie entre le navigateur et le serveur », explique celui-ci.
Pour surmonter cette situation, PayPal s’est tourné vers Node.js, qui a permis à la fois d’écrire les applications devant s’exécuter dans le navigateur et les applications serveurs en JavaScript. « Il [N.D.L.R : Node.js] unifie nos spécialités pour nous permettre de créer une équipe qui comprend et réagit rapidement aux besoins des utilisateurs à n’importe quel niveau dans la pile de technologie », justifie Jeffe Harrell.
PayPal a dans un premier temps commencé à utiliser Node.js comme plateforme de test avant de passer celui-ci en production cette année.
Avant d’adopter la plateforme de développement JavaScript événementiel, PayPal par mesure de prudence, à développer un équivalent en Java de son application Node.js. Pour l’application Node.js, il a fallu deux ingénieurs et pratiquement la moitié du temps utilisé par cinq personnes pour créer la déclinaison Java. L’application Node.js avait 33 % moins de lignes de code et 44 % moins de fichiers utilisés, que l’application Java.
Les tests de performances en production sur du matériel identique ont montré que l’application Node.js était de 35 % plus rapide que son équivalent Java. S’appuyant sur ces résultats, PayPal envisage de développer toutes ses applications Web orientées client avec Node.js. « Il y a une douzaine d’applications dont la migration a été amorcée », écrit Harrell.
Source : Paypal
Et vous ?
-
_skipExpert éminentJe veux pas recommencer un énième troll java vs reste du monde mais tout de même :
Euh non je pense pas que ce genre de critique se vérifie complètement, les performances de java sont carrément bonnes à l'heure actuelle. On est plus dans les années 90. Et niveau maintenabilité il y a l'avantage amené par l'aspect statique du typage et la compilation, à qualité de code égale, je préfère 100 fois maintenir une app d'un million de lignes en java qu'en javascript.
Et bien sûr, il y a la question des coûts. Javascript et NodeJS sont totalement gratuits.
Pour en revenir à l'article, je pense que c'est un peu chaud de tirer des conclusions JS > java ou Java > js. Cela dépend aussi de l'équipe et des stacks qui ont été employées. Si côté java ils ont utilisé du JSF + EJB ou d'autres standards du même style, je veux bien croire qu'ils devaient être plus nombreux pour faire moins. Ca aurait été plus intéressant si on avait su exactement ce qui était comparé ici. Car "java" tout seul pour une application web ça ne nous dit pas grand chose, y'a une infinité de possibilité qui peuvent donner des résultats très variables. Ca peut être des des pommes, des poires, des choux et des patates...le 02/12/2013 à 9:07 -
VoyvodeMembre émérite
Envoyé par PayPal Engineering Blog Envoyé par PayPal Engineering Blog
[Edit]
http://benchmarksgame.alioth.debian....a&data=u64
Java a une performance brute clairement supérieure à JavaScript (et un code source effectivement plus lourd).
PayPal obtient de meilleurs performances avec Node.js parce que :
- leur code Java était, au mieux, mal adapté ;
- ils se sont retroussés les manches avec Node.js ;
- ils veulent faire du buzz trollesque.
le 02/12/2013 à 9:51 -
sekaijinExpert éminentComme toujours on peut voir une "gerre" de chapelle.
pour ma part je regarde la démarche et le résultat m'importe peu.
tout cela pour moi confirme une chose que je pense depuis longtemps. Si on analyse sans apriori les solutions disponible sur le marché et qu'on défini des odjectifs clairs on peu choisir de façon opportune.
la question ici n'est pas de savoir si JS ou C++ ou Java est plus rapide, moins gourmand ou quoi que ce soit de ce genre.
La question est Dans ce contexte précis, avec les compétence présente, qui de Node.js et de Java est le plus adapté pour atteindre les objectif fixés.
Paypal en fonction de CES besoins à choisi Node.js.
cela ne signfi nulement que Node.js est meilleur que qui que ce soit.
cela signifi que du point de vu de Paypal pour ce besoin dans ce contexte avec ces compétences Node.js est apparu comme le plus approprié.
Pour ceux qui disent que C++ ou je ne sais quel langage serait plus rapide
posez vous la question de savoir pourquoi on écrit encore des shell scripts.
pour moi cette affaire devrait servir d'exemple et Paypal serait bien en lumière si elle publiait sa methode de choix.
je lis ici ou là que ce genre de post ou d'annonce vise à tuer Java ou je ne sais quoi d'autre.
moi ce que je lit c'est que Node.js peut être concidéré comme une alternative. non pas un remplaçant mais un outil de plus.
quand rubi à débarqué on a eu droit au même phénomene. Oui techniquement rubi était bien mais avion snous la preuve que pour une grosse app il faisait l'affaire ? puis petit a petit certains ce sont lancé et on monté que c'était viable.
ça n'a tué personne ça a juste ajouter une possibilité de plus.
Node.js est arrivé est de la même façon on a eu quelque dev ici où là mais pour un responssable choisir Node.js n'était pas facile car trop jeune. depuis il a fait petit à petit ces preuves.
aujourd'hui Paypal nous dit "Node.js est vaible pour une applie de grandes ampleur. Nous y croyons, nous avons évalué la solution, et nous l'avons retenus"
Je dis Chouette un outil de plus. lorsque nous aurons un projet pour faire notre choix nous mettrons en face des besoin et du contexte un outils de plus nous aurons donc une chance de plus d'avoir un outil adapté.
qui à parlé de tuer Java ? qui à dis que JS était plus rapide que Java, qui a dit que JS était meilleur ?
A+JYTle 07/12/2013 à 18:24 -
MarkandMembre éclairéPersonnellement je pense que les graphismes ont du sens.
1. Node.js est un framework javascript extrêmement simple. De base, il fournit qu'une API JavaScript pour coder une application rapidement. On a aucun système de template, de session, d'ORM de base. Ça peut justifier un gain en rapidité.
2. Node.js est codé en C++. Bien que Java soit aussi un langage compilé, le C++ reste plus performant dans certains domaines.
3. Pour avoir travaillé dans une entreprise où on faisait du développement Java. Je peux assurer que ce n'est pas que le code qui fait la rapidité. Pour installer une application web java il faut un conteneur (Tomcat, Glassfish, JBoss, etc.) Ces derniers rajoutent une couche d'exécution supplémentaire ce qui ralentit encore une fois l'application. De plus, la plupart des applications web java inclue des gros framework nécessitant pas mal de ressources (JSF, Primefaces, Hibernate (ou JPA), Spring, etc).
Mais effectivement, il aurait été intéressant de savoir plus en détails ce qui était utilisé côté Java chez PayPal.le 02/12/2013 à 11:21 -
la.luneMembre chevronnéCe que j'aime juste souligner ici avant de dire ce que je pense, c'est que je me demande quand est ce que les gens vont oublier l'idée que java est lent en exécution?
Et comme _skip l'a mentionné le java d'aujourdui n'est pas le java des années 90, le moment où on a voulu créer le concept d’écrire une seule fois et exécuter partout utilisant les machines virtuelles.
Java a pourtant des performances à l’échelle de C/C++. A titre d'info, il faut savoir que ce n'est pas un bon matin que Facebook a décidé de compiler son code php en C++, puis en binaire, mais c'est après des analyses qui sont bien faites sur tous les autres langages.
Je vous invite à lire la présentation "Facebook architecture de 600 millions d'utilisateur", ici, sur la 24e slide, ils ont présenté les résultats des performances entre les langages comme illustre cette image:
Au lieu d'utiliser java qui dépasse de très loin php en performance, ils ont choisit de profiter du petit gain que C++ en a au dessus de java.
Comme vous voyez java est très performant devant ces concurrents sur le web excepté relativement JavaScript qui n'est pas sur la graphe .
J'ai vu un exemple avec de petit portion de code que vous pouvez même tester par ici, un même code qui s’exécute 1 minute 16 secondes en python, et 1 minute 9 secondes en php, et 41 seconde en Perl, s’exécute en seulement 18 seconde en java.
Mais il ne faut pas penser que c'est le seul côté que java gagne en performance, sur script à longue durée, mais c'est plutôt en trafic et en activités que les ingénieurs qui ont conçu Java EE ont fait le grand boulot. Ça ne va pas s'observer en exécuter une requête ou deux, mais quand vous allez exécuter des milliers de requêtes à la fois.
Une seule servlet(java) vivant répond à un millier de requête à la fois, le moment où par exemple php créer un nouveau programme pour chaque requête, étant donné qu'il est basé sur le modèle CGI(Common Gateway Interface). C'est pour cela que beaucoup sites à fort trafic choisissent java vu sa robustesse.
Pour ce qui est Java vs JavaScript côté serveur, d'abord c'est que personne ne peut nier les performance de node et sa légèreté qui sont aussi relatives.
J'aime bien Node.js sur le fait que tu crée ton propre serveur et tu choisit les modules à charger et tu peux choisir les objets que tu veut garder en mémoire tout long de la vie du serveur, car ce qui fait la force d'une plateforme web c'est composants serveurs vivant ou mort sous la décision du développer.
Alors en Java EE, ils ont voulus standardiser les choses et ne pas obliger le développeur à créer ses propres serveurs, mais créer juste les composants et paramétrer leurs cycle de vie.
Ainsi, ce qui fait ce ce n'est pas nous même qui gèrent nos composants mais c'est le serveur(midlware), lui aussi qui s’exécute sur la machine virtuelle java, donc quelques milliseconde en retard et quelques charges en mémoire qui font que JavaScript lui dépasse.
Mais a mon avis, vu que java c'est du compilé contrairement à JavaScript, si on pourrait développer avec comme on développe avec Node.js, mais avec une bonne architecture, java dépasserait bien JavaScript.
Mais tout reste que côté architecture et bonne structure des applications, java ne se compare pas à JavaScript, et Java EE ne se compare pas à Node.js. De même que les framwork et les outils de développement, test, débogage, intégration continue.... Tout cela, doit être pris en compte et là je rejoint ce que _skip a mentionné.le 02/12/2013 à 12:36 -
GugelhupfModérateurPour ce qui est de ASP.NET MVC 5 et Symfony2 (tout deux orientés action), j'ai eu l'occasion de pratiquer Symfony2, et ne comparons pas ce qui n'est pas comparable, cela rien n'a voir avec le standard JSF2 (orienté composant) qui conserve une longueur d'avance. Si tu es dans une entreprise qui est à jour, c'est finit l'époque Struts...
???le 03/12/2013 à 13:12 -
fr1manExpert confirméJe rejoins tout à fait _skip.
J'adore ces superbes analyses avec de beaux graphiques pour prouver qu'on a raison, alors qu'on ne sait rien sur la façon dont tout a été développé.le 02/12/2013 à 10:03 -
GugelhupfModérateur
Il existe une expression turque qui dit :
meyve veren ağaç taşlanırle 03/12/2013 à 9:52 -
Paul TOTHExpert éminent sénior
Qu'en pensez-vous ? JavaScript avec Node.js est-il une meilleure solution pour les services Web que Java ?
Je ne suis pas fan de Java, mais je pense surtout que l'équipe de développeurs JS de Paypal est plus réactive que l'équipe de développeurs Java, voir plus compétente et là ça fait un grosse différence.
D'autre part, JS a depuis quelques années était l'objet d'un gros travail d'optimisation part plusieurs acteurs, ce qui l'a propulsé vers le haut...Java n'a pas connu cette course à la performance pour autant que je sache. Google a d'ailleurs décidé de créer la machine virtuelle Dalvik pour Android jugeant que celle de Java n'était pas adaptée aux smartphones.
Ceci dit, je n'aime pas Java, mais je n'ai pas que de l'amour pour JS, son modèle objet est des plus casse pied.le 02/12/2013 à 7:37 -
WashmidMembre averti+1000
Comparer un framework (node.js) à un language (java) c'est sans grande signification.
Et le côté statique permet de faire des choses aussi basiques qu'indispensables comme autoriser le factoring, la navigation dans le code, etc. etc.le 02/12/2013 à 9:42