Node, Go, Java, C# ou Elixir?

Vous voulez réaliser une application Web et vous vous demandez quelle plateforme convient le mieux si elle doit avoir un jour un grand nombre d'utilisateurs...

On voit souvent paraître le billet d'un développeur expliquant pourquoi il abandonné le langage X et réécrit son application web en langage Y. Pour un autre, c'est l'inverse, il réécrit son application de Y en X. Cela arrive rarement pour des applications locales ou sur mobiles. Le choix du langage de développement est plus crucial sur le Web, c'est pourquoi il m'a paru utile de réaliser cette étude sur les différentes plateformes en vogue, avec les avantages et inconvénients de chacune, et pour quel type d'application elles conviennent le mieux. Cela devrait aider à éviter une réécriture du code après quelques mois de développement...

Node.js logo

Node

L'environnement de Node profite de la notabilité du langage JavaScript et de la vitesse de l'interpréteur V8 de Google. Il est rapidement devenu très populaire et est un des environnement qui à généré le plus de projets open source. Il est aussi très controversé ce qui vient surtout du fait qu'on ne l'emploie pas toujours à bon escient.

Pour quel type d'application?

Avantages

Inconvénients

Quels sites connus utilisent Node.js?

Langage Go, logo

Go

Langage compilé en binaire et utilisant un garbage collector. Soutenu par Google qui l'a créé pour son propre site, il tend à remplacer Python avec une vitesse d'exécution très supérieure, et une syntaxe qui reste simple même si elle est moins naturelle. Il a originellement été imaginé pour Plan 9, un vieux projet de système d'exploitation, par des anciens d'Unix et C, ce qui explique sa syntaxe antique. Sa philosophie de "Faire le moins, permettre le plus", conduit à un langage limité avec des fonctionnalités puissantes comme les coroutines.

Pour quel type d'application?

Avantages

Inconvénients

Quels sites connus l'utilisent?

Logo de Java

Scala/Java

Scala fonctionne sur la machine virtuelle Java et permet de réduire le code, accélérer sa production. Il partage l'API Java, on peut donc au choix programmer en Scala ou Java et inclure des modules écrits dans l'un ou l'autre langage.

Pour quel type d'application?

Avantages

Inconvénients

Quels sites connus l'utilisent?

Logo de Erlang

Elixir/Erlang

Erlang a été conçu par Ericsson spécifiquement pour programmer le backend de grands sites Web. Il est en usage et développé depuis des décennies pendant lesquelles il s'est enrichi de toutes les techniques dans ce domaine. Il utilise la machine virtuelle BEAM dont on pense qu'elle est moins complète que la JVM, mais plus efficace dans son domaine propre.
Elixir est un langage conçu pour remplacer Erlang sur la même machine virtuelle, avec une syntaxe plus lisible inspirée de celle de Ruby.

Pour quel type d'application?

Avantages

Inconvénients

Quels sites connus l'utilisent?

C# / .NET Core

CSharp logo

De récents benchmarks on montré une amélioration de vitesse de vingt fois par rapport à ASP.NET 4.6, ce qui fait de cette nouvelle version open source et multi-plateformes un autre candidat intéressant dans cette liste. En fait un backend .NET Core est quelque fois la solution la plus rapide, cela dépend de l'application.
C# peut être interprété ou compilé en binaire, et .NET supporte de nombreux langages donc la plateforme cumule les avantages de Java et de Go.

Pour quel type d'application?

Avantages

Inconvénients

Quels sites connus l'utilisent?

PHP CSharp logo

La version 8 apporte un gain en performances important avec le compilateur JIT (Just In Time). Il reste cependant le langage le moins intéressant sauf si on veut disposer de la bibliothèque la plus large possible. Un équivalent à Ruby on Rails existe avec le framework Laravel.

Pour quel type d'application?

Avantages

Inconvénients

Quels sites connus l'utilisent?

Conclusion

Vous pouvez constater que les plus grands sites peuvent utiliser une des cinq solutions sans problème apparemment. Quelque fois ils abandonnent une plateforme au profit d'une autre et ce n'est pas toujours en faveur de la même. Cela montre que la meilleure plateforme dépend surtout de l'application que l'on veut réaliser.

Note: Ruby On Rails est décrit dans la page sur le langage Ruby. Il existe encore d'autres plateformes que je n'ai pas citées à cause de leurs inconvients (évolutivité, lenteur, difficulté à déboguer, insécurité.