Incorporada a tu pregunta hay otra: «¿por qué las empresas que usan Java lo hacen?»
Aquí tienes algunas razones:
- La máquina virtual Java y el runtime .Net son posiblemente los dos runtimes virtuales más avanzados que existen. En términos de características están más o menos a la par, sin embargo Java es más antiguo y mucho más prevalente en términos de despliegues existentes y por lo tanto tiende a ser utilizado más. La JVM también está disponible como una implementación libre de alta calidad y muchas empresas optan por utilizarla en combinación con otras plataformas libres como Linux, mientras que la principal forma de desplegar .Net es a través de Windows.
- Los tiempos de ejecución de lenguajes como Ruby y Python a menudo carecen de las características necesarias para lograr la escalabilidad vertical (por ejemplo
- Java sigue siendo el lenguaje más utilizado en las universidades y escuelas secundarias.
- Si bien lenguajes como C++ soportan multihilo real y una variedad de recolectores de basura, su portabilidad tiende a ser bastante baja. Incluso al compilar en, por ejemplo, Linux, se encontrarán con frecuencia problemas de enlace con binarios compilados hace 5-10 años. Este no es el caso de Java.
- Cuando se decide realmente que se quiere soporte comercial, también hay relativamente poco disponible para lenguajes como C++, Ruby y otros mencionados en comparación con el excelente soporte disponible para Java a través de numerosos proveedores.
- Java probablemente tiene el mayor ecosistema de soporte de instrumentación (herramientas como Java Management eXtensions o New Relic), así como bibliotecas mantenidas por la comunidad para cosas como la inversión de control, la generación de código, la programación orientada a aspectos, el mapeo relacional de objetos, etc., etc. (cosas como Spring, Guice, Guava, Apache Commons, la lista continúa…). Esta vergüenza de las riquezas proporciona la confianza de que uno puede fácilmente escoger y elegir las herramientas para adaptarse a los casos de uso de uno o la intención de la arquitectura sin tener que reinventar la rueda.
Dado todo eso ¿por qué las empresas eligen no-Java? Se me ocurren algunas razones:
- Ya han invertido mucho en una plataforma de lenguaje particular y realmente no pueden divorciarse de ella (Facebook y PHP son probablemente un ejemplo de esto)
- Java no es apropiado para una tarea particular. Por ejemplo, si quiero hacer Devops, es casi seguro que preferiré usar Python porque está en la instalación base de casi cualquier sistema operativo Unix y no tengo que lidiar con el arranque del intérprete cuando configuro servidores.
- Una empresa puede simplemente tener un líder importante que tiene una fuerte preferencia por un lenguaje en particular. Guido van Rossum en Google, por ejemplo, es el progenitor de Python -a pesar de que, por supuesto, Google adoptó Python antes de la contratación de Guido- está claro que Google ha decidido invertir en su liderazgo técnico quizás en gran medida por Python.
.