¿Su empresa está pensando en pasar de Java a otra tecnología? [cerrado]

9

Como todos los desarrolladores de Java saben, Oracle compró Sun y el futuro de Java parece bastante poco claro, especialmente porque Oracle quiere monetizar la JVM. Java como lenguaje también ha sido obsoleto en los últimos años, la no inclusión de cierres es un ejemplo (que podría incluirse en Java 1.8) Al mismo tiempo, se están utilizando algunas nuevas tecnologías como Ruby, Scala y Groovy para entregar sitios complejos.

Me pregunto si hay empresas u organizaciones que están hablando, haciendo picos o comenzando a usar una tecnología diferente, con la idea de dejar de usar Java para proyectos de campo verde, de la misma manera que hace 15 años las empresas migraron de C ++, perl y otras tecnologías a Java. También me interesa saber cuáles son las impresiones de esto, por ejemplo: planear migrar a una tecnología diferente en 2 años.

Para ser claros, no estoy preguntando qué tecnología es mejor. Le pregunto si su organización está pensando en dejar Java para otra tecnología.

Augusto
fuente
1
¿Groovy y Scala no dependen de la JVM? Si es así, también les preocupa que Oracle quiera monetizar la JVM.
POSIX_ME_HARDER
Tienes razón. Eso tendrá un impacto en la adopción de Scala, Groovy o JRUby en compañías que desean el jvm comercial en lugar del jvm abierto. Voy a dejar la pregunta original intacto, ya que creo que algunas empresas podrían estar dispuestos a pagar por la JVM comercial con el fin de utilizar un idioma diferente
Augusto
Como desarrollador de Java, estoy en desacuerdo con su declaración "como todos los desarrolladores de Java saben". Creo que el futuro de Java es a) claro yb) brillante. Estoy seguro de que algunas personas pueden querer pagar más por el paquete de soporte "premium" de Oracles, pero para aquellos de nosotros que solo planeamos apegarnos a la versión gratuita de código abierto de Java (¡que no va a desaparecer!), Entonces es algo irrelevante
mikera
Mikera, usted menciona el código abierto, pero algunos de los desarrolladores influyentes de Java que solían liderar proyectos de código abierto, ahora lideran proyectos en otros idiomas, por lo que su "energía" se desvía de Java. Verifique todos los marcos asombrosos que existen para Scala, Groovy o Ruby. No tengo números para respaldar esto, pero podría ser interesante comprobar cuántas "líneas de código" se han comprometido con repositorios de código abierto en los diferentes idiomas y tendencias.
Augusto

Respuestas:

9

Para nada, de hecho, estoy invirtiendo mucho en Java como plataforma en mi empresa (una startup que desarrolla aplicaciones y herramientas SaaS para la minería de datos).

Aquí están las razones:

  • Elegir Java como plataforma no significa que deba usar Java como lenguaje. Usamos Clojure como el lenguaje principal de desarrollo de aplicaciones, ocasionalmente cayendo en Java donde sea necesario. Pero otros lenguajes JVM como Scala y Groovy también son geniales.

  • Personalmente no estoy preocupado por Oracle . La implementación principal de Java seguramente seguirá siendo de código abierto ( OpenJDK ) y estará disponible de forma gratuita. Si Oracle hizo algo estúpido, entonces otras grandes compañías (creo que IBM y Google en particular) han invertido demasiado en Java para dejar que se salga con la suya, y podrían continuar desarrollando Java sin la ayuda de Oracle.

  • La JVM es un excelente entorno de ejecución . Multiplataforma, muy alto rendimiento, tecnología JIT de optimización extremadamente buena. Está lo suficientemente cerca de la velocidad nativa que no me importa la cantidad fraccional que es más lenta que C / C ++, y esta sobrecarga está más que compensada por la recolección de basura adecuada y un entorno de ejecución de código de bytes administrado, etc.

  • Java tiene un gran ecosistema de bibliotecas de código abierto . De hecho, diría que es el mejor ecosistema en general de cualquier idioma. Esto significa que la mayor parte del "trabajo pesado" en términos de infraestructura ya se ha realizado, con una calidad extremadamente alta. Y el hecho de que la mayoría de las cosas que necesita son de código abierto significa que no tiene el costo (tanto en términos de dinero como de tiempo de administración) para obtener licencias.

  • Eclipse es un gran IDE y proporciona una cadena de herramientas fantástica para el desarrollo de aplicaciones empresariales robustas. Utilizamos la integración de Maven, JUnit, Git / SVN y una serie de otras herramientas que están disponibles como complementos de Eclipse. Todo "simplemente funciona".

Finalmente, ¿cuáles son las otras opciones?

  • .NET es la única plataforma con capacidades comparables y personalmente me gusta C #, pero te encierra en tecnologías de Microsoft (peor que Oracle / IBM IMHO) y no tiene la misma amplitud de ecosistema de código abierto. Está bien para las tiendas de Microsoft, pero no si quieres controlar tu propio destino tecnológico. Y sí, Mono es lindo, pero no puedo permitirme apostar mi negocio en una plataforma que puede o no mantener un nivel de compatibilidad de trabajo con la corriente principal de .NET.

  • Luego están todos los otros lenguajes geniales que son muy buenos en lo que hacen (por ejemplo, Ruby, Python, PHP, Javascript) pero que no ofrecen un equivalente convincente e integral a la plataforma Java. El riesgo es que tienes que empezar a pegar muchas cosas en una arquitectura un poco menos que hermosa. No es un problema para crear sitios web, aplicaciones rápidas y sucias, pero menos atractivo para el desarrollo de productos a largo plazo.

  • C / C ++ es excelente para la programación de sistemas y juegos, pero es demasiado complejo / costoso / inflexible para el desarrollo moderno de aplicaciones web.

  • Y luego están los hermosos idiomas que amo como Haskell, que son fantásticos desde una perspectiva académica pero que simplemente no tienen la adopción / ecosistema de la industria necesarios para convertirlos en una opción de plataforma creíble. También puedo obtener la mayoría de los beneficios de la programación funcional moderna ejecutando Clojure en la JVM .....

Entonces sí, es una decisión compleja. Pero tomé la decisión de Java sobre todas las demás opciones después de mucha investigación y consideración considerable. Todavía tomaría la misma decisión hoy.

ACTUALIZAR

Algunas palabras sobre la elección de Clojure en la JVM como opción de idioma. Las principales motivaciones para esto fueron:

  • Concurrencia: Clojure tiene una historia de concurrencia única, trabaja bien viendo este video que describe algunos de los conceptos centrales. Puede escalar de manera confiable a arquitecturas multinúcleo masivas mediante el uso de la memoria transaccional de software . Y se las arregla para hacer esto sin demasiados gastos generales (¡sin bloqueo!), Que es una hazaña notable de ingeniería.
  • Programación funcional: Clojure es un lenguaje funcional que enfatiza la inmutabilidad y las funciones de orden superior. No es tan puramente funcional como Haskell, pero es ante todo un lenguaje FP. Algunas personas dicen que esto te ayuda a escribir mejores programas.
  • Productividad del programador: Clojure obtiene todos los beneficios de productividad de la filosofía de código de datos de Lisp. En la práctica, esto significa capacidades macro increíblemente potentes y una sintaxis simple pero extremadamente flexible que puede usar para definir sus propias DSL para cualquier problema con el que esté lidiando.
  • Necesidad de un lenguaje dinámico adecuado para un rápido desarrollo y scripting: Clojure se puede usar en un ciclo estándar de construcción-prueba-implementación, pero en realidad es más natural usar un REPL para desarrollar de forma interactiva, modificando el entorno del código en ejecución a medida que avanza. Por ejemplo, uso Incanter para poder trazar gráficos y visualizar datos sobre la marcha mientras me desarrollo para ver los resultados de las ejecuciones por lotes.
  • Interoperabilidad Java: la interoperabilidad Java de Clojure es muy efectiva. Los objetos Clojure son objetos Java y viceversa, por lo que es trivial llamar a las API y bibliotecas Java siempre que las necesite. Esto le brinda todos los beneficios de todo el ecosistema Java de bibliotecas y herramientas.
  • Buena comunidad: la comunidad de Clojure es pequeña pero dinámica, amigable y crece rápidamente. Ya hay muchos proyectos geniales de código abierto, como Incanter (computación estadística) o Ring / Compojure (marco de servidor web) o en sentido antihorario (complemento Eclipse IDE)
mikera
fuente
Mikera, esto es exactamente lo que estaba preguntando. Su empresa está dejando Java como el idioma principal para el desarrollo de aplicaciones y está utilizando Clojure en su lugar. Estoy de acuerdo con usted en que la JVM no desaparecerá, especialmente con algunas compañías que invierten en otros idiomas que se ejecutan sobre la JVM. ¿Podría compartir un poco más sobre lo que estaba detrás de la decisión de usar clojure como el lenguaje de desarrollo principal?
Augusto
Claro, he agregado algunos comentarios sobre por qué Clojure en particular (también consideré a Scala, que también era muy prometedor, pero Clojure ganó por un estrecho margen debido a su Lisp-ness)
mikera
¡Gracias por la explicación sobre por qué su empresa decidió utilizar clojure!
Augusto
7

Todo depende del cliente.

Java siempre tendrá su propio nicho en el que las personas van a gravitar por una u otra razón, por las mismas razones por las que las personas gravitan a .php o .net, pero en última instancia, depende de los requisitos y preferencias del cliente.

Si un cliente dice ... Quiero que esta aplicación esté en Java ... ¿vamos a decir que no? probablemente no ... si dicen que realmente no nos importa ... ¿lo vamos a escribir en java? probablemente no, pero eso es solo especulación.

Tenemos aplicaciones escritas en Java que tienen una larga historia, pero parece que el cliente está reemplazando meticulosamente TODO con la marca Windows ... Oracle para SQL Server ... Unix / Linux con el servidor 2008 ... y PHP y Java con .net.

Si eso sucede, entonces sí ... a menos que un nuevo cliente entre y diga hola ... queremos que esto esté escrito en Java ... usaremos .net.


fuente
Un gran minorista de automóviles de EE. UU. Está haciendo algo similar: está comenzando a construir la mayoría de los proyectos nuevos en ruby ​​en lugar de en Java.
Augusto
1

Primero una premisa, no trabajo en una empresa de software.

Ok, usamos Oracle como nuestra base de datos principal con toda nuestra información importante almacenada en ella. Debido a esto, planeamos continuar usando Java para cualquier cosa que tenga que ver con Oracle. La adquisición de Sun por parte de Oracle es un impulso para que continuemos usando Java para todo lo relacionado con Oracle.

Pero, cualquier aplicación de escritorio está escrita en C # ya que todo está basado en Windows.

sange
fuente
0

¿Su empresa está pensando en pasar de Java a otra tecnología?

Para contestar tu pregunta. No.

Como todo desarrollador de Java sabe ...

En las empresas de cualquier tamaño significativo, generalmente no son los desarrolladores quienes deciden cuestiones como si la empresa debería alejarse de Java hacia otra cosa. Y para los tipos que toman estas decisiones, son importantes otros factores además de los que usted enumeró.

... el futuro de Java parece bastante confuso, especialmente porque Oracle quiere monetizar la JVM.

Por el contrario, creo que el futuro está claro. La evolución de Java continuará a un ritmo lento pero constante, y las tecnologías centrales SE y EE continuarán siendo gratuitas. Para mí, la única área real de incertidumbre es lo que sucederá con el enfrentamiento entre Oracle y Google. Pero de una forma u otra, espero que Android / Davlik prospere como una alternativa a Java ME ... pero solo para plataformas móviles.

Java como lenguaje también ha sido obsoleto en los últimos años, la no inclusión de cierres es un ejemplo (que podría incluirse en Java 1.8).

Esto puede irritar a los desarrolladores, pero el "estancamiento" es en realidad una consecuencia de que Sun / Oracle preste atención a lo que la empresa quiere ... un lenguaje / plataforma con estabilidad a largo plazo.

Al mismo tiempo, algunas nuevas tecnologías como Ruby, Scala y Groovy se están utilizando para ofrecer sitios complejos.

Una vez más, desde la perspectiva de la administración, el jurado está decidiendo si estas tecnologías son mejores en todos los ámbitos.

  • ¿Los aumentos de productividad declarados son realmente demostrables a largo plazo?
  • ¿Ya está allí la actuación? Escalabilidad? ¿Herramientas y bibliotecas de terceros?
  • ¿Pueden reclutar personal experimentado?

Una decisión a nivel de la empresa de cambiar a un nuevo idioma tiene costos y riesgos significativos, especialmente si hay una cantidad significativa de código existente en el lenguaje "heredado".

Stephen C
fuente
@Augusto: he respondido tu pregunta; Ver primera oración. ¿Eres feliz ahora?
Stephen C