|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||||
|
Membre expérimenté
![]() ![]() Etienne Ingénieur développement logiciels Inscription : août 2011 Messages : 107 ![]() |
Bonjour à tous,
Comme on peut le voir depuis quelques temps, le langage JavaScript est en plein essor. Ce langage a la réputation d'être le « langage qui s'exécute dans le browser ». Et pourtant, lors de sa création pour Netscape en 1995, le langage (alors dénommé LiveScript) a été destiné par son auteur, Brendan Eich, à une utilisation côté serveur. Le langage a été renommé JavaScript un peu avant sa sortie pour des raisons marketing (Sun et Netscape étaient partenaires et la JVM très populaire). Ce n'est qu'en 1996 que Netscape écrit une implémentation cliente de JavaScript pour son navigateur. C'est le succès dudit navigateur qui déclenche l'adoption massive du langage côté client. Ces informations proviennent de Wikipedia, que je vous invite à consulter pour en savoir plus. Aujourd'hui, et contrairement aux croyances courantes, JavaScript est loin de n'être utilisé que dans les navigateurs. Pour citer quelques exemples :
JavaScript côté serveur Comme on a pu le voir dans le paragraphe précédent, JavaScript a été conçu à l'origine pour être un langage exécuté côté serveur. Depuis, plusieurs projets d'utilisation server side du langage ont vu le jour. Pour en citer quelques-uns :
Le cas Node.js Le cas le plus courant d'utilisation de JavaScript côté serveur est Node.js. Il s'agit d'une plateforme permettant de développer des applications réseaux asynchrones rapidement et simplement. Ces applications monothreadées peuvent prendre en charge une quantité très élevée de requêtes simultanément. Cette technologie a acquis rapidement une grande popularité et de nombreux modules sont maintenant disponibles (cf. NPM). Il est à noter que Node.js fournit nativement plusieurs API asynchrones listées ici. Voici un exemple type de code Node.js, tiré du site officiel : Code JavaScript :
De nombreuses entreprises adoptent Node.js pour répondre à leurs besoins ou pour répondre aux besoins de leurs utilisateurs. Parmi les plus connues, on peut citer :
![]() Réactions Cette utilisation de plus en plus massive de JavaScript côté serveur soulève des réactions très diverses, allant de l'enthousiasme au scepticisme en passant par le dégoût. Certains considèrent que sa puissance et sa souplesse font de lui une solution idéale pour résoudre certaines problématiques modernes. Pour d'autres, JavaScript est un langage mal conçu et son utilisation massive n'est pas de bonne augure pour l'avenir du développement. JavaScript a aussi auprès de nombreux développeurs une réputation de langage simpliste pour amateurs et bidouilleurs. Par ailleurs, cet essor de JavaScript a vu naitre plusieurs projets visant à le remplacer (Dart, par Google), à l'étendre (TypeScript, par Microsoft) ou à l'améliorer (CoffeeScript). Pour exemple, voici ce que donne le code donné ci-dessus en CoffeeScript : Code CoffeeScript :
DébatLe but de ce sujet est de créer un débat argumenté autour de l'utilisation de JavaScript côté serveur : qu'en pensez-vous et surtout pourquoi ? |
||||
|
|
100
|
|
|
#2 |
|
Membre actif
![]() |
On a eu la mode Js coté client pour alléger les serveurs. Maintenant c'est l'inverse.
Je code une appli web en C# (pas en asp.net). J'ai été aussi confronté à l'utilisation de Js côté serveur pour le traitement des données, mais est-ce bien utile? C# est un langage très complet, alors quelle est la plus value apportée ? A la base, je voulais utiliser handlebars côté serveur, mais je me suis tourné vers stringtemplate. Je trouve qu'il faut un bon équilibre entre ce que fait le client et le serveur. d'ailleurs html5 vas dans le sens de moins de traitement sur le serveur non ? ps: petite coquille: Ajoud'hui -> Aujourd'hui |
|
|
20
|
|
|
#3 |
|
Membre confirmé
![]() |
Ca dépend de l'utilisation. Quand il s'agit de générer des pages web ou bien faire une API Rest qui gère une base de données, Node va être super rapide que ce soit à développer ou à exécuter, quand on utilise les bons outils.
Par contre s'il s'agit de faire du gros traitement de données ou de l'analyse complexe de données sur de grosses bases de données, je suis pas sûr que l'utilisation de Node soit approprié. Dans tous les cas l'utilisation de CoffeeScript est à mon gout indispensable. |
|
10
|
|
|
#4 |
|
Membre émérite
![]() Inscription : juillet 2010 Messages : 603 ![]() |
Node est un choix , il n'est pas imposé , et ne souffre pas des défauts de javascript coté client ( système de modules , pas de contraintes de compatibilité ou d'API non supportés, donc évolution rapide , pas de DOM ... ) .
Bref , les devs font ce qu'ils veulent coté serveur , c'est leur problème. Mon problème c'est javascript coté client... ![]() Zavez oublié wakanda coté serveur , et couchdb qui permet de créer des applications javascript juste avec une base de donnée. |
|
|
20
|
|
|
#5 |
|
Membre régulier
![]() Inscription : mars 2012 Messages : 135 ![]() |
Je vais peut etre poser une question bête mais c'est quoi l'interet de js cote server ?
Il y a une valeur ajoutes par rapport a des langages comme java ou .net ? |
|
|
01
|
|
|
#6 |
|
Membre chevronné
![]() Farid Inscription : janvier 2008 Messages : 424 ![]() |
|
|
|
11
|
|
|
#8 | ||||
|
Membre confirmé
![]() Inscription : avril 2005 Messages : 447 ![]() |
La javascript est un mal extrêmement nécessaire coté client pour le moment car c'est le seul langage de programmation disponible sur les browsers. Si Dart ou Typescript et Actionscript existe c'est bien le preuve que les grands de l'industrie ont bien conscience du problème mais je suis atterré que des concepteurs d'outils l'utilise encore du coté serveur.
Citation:
Citation:
Exemple : En JavaScript "Je pense donc je suis" ben en fait non. Code :
pas de typage pour les variables = Mine de bug intarissable. Type et contexte très volatile ce qui donne des effets bien bizarres = Mine de bug intarissable. C#, Java et même PHP et surtout l'ActionScript (et bien d'autres) sont tellement plus complet et mieux gérer que le JavaScript que je ne vois pas l’intérêt de le choisir coté serveur. C'est toujours malheureux que de bon outils se fourvoie sur leur langage d'exploitation (Node.js avec javascript, Oracle DB avec le PL/SQL) et après ce sont les malheureux développeur qui passe après qui doivent s'en servir. |
||||
|
|
44
|
|
|
#9 | ||
|
Membre confirmé
![]() Inscription : avril 2005 Messages : 447 ![]() |
Citation:
A la question pourquoi du js dans node : [Mode apposition des mains sur ma G500] A mon avis cela doit venir de V8 plus que du Js en lui même. [/Mode apposition des mains sur ma G500] Après voici une explication qui est dans wikipedia english http://en.wikipedia.org/wiki/Nodejs Citation:
|
||
|
|
02
|
|
|
#10 |
|
Membre confirmé
![]() Inscription : avril 2005 Messages : 447 ![]() |
[Mode apposition des mains sur ma G500]
Je pense qu'en utilisant V8, les concepteurs ont pris une base bien maintenu et qui en C++ comme le reste de Node.Js. Du coup c'est plus facilement intégrable et les wrapping sont natif entre Javascript et le C++ via V8 (un peu comme JNI pour Java ou les modules en C pour le PHP). Ceci n'est que mon avis et tient un peu mieux la route que la justification de l'article wikipedia [/Mode apposition des mains sur ma G500] |
|
|
12
|
|
|
#11 |
|
Nouveau Membre du Club
![]() jason Développeur informatique Inscription : décembre 2012 Messages : 16 ![]() |
Qu'apporte js cote serveur?:
le mode asynchrone! et ça ça fait déjà une énorme différence! grace aux traitements asynchrone, on a un gain de perf extraordinaire. certes l'asynchronisme n'est pas réservée au javascript seulement il est natif dans javascript, et aujourd'hui ce qui se fait de mieux dans ce domaine est node.js node.js est utilisée pour les jeux en réseau, les sites web, les webservices... et concernant les webservice le celebrissime module socket.IO est PARFAIT (il permet de gérer extrêmement facilement les webSockets). Donc faire du vrai push! petite explication pour ceux qui ne savent pas: avant html5 et les websockets on utilisait AJAX (pauvre de nous), AJAX n'est pas bidirectionnel (ce qui signifie que le serveur ne peut pas de son propre chef envoyer des infos au client, le serveur ne peut que répondre aux clients), et Donc lorsque le client a besoin par exemple d'avoir un flux a jour il est obliger de questionner le serveur toutes les X secondes. (ce qui est immonde, gaspillage de bande passante, de CPU etc). maintenant pour mettre a jour un flux on attend que le serveur nous envoie une donnee quand il le souhaite car Les WebSockets sont bidirectionnels! (et petit truc en plus qu'offre Socket.Io c'est qu'il peut faire fonctionner les websockets sur un vieux navigateur, en utilisant un peu le principe de cometd (qui simule le push en répondant le plus tard possible a la requête... c'etait la misère, et maintenant on node.js!). @magnus2005 il existe plein de framework qui permettent de palier aux 'defauts' de js. et JS est un meilleur choix car V8 est super puissant, multi plateformes et tres leger. Java est lourdingue, pas orienter asynchrone, et s'execute dans une VM... C# a peu pres la meme chose. et aussi JSON, qui est le format natif de stockage de JS et qui est le meilleur dans son domaine. Concernant le typage faible, ca permet un dynamisme enorme, est une réflexivité déconcertante, (faire de la reflexivite en java sans librairies est du masochisme pur et dur). Bref on a souvent tendance a oublie les avantages de JS pour se concentrer sur ses défauts. d'ailleurs je me souviens d'une video de douglas crawford qui parliat des bons cotes de javascript (il y en a quand meme ^^) https://www.youtube.com/watch?v=_DKkVvOt6dk (en anglais mais sous titre en français) |
|
|
53
|
|
|
#12 |
|
Membre chevronné
![]() |
Et Erlang ?
Distribuable, concurrent, mpi et simplement multicore.
__________________
Nul ne peut mieux connaitre la connaissance qu'elle-même. |
|
00
|
|
|
#13 |
|
Membre actif
![]() Inscription : avril 2009 Messages : 131 ![]() |
La nature asynchrone de JS permet d'avoir un script qui ne bloque jamais durant l'execution, meme durant une requete, l'execution du script continue jusqua ce que l'information sois disponible et puis ensuite un callback est apellé.
Bien sur que pour des taches de calcul intensives ce n'est pas la technologie la plus adaptée, quoi qu'on peut parfois deleguer les calculs au client... tout depend de la sensibilité des données. Mais pour des petits envoi de données brutes sans traitement, Il n'y aucune raison de ne pas utiliser NodeJS. Il ne faut pas jouer au jeu des comparaisons avec les autres languages/framework serveur, JS/NodeJS excelle dans son domaine d'application. |
|
|
22
|
|
|
#14 | |||||
|
Membre confirmé
![]() Inscription : avril 2005 Messages : 447 ![]() |
Citation:
Pour autant que je sache les sockets sont implémentés dans la plupart des langages depuis bien longtemps. Dans Node.js c'est d'ailleurs fort probablement une API C++ qui fait le fait le job en back office via V8. Effectivement Java et C# c'est relativement pareil. Citation:
Citation:
Citation:
Citation:
[Mode Bisounours] Si Ms, Google, Oracle , IBM et Mozilla se mettait d'accord) se serait fait en clin d’œil il connaissent tous comment faire un bon langage de programmation. Ou par exemple prendre Dart comme language remplacement du JS se serait déjà un gros plus pour le dev. [/Mode Bisounours] |
|||||
|
|
22
|
|
|
#15 |
|
Membre expérimenté
![]() Inscription : novembre 2012 Messages : 442 ![]() |
Voyons, quels sont les sites les plus fréquentés aujourd'hui ? Réseaux sociaux, sites de streaming musical et vidéo, webmails et outils en ligne. Leur point commun, c'est que le modèle requête-réponse classique n'est plus adapté pour eux. On met du AJAX partout, et bientôt des Server Sent Events et des Web Sockets. Certains disent même que les "single page websites" pourraient devenir une nouvelle norme en web front.
Je fais du dev côté serveur en JavaEE et en Node.JS. Le premier est bien plus mature, fiable et complet en outils et frameworks. Mais je dois reconnaître que pour un service RESTful vite fait bien fait, Node.js est un petit bonheur. Après, la permissivité du langage, on aime ou on aime pas. Mais c'est pas tant le Javascript qui est important, c'est juste une conséquence logique de l'évolution des usages du Web. |
|
|
20
|
|
|
#16 | |
|
Membre actif
![]() Inscription : avril 2009 Messages : 131 ![]() |
Citation:
Il n'y a pas de gestion de threads, tout est geré a l'interne, on programme exactement comme s'il n'y avais qu'un fil d'execution. |
|
|
|
21
|
|
|
#17 | |
|
Membre émérite
![]() Inscription : juillet 2010 Messages : 603 ![]() |
Citation:
|
|
|
|
00
|
|
|
#18 | |
|
Membre émérite
![]() Inscription : juillet 2010 Messages : 603 ![]() |
Citation:
L'avantage dans une application web , c'est que cela permet de créer des serveurs qui supportent une très grosse montée en charge et cela avec un seul thread. |
|
|
|
21
|
|
|
#19 | ||||
|
Nouveau Membre du Club
![]() jason Développeur informatique Inscription : décembre 2012 Messages : 16 ![]() |
@magnus2005 le plus de JavaScript est qu'il est mieux adapté pour faire ce dont parle javan00b:
- un programme en node.js est une succession de callbacks dans tous les sens, et faire ça en c++ est assez suicidaire (je ne parle pas de la nouvelle norme du c++ qui permettent les fonctions lambdas, mais a l'epoque ces normes n’étaient pas implémentés). D'ailleurs Qt par exemple a son propre c++ qui permet de gérer beaucoup mieux les callbacks tout en étant O.O (avec signal et slot). Qt est excellent mais pour y parvenir il a du creer des mots-cles qui n'existe pas en c++, le c++ n'est vraiment pas adapté pour ca. -Effectivement JS n'est pas totalement orientee objet, mais ca lui permet d'etre plus souple, et plus en adequation avec node. et surtout... require.js (qui permet de faire une sorte d'include, mais pas du tout la meme logique), sur lequel est basé en grande partie node.js est magique! (et je pèse mes mots et je tiens a dire que la POO n'est pas le saint graal, node.js est beaucoup plus orientée module si je puis dire qu'objet, au travers de node.js. d'ailleurs on utilise pas vraiment d'objet avec node. Je pense Vraiment que LE language le plus adapté dans cette situation est JS. Concernant la réflexivité, j'ai eu a coder a Epitech, un moteur ORM (a la main), et c'est pas evident. en JS tout est sous forme d'une table de hash et modifiable a souhait, un exemple concret de ce qu'on fait en JS avec node: J'ai un fichier conf.sql qui contient: Code :
en JS (avec node.JS), je fais. Code :
c'est le genre de trucs très facilement faisable en JS que je n'essaierais même pas de faire en java ou autre. Pour node JavaScript etait le meilleur choix, et chez Joyent ils s'y connaissent. Je ne dis pas que JS est le meilleur langage, (dart n'existait pas à l’époque), mais pour faire des serveurs qui font des opérations simples et communique avec une DB ==> node.js |
||||
|
|
43
|
|
|
#20 | |||||
|
Membre confirmé
![]() Inscription : avril 2005 Messages : 447 ![]() |
@camus
Citation:
Citation:
Citation:
il est tout à fait possible de faire du code d'une qualité douteuse avec Java et à l'inverse faire du code à peu prés propre avec du Javascript. Code :
La on va retrouver certains désagréments juste avec une ligne de code
Ce type de code n'a sa place que dans un prototype jetable. Pour rendre pérenne il faut que tu construise une classe "Config" qui soit prédictible pour garantir son exploitation dans une application. Sinon sur le long terme les 5 minutes gagner à ne pas consolider ce code deviendra des dizaines de jours/homme gâchés. Surtout on ne sait jamais combien de temps va être exploité notre code autant le faire bien à peu prés proprement du 1er coup sachant que ça ne coute pas grand chose. Ce type code je le rencontre souvent en PHP, Perl et Javascript. J'ai bossé sur le code de Mantis et Drupal et certaines parties en sont bourrés. Mais au fil du temps les partie de code plus récente s'améliore en qualité. Je prend l'exemple de la partie PHPUnit de Drupal qui est d'une qualité excellente. Ceci dit les défaut du JavaScript en remette pas en cause le travail excellent qui est fait autour avec JQuery ou dans Node.js. Pour info : J'ai codé un ORM avec PHP en m'inspirant d'Hibernate que j'avais trouvé excellent cela a été simple (Merci Zend Framework et l'XP). |
|||||
|
|
04
|
Copyright © 2000-2013 - www.developpez.com