Embarquée dans votre question, il y en a une autre : " pourquoi les entreprises qui utilisent Java le font-elles ? "
Voici quelques raisons :
- La machine virtuelle Java et le runtime .Net sont sans doute les deux runtimes virtuels les plus avancés qui existent. En termes de fonctionnalités, ils sont plus ou moins à parité, cependant Java est plus ancien et beaucoup plus répandu en termes de déploiements existants et a donc tendance à être plus utilisé. La JVM est également facilement disponible en tant qu'implémentation libre de haute qualité et de nombreuses entreprises choisissent de l'utiliser en combinaison avec d'autres plateformes libres telles que Linux, alors que la principale façon dont vous pouvez déployer .Net est via Windows.
- Les moteurs d'exécution de langage comme Ruby et Python manquent souvent de fonctionnalités nécessaires pour atteindre l'évolutivité verticale (ex. garbage collection avancé ou vrai multithreading).
- Java est toujours le langage le plus répandu enseigné dans les universités et les lycées.
- Alors que des langages comme C++ supportent le vrai multithreading et une variété de garbage collectors, leur portabilité tend à être assez faible. Même en compilant sur, par exemple, Linux, vous trouverez fréquemment des problèmes de liaison avec des binaires compilés il y a 5-10 ans. Ce n'est pas le cas avec Java.
- Lorsque vous décidez effectivement de vouloir un support commercial, il y a aussi relativement peu de choses disponibles pour des langages tels que C++, Ruby et d'autres mentionnés par rapport à l'excellent support disponible pour Java à travers de nombreux fournisseurs.
- Java a probablement le plus grand écosystème de support d'instrumentation (des outils comme Java Management eXtensions ou New Relic) ainsi que des bibliothèques maintenues par la communauté pour des choses comme l'inversion de contrôle, la génération de code, la programmation orientée aspect, le mappage objet-relationnel, etc. etc. (des choses comme Spring, Guice, Guava, Apache Commons, la liste est longue...). Cet embarras de richesses donne l'assurance que l'on peut facilement choisir l'outillage qui convient à ses cas d'utilisation ou à son intention architecturale sans avoir à réinventer la roue.
Ayant donné tout cela, pourquoi les entreprises choisissent-elles de ne pas utiliser Java ? Quelques raisons me viennent à l'esprit :
- Elles ont déjà beaucoup investi dans une plateforme linguistique particulière et ne peuvent vraiment pas en divorcer (Facebook et PHP en sont probablement un exemple)
- Java n'est pas approprié pour une tâche particulière. Par exemple, si je veux faire du Devops, je vais presque certainement préférer utiliser Python parce qu'il est dans l'installation de base de presque tous les systèmes d'exploitation Unix et que je n'ai pas à m'occuper de l'amorçage de l'interpréteur lorsque je configure des serveurs.
- Une entreprise peut simplement avoir un leader majeur qui a une forte préférence pour un langage particulier. Guido van Rossum chez Google, par exemple, est le géniteur de Python - nonobstant le fait que, bien sûr, Google a adopté Python avant l'emploi de Guido - il est clair que Google a décidé d'investir dans son leadership technique peut-être en grande partie à cause de Python.