¿Qué problema resuelve Java bien que otros lenguajes no?

1) Sistema ecológico muy fuerte y proyectos de código abierto. Esto le permite resolver muchos problemas con poco esfuerzo.

2) La escritura estática facilita la modificación / refactorización. Muy importante en el desarrollo rápido (no es 100% a prueba de balas, sin embargo, reduce en gran medida el riesgo)

3) Maduro: el problema en los nuevos marcos / idiomas no está en las necesidades básicas. El problema comienza cuando necesitas algo un poco diferente de la forma estándar. Un entorno inmaduro hará que invierta un gran esfuerzo para la personalización, si es posible.

Yo rechazaría la potabilidad como argumento. Es cierto que los estándares de Java le permitirán elegir una solución entre muchos módulos potenciales e incluso cambiarlos en el futuro, sin embargo, en la práctica rara vez sucede, ya que siempre hay algún código personalizado para una plataforma / módulo específico y el movimiento es demasiado difícil a menos que exista es una razón REALMENTE buena para eso (por lo general, uno preferirá escribir un código más personalizado para resolver cualquier problema).

También votaría por el argumento de estandarización como habilitador de portabilidad. Fue un muy buen argumento cuando surgió Java / JEE. En los primeros días de Java, el estándar impulsó la industria, ahora parece que los marcos principales dictan el estándar que es difícil seguir la velocidad del desarrollo. Además, como se escribió anteriormente, uno rara vez cambiará el marco ya que implica un gran esfuerzo.

Muchos lenguajes no son tan maduros como Java. Java obtiene al menos 4 grandes victorias de su madurez:

  • Muchas herramientas Java tiene varios IDE excelentes para elegir (uso Eclipse). Tiene varios grandes perfiladores para elegir (uso YourKit). Tiene varios sistemas de compilación geniales (uso Gradle). También tiene herramientas de análisis de código fuente (yo uso Sonar).
  • Muchas bibliotecas. Los desarrolladores de Java con frecuencia pueden reducir drásticamente el tiempo de desarrollo utilizando bibliotecas fácilmente disponibles. ¿Quieres enviar correos electrónicos? Java lo tiene. Si desea codificar datos para enviar a través de un cable, puede usar RMI, JSON, XML, Protocol Buffers. ¿Quieres crear un servicio web? Hay Camel, Spring, Serverfaces. ¿Quieres escribir menos código? Mira Google Guava, Lombok o muchos otros.
  • Muchos desarrolladores. Esto no es inherente al lenguaje, pero hay muchos desarrolladores de Java. Algunos son geniales y otros no. Una compañía que decide usar Java tendrá una fuente de desarrolladores pre-entrenados por muchos años. (Tenga en cuenta que los mejores desarrolladores pueden cambiar los idiomas, por lo que este beneficio solo llegará hasta cierto punto).
  • Las API estándar son estables. La plataforma Java está evolucionando muy lentamente, y cada paso está cuidadosamente diseñado para ser compatible con versiones anteriores y seguro de adoptar. Es cierto que esto es difícil y no siempre funciona, pero esta es una gran victoria en comparación con algunos idiomas relativamente jóvenes que producen cambios importantes con cada nueva versión.
  • El lenguaje está creciendo. Si bien esto no está sucediendo rápido, todavía está sucediendo. Algunos lenguajes no están en desarrollo activo, lo que significa que a medida que las nuevas ideas se adaptan ampliamente, sus desarrolladores no las entienden. Java 8 viene con algunas características ‘funcionales’ increíbles que no puedo esperar para usar. Vea ¿Cuáles son sus herramientas / trucos favoritos para reducir el código repetitivo?

He trabajado con Java durante mucho tiempo y todavía estoy buscando nuevas bibliotecas y herramientas para mantenerme entusiasmado y hacerme más efectivo. No todos los idiomas pueden proporcionar esa experiencia.

Estandarización. Estandarización. Estandarización.

¿Necesita escribir una aplicación web / empresarial? ¡No hay problema! Con un proyecto de tamaño razonable y un código cuidadosamente escrito, puede implementar su aplicación en JBoss, GlassFish, Tomcat o cualquier otro contenedor sin modificar su código.

¿Necesitas hacer persistencia de datos? ¡No hay problema! Puede usar JPA y cambiar entre diferentes implementaciones de JPA sin modificar su código.
Acércate y puedes enviar consultas a diferentes bases de datos sin modificar tu código (gracias a los controladores JDBC y JPQL).

¿Necesitas hacer criptografía? ¡No hay problema! Puede cambiar entre diferentes proveedores del servicio sin modificar su código.

¿Necesitas jugar con XML? ¡No hay problema! Puede cambiar entre diferentes implementaciones de JAXB sin modificar su código.

Necesitas jugar con cosas de bajo nivel, JNA te permite hacerlo de manera unificada.

¡Hay varias otras cosas estandarizadas en el ecosistema de Java, gracias al JCP!

– Es más fácil de entender para un recién llegado que la mayoría de los programas lineales (hecho comprobado de que los objetos son más fáciles de jugar que las divisiones en COBOL o las columnas en RPG, etc.)
– Es fácil de adaptar para personas procedentes de C (tipos simples, método principal, constructores, …)
– Es fácil trabajar con él gracias a su verbosidad criticada, todo el mundo contribuye con bibliotecas, mientras que no muchos fanáticos de punteros proporcionan bibliotecas para C o C ++
– Intercambio de estandarización e implementación (que C ++ intenta alcanzar aún en 2014 después de 20 años de trabajo)
– Eficiente con el recurso más importante y costoso: recursos humanos, desarrolladores. Puedo dar conferencias a los chicos en 20 horas y ponerlos a desarrollar … no podría hacer eso con C.

En primer lugar, está el problema de múltiples plataformas que Java lo ha resuelto con la JVM (máquina virtual Java).
Podría desarrollar un código fuente para Windows y Linux y no necesita saber la diferencia desde la línea de comandos hasta la interfaz de usuario.

Al ser un verdadero lenguaje de propósito general (y para usted, los punteros de los fanáticos de C solo son * NECESARIOS * cuando hace referencia a un búfer de hardware específico o algo en ese nivel pero siempre tiene una dirección RAM estática) y, sin embargo, es el lenguaje de elección de Algol como el preferido para la mayoría ejemplos y textos de informática.

More Interesting

¿Qué herramientas se pueden usar para construir la documentación del usuario final de manera eficiente?

¿Por qué las compañías de software tienden a tener grandes equipos dedicados de control de calidad, pero la mayoría de las compañías de Internet tienen pequeños?

¿Qué es el ciclo de vida del desarrollo de software?

¿Puedo cambiar a su dominio después de tener 1 año de experiencia en el dominio de telecomunicaciones?

Si tuviera que abandonar una de estas tres asignaturas optativas de Informática, ¿cuál abandonaría y por qué?

¿Estoy cometiendo un error al no informar a ninguno de mis profesores de CS sobre mi próxima muestra de codificación de Google (prueba en línea)?

¿Cuál es la mejor manera de documentar las discusiones técnicas y el diseño en el desarrollo ágil?

¿Cómo uno o un equipo cumplen con éxito los compromisos / pronósticos de Scrum mientras producen código de calidad?

¿Cuáles son algunos de los mejores softwares / sitios sin los que no puedes trabajar?

¿Qué compañías en Silicon Valley tienen la reputación de tener los "peores" ingenieros?

¿Qué trabajo es más satisfactorio: Patwari a 18,000 / trabajo de software a 80,000?

¿Qué programas de software debe conocer un ingeniero químico?

¿Cuáles son las cosas que un ingeniero informático debería aprender en sus 4 años?

¿Por qué una maestría en ciencias de la computación / matemática aplicada querría ingresar a la inteligencia empresarial en lugar de la ingeniería de software?

¿Tendría sentido nunca instalar ningún software que no sea de stock y también evitar Java y JavaScript tanto como sea posible para mejorar la seguridad informática?