Archives de Tag: Node.JS

Java / Javascript / PHP / etc.

Au vu du nombre de langages disponibles dans le secteur des nouvelles technologies il devient de plus en plus difficile de choisir de s’investir sur un langage ou un autre. Je pratique le Java depuis maintenant 12 ans et il faut dire que ces dernières années l’informatique a changé à un point que je n’aurais pu imaginé 12 ans auparavant.

Le moteur de ces changements c’est le tout connecté donc Internet et les périphériques mobiles. Ainsi pour une entreprise moderne suivre ce mouvement impose d’avoir un système d’information (ou du moins une partie) pouvant suivre ces évolutions.

En clair pour créer un nouveau produit / une nouvelle prestation quelle technologie utiliser en 2014 ? Supposons qu’il faille partir de zéro, quoi choisir ? Il y a 12 ans s’il s’agit d’un site Internet cela aurait été du PHP avec du MySQL et un frontal Apache (souvenirs souvenirs). Dans un contexte d’entreprise avec plusieurs développeurs le Java était aussi un très bon choix, moins facile à aborder mais plus puissant.

Maintenant … je n’arriverais pas à choisir. Il s’agit parfois plus d’une question de philosophie et/ou de compétences que de pertinence. PHP ? OK mais par exemple avec le framework Symfony. Et encore je me porterais plutôt sur d’autres choix : soit Javascript (avec Node.JS) soit Java (avec Spring Boot). Le premier sera idéal pour démarrer ou avec des contraintes de charges mais le deuxième sera plus judicieux dans un contexte d’entreprise (attention c’est un choix strictement personnel, il existe tellement de langages / plateformes …).

L’évolution de l’informatique (et de ses services) s’accélère et c’est bigrement motivant. Mais aussi frustrant car il est plus en plus difficile de faire les bons choix.

Au final dois-je laisser tomber Java au profit de Javascript ? Non ! Mais apprendre les deux et concilier deux mondes différent oui !

Node.JS

Il y a maintenant deux mois que j’ai découvert Node.JS. Pour comprendre la bête j’ai migré une de mes applications personnelle de PHP vers Node.JS d’autant que cette dernière souffrait d’un manque de vitesse notoire.

Pour un développeur Java (et PHP) ne connaissant pas totalement le Javascript (sauf à travers de JQuery & co) ce fut assez épique mais au final cela en valait la peine. J’ai effectivement pu constater un gain de performances énorme.

Mais voilà … au delà d’avoir appris à faire du Javascript comme un ninja je me suis confronté à la barrière de la programmation « réactive » à savoir mono-thread mais basé sur des callback. Bref de la programme non-bloquante, asynchrone.

Cela fait plus de 25 ans (j’ai commencé tôt) que je développe de manière procédurale et synchrone ou, au mieux, en utilisant des Thread dans Java. Alors la programmation asynchrone …

En fait le plus déroutant c’est :

function readFile(callback) {
	fs.readFile('/etc/passwd', function (err, data) {
		callback(err, data);
		return data;
	});
	return 'Euh ?';
});

(code affreux, c’est pour l’exemple)

Dans l’exemple la fonction fera deux return ? C’est le premier qui gagne ? Et les données du fichier elles envoyées où ?

Je pense trop au callback comme un fork alors que, justement cela n’a rien à voir. Donc il va falloir que je trouve un article expliquant le mécanisme de programmation asynchrone coté machine.

En tout cas je n’ai aucun doute que ce style de programmation va devenir la norme coté Web car sinon impossible de pouvoir traiter des milliers (et bien plus) d’appels simultanés.

A ce sujet j’ai trouvé un tas de choses intéressantes du coté du blog d’Octo Technologie pour le tag reactive. Et d’ailleurs, en tant que développeur Java, j’ai notamment bien aimé l’article « Java 8 est réactif !« .