¿Qué hace que Java sea más adecuado para escribir aplicaciones grandes que Python o Ruby?

Python es un lenguaje interpretado, o lenguaje de secuencias de comandos, que es excelente para hacer que algo funcione rápidamente, ya que no tiene la fase de compilación en el camino. Sin embargo, esto también significa que las instrucciones deben leerse e interpretarse para llamar a las partes apropiadas del lenguaje python, lo que hace que la ejecución sea más lenta.

Es posible utilizar lenguajes como Python y Ruby para aplicaciones de escala empresarial, pero debe tener cuidado de cómo escalar. Para asegurarse de que puede escalar de manera efectiva, debe asegurarse de que cualquier trabajo en la Web sea inherentemente RESTful ya que la administración de la memoria no se puede ajustar de manera tan completa en Python.

Entonces, ¿por qué usar Java? Esencialmente, debido a que se ha convertido en el estándar de facto para el desarrollo empresarial, por lo que está bien respaldado, tiene una gran comunidad de desarrolladores y compañías detrás, y se mantiene cuidadosamente a través de un grupo de trabajo de líderes industriales para garantizar la estabilidad a largo plazo antes de Nuevas características interesantes.

La verdadera fuerza proviene de la JVM. Este es un código intermedio llamado código de byte que Java semi-compila para que pueda usarse en todas las plataformas sin proporcionar el código fuente. Esto significa que las empresas tienen la flexibilidad de cambiar la arquitectura de hardware / sistema operativo sin tener que recodificar o recompilar. Además, significa que puede compilar diferentes idiomas de origen hasta el código de bytes o incluso una combinación de idiomas en la misma aplicación, por ejemplo, puede usar Jython en lugar de Java (o Python) y aún así producir algo utilizable desde Java. Otros idiomas de JVM han reunido mucho respaldo y también tienen comunidades fuertes como Scala y Groovy, entre muchos otros.

Además, Java tiene un rico conjunto de soluciones de almacenamiento en caché para ayudar a la escalabilidad, especialmente si no desea seguir la ruta RESTful, y un estándar definido para servir aplicaciones web que ha evolucionado durante más de 15 años.

Aprender Java también le da una ventaja inicial cuando aprende idiomas como JavaScript y C / C # para que pueda aprovechar su aprendizaje. Las plataformas como Spring e Hibernate comenzaron su vida en Java, por lo que es mucho más fácil comenzar con el modelo de desarrollo de Inyección de dependencias y el desarrollo de datos de estilo ORM, aunque no sin sus dolores de cabeza.

La herramienta también es excelente: los IDE como Eclipse tienen muchos complementos para todo tipo de trabajos. La depuración remota es muy fácil.

Hay un amplio conjunto de bibliotecas y herramientas de la fundación Apache, entre otras, para que pueda aprovechar el trabajo duro de los demás.

Finalmente, Java se usa para el desarrollo de Android, por lo que también le brinda una ruta hacia el desarrollo móvil que se está volviendo cada vez más importante en el comercio electrónico y las soluciones empresariales remotas.

Todo esto hace que Java adopte un riesgo mucho menor para las empresas, y está tan bien probado y entendido arquitectónicamente que se ha convertido en una opción predeterminada para la mayoría de las empresas que desean equilibrar la innovación tecnológica con la Mitigación de riesgos.

Espero que ayude.

No estoy convencido de que la premisa de esta pregunta sea válida. ¿Es Java realmente más adecuado que Python o Ruby? ¿Go (idioma) sería más o menos adecuado que cualquiera de estos?

En el mejor de los casos, creo que podríamos decir que Java se percibe como más adecuado, y que muchos gerentes y directores de empresas que aprueban los presupuestos y el personal para grandes aplicaciones consideran que Java es una opción más segura que Python, Ruby, Go o varios otros. (Esto puede ser, en gran parte, porque hay muchos programadores capacitados en codificación Java. Muchos de ellos no son particularmente talentosos … pero gran parte del trabajo necesario para aplicaciones grandes requiere un trabajo extenso en código poco sofisticado; el volumen puede ser más valorado que talento para grandes porciones de una aplicación grande).

Ni siquiera está cerca, en mi opinión. Java es mucho más adecuado, independientemente del hecho de que hay un grupo más grande de programadores de Java competentes (ventaja de Java) e independientemente de las diferencias de rendimiento en tiempo de ejecución (nuevamente, ventaja de Java).

Grandes aplicaciones significan muchos programadores y mucha interacción entre diferentes componentes. Esto significa que las interfaces bien documentadas, las clases bien documentadas, las características IDE que mejoran la productividad y la detección de errores en tiempo de compilación son extremadamente importantes. El ecosistema de Python es débil en todas estas áreas en comparación con Java. ¿Por qué? En gran parte debido a la tipificación dinámica. No digo que la escritura estática sea siempre superior, pero en sistemas grandes y complejos es innegablemente superior, en mi opinión.

Dicho esto, es más divertido programar en Python.

Toco las razones por las cuales alguien debería aprender un lenguaje tipeado estático primero en esta publicación: Un argumento para aprender un lenguaje tipeado estático primero por Eric Wise en las publicaciones

Las aplicaciones muy grandes requieren un nivel completamente diferente de comunicación, documentación y cuidado. Los lenguajes de tipo dinámico no son inherentemente claros sobre qué propiedades, métodos, etc. existen en cualquier objeto en un momento dado sin mucha investigación. Por lo tanto, cuanto más grande sea el proyecto, más programadores van y vienen, más tiempo se tarda en modificar el código existente porque tienes que investigar mucho antes de hacer un cambio.

La mayoría de las aplicaciones de lenguaje dinámico más grandes que he visto tienden a comenzar rápidamente y luego se degradan en mantenibilidad con el tiempo. Esto también ocurre en lenguajes tipados estáticos con un diseño deficiente, pero es mucho más lento y es mucho más fácil de solucionar mediante refactorización. Es muy bueno poder “romper” un método refactorizando a diferentes tipos e inmediatamente ver todos los lugares en la base de código que necesita para hacer cambios.

Dicho todo esto, analizadores, trabajos de secuencias de comandos, etc … dame Python cualquier día de la semana.

Está haciendo una suposición falsa, en general no es el caso de que Java sea superior para aplicaciones a gran escala. Tiende a ser específico de la aplicación. Sin embargo, debe adoptar un enfoque diferente con Python que con Java. La falta de mecanografía estática requiere una mayor cobertura de prueba. Por lo tanto, no puede salirse con la suya al no escribir sus pruebas unitarias. Es posible que tenga que usar la verificación de tipos para ciertas funciones, y puede que tenga que escribir bibliotecas o algunas funciones en un idioma diferente para las áreas críticas de rendimiento.

Vea esta charla sobre proyectos de desarrollo a gran escala con python

Página en egenix.com

Al comparar el último Java 8 con Python y Ruby, lo siguiente hace que Java sea una mejor opción para mí (no una lista completa):

  • tipificación estática y genéricos: características que hacen posible una refactorización segura
  • entornos de desarrollo de alta calidad (IntelliJ es mi favorito)
  • embalaje y gestión de dependencias
  • rico ecosistema de bibliotecas de alta calidad respaldadas por grandes empresas
  • Máquina virtual de alta calidad: probada para trabajar en entornos exigentes

Muchos proyectos grandes usan python, incluidos, entre otros, DropBox / YouTube / Reddit / grandes porciones de Eve Online

cada idioma tiene su lugar y su clave para reconocer cuándo debe usar uno sobre el otro y cuándo una elección entre ellos se reduce a una preferencia aproximada del usuario

Java está estáticamente escrito.

Vea la primera parte de lo que escribí aquí: la respuesta del usuario de Quora a ¿Dónde está la productividad en los idiomas escritos dinámicamente?

Es más fácil contratar un equipo de programadores experimentados (no igual a buenos).

TLDR; No lo es, pero nadie fue despedido por elegir Java.

Java es adecuado para escribir grandes aplicaciones.
– La programación orientada a objetos es importante.
– Se desarrollan muchos frameworks para Java (Spring, Hibernate)

More Interesting

En equipos de desarrollo ágiles, ¿cómo se manejan los errores que se encuentran en la mitad del sprint para ese sprint?

¿MIT es bueno para futuros desarrolladores de software, específicamente front-end?

¿Cómo entrar en el desarrollo de software de las pruebas? ¿Puede sugerir qué habilidades se necesitan en función de la tendencia actual en la industria de TI?

¿Cuál es la mejor manera de autodidacta las habilidades y el conocimiento adquiridos en un título de informática típico, suponiendo que una persona solo tenga un conocimiento funcional de las computadoras?

En seguridad informática, ¿qué es un sandbox?

¿Cómo se crean las historias de usuario como siempre independientes?

¿Cuál es el sueldo de un ingeniero de front-end senior en Nueva York?

¿Cuál es el proceso creativo / desarrollo de Markus "Notch" Persson?

¿Qué tan lejos llegaste con la automatización de compilación y las pruebas unitarias?

¿Existe un rol de control de calidad que no implique escribir casos de prueba? ¿Hay roles de trabajo que estén más en el lado de coordinación / gestión?

¿Cómo se calcula el 'tiempo medio entre fallas' (MTBF) para el software de la computadora?

¿Qué le gusta del rol de Ingeniería de Producto en Quora?

¿Qué esperan los ingenieros de software de un increíble gerente de producto (en tecnología)?

Pruebas de software: ¿cómo se mide la efectividad de una prueba? ¿Y cómo se compara eso con su costo?

Quiero ser diseñador para startups: ¿qué herramienta de software debo aprender a usar?