Réflexions à propos de NodeJS et de Javascript plus globalement
Billet posté sur linuxfr.org :
Bonjour,
Cela fait quelques jours que je me pose la question suivante : « Est-ce que Node.js ne va pas devenir une technologie incontournable / majeur dans les 2 ans qui viennent ? »
Le contexte
Je suis un développeur Python depuis de nombreuses années. J’aime ses librairies, j’aime ses outils, j’aime sa communauté.
J’aime tellement sa syntaxe que quand je vois la syntaxe d’autres langages, j’ai une réaction quelque peu épidermique à la lecture du code.
Avec le temps, l’habitude de la syntaxe Python minimaliste proche d’un pseudo code rend difficile la possibilité d’apprécier un autre langage. Je ne sais pas si c’est positif ou négatif, je me pose simplement la question. Enfin ceci est un autre sujet.Cependant, mon regard se tourne de plus en plus vers Node.js… je n’ai pas franchi le pas, je n’ai rien développé en Node.js… mais je me demande si je ne passe pas à côté de quelque chose d’important.
Les forces de Node.js
- Bien que Node.js date seulement de 2009 :
- Il a déjà un bon système de package : Node Package Manager que la grande majorité de la communauté semble utiliser
- Il a déjà une très forte communauté, de très nombreuses librairies, exemple : plein de librairies classées, déjà plus de 9000 packages sur npm
- De plus en plus de sociétés semblent l’utiliser
- Tous les développeurs web (front-end) connaissent le langage, il est très populaire. Par conséquent, pour passer à Node.js il n’y a pas le frein d’apprendre un nouveau langage comme ça serait le cas avec l’utilisation d’un framework web basé sur Ruby ou Python. Je pense que dans les mois qui viennent, de nombreux développeurs PHP vont passer à Node.js… surtout ceux qui regardaient ailleurs, mais qui ne souhaitent pas apprendre un nouveau langage.
- La possibilité de partager du code (librairies communes…) entre la partie client et serveur peut être intéressant. La question se pose de plus en plus étant donné qu’on est de plus en plus amené à effectuer beaucoup de traitements coté client (exemple avec Backbone.js).
Dernièrement, dans tous mes projets de développement web, j’ai utilisé un moteur de template côté client en plus du moteur de template côté serveur.
Je dois gérer de plus en plus souvent une couche modèle côté client. Des vues côté client… Cela fait donc plein d’éléments en doubles, utilisés une fois sur le serveur, une fois sur le client. Donc deux technologies à maîtriser.
Ces derniers jours, la visualisation du screencast du framework javascript Meteor m’a mis la puce à l’oreille.
Autre exemple, il est possible d’utiliser la même API Canvas côté client et côté serveur (avec node-canvas).- Node.js semble être très rapide, ça tient très bien la montée en charge.
- La vitesse de l’interpréteur Javascript est en constante progression V8 (JavaScript engine)
Faiblesses de Node.js
Je ne sais pas si mes remarques sont exactes, je n’ai aucune expérience en Node.js.
- Exemple dans la partie Bad Use Cases du guide Felix’s Node.js Convincing the boss guide il est indiqué que les frameworks Node.js sont moins matures que ce que l’on peut trouver en Ruby, Python et Php (bon pour ce dernier j’ai des doutes, je pense que la communauté Node.js est déjà plus mature, plus structurée que la communauté Php… enfin bon…).
- Je ne pense pas que Sequelize soit aussi mature que SQLAlchemy
- Je n’ai pas trouvé d’outil comme Whoosh en Javascript (c’est un moteur de recherche léger). J’ai tout de même trouvé Node-xapian
Je ne sais pas s’il est encore tôt pour passer à Node.js mais si la communauté continue à être aussi dynamique que ces 2 dernières années… alors les pièces manquantes seront bientôt créées.
Est-ce que l’on va retrouver Javascript partout ?
Voici une petite liste :
- Javascript dans les navigateurs web
- Javascript coté serveur (Node.js)
- Javascript dans Qt Introduction QML + Qt Quick qui semble vraiment super puissant
- Les possibilités d’utiliser Gtk + JS : gjs and Gtk+
- Gnome Shell est en grande partie développé en Javascript. Ses extensions sont entièrement développé en JS
- Sur mobile WebOS et Boot to Gecko
Quand je vois cette liste, je me pose sérieusement la question : est-ce que Javascript est le langage incontournable de ces 10 prochaines années ? Certes, il est déjà incontournable dans le navigateur, mais pour le reste ?