Ver Mensaje Individual
  #2 (permalink)  
Antiguo 11/09/2015, 22:17
agleiva
(Desactivado)
 
Fecha de Ingreso: enero-2015
Mensajes: 393
Antigüedad: 7 años, 5 meses
Puntos: 52
Respuesta: ¿Que estudiar ahora?

Como dicen por ahí: "java paga más". Si tu motivación principal es el dinero quedate con java.

Y hay una justa razón para esto: si no pagara más nadie estaría dispuesto a usarlo.

Hace un tiempo le pregunté a un referente en el mundo de java, muy conocido, por qué seguía usando ese lenguaje a pesar de que él mismo reconocía que es un lenguaje tedioso, aburrido, tortuoso para trabajar, que no ha evolucionado significativamente desde hace años (al menos no comparado con otros lenguajes)... Su única respuesta fue "Porque gano mucho dinero".... Esto nos habla a las claras de cuál es la motivación principal de aquellos que basan o asientan su carrera profesional en ese lenguaje.

Muy por el contrario, si le preguntás lo mismo a cualquier persona que use lenguajes más modernos como F#, Scala, Clojure, o incluso C#, seguramente te contestará "uso este lenguaje porque trabajar con él es placentero, divertido, y al mismo tiempo gano suficiente dinero".

Si bien es lógico encontrar personas que contraargumenten a esto: "ah, yo no tengo problema en usar java", generalmente esas personas aún no han tenido suficiente exposición a lenguajes modernos como para darse cuenta de cómo la falta de evolución de java, sumada a ciertas decisiones de diseño del lenguaje bastante cuestionables, generan que uno tenga que tipear una enorme cantidad de código para expresar lo que en otros lenguajes se hace de manera concisa, resultando en una experiencia cotidiana bastante agotadora en términos del uso diario del lenguaje, tanto para escribir código como para leerlo y mantener código existente.

Adicionalmente cuando uno hace un análisis para ver con qué lenguaje trabajar surge la pregunta de hacia a dónde va ese lenguaje en el futuro. En este sentido java tiene muchísimas desventajas, ya que mientras el resto del mundo sigue avanzando (ejemplo: https://github.com/dotnet/roslyn/issues/5032), java sigue debatiéndose cómo hacer para arreglar cuestiones fundamentales que están mal desde el principio y que son justamente las que hacen que el lenguaje java tenga los problemas que tiene (véase generics y value types). Además de esto, mientras algunas plataformas tienen ciclos de actualización mucho más agresivos, java plantea todos sus cambios, por más triviales que sean, a largo plazo. Tal es así que java 9 saldrá recién a fines de 2016, y con muy pocas o ninguna novedad a nivel de lenguaje, ya que éstas fueron pospuestas para java 10 (2018).

Después está el tema de las librerías y frameworks: mencionaste que aprendiste Swing, pero la realidad es que el desarrollo de aplicaciones de escritorio ha disminuído muchísimo, desplazado por las aplicaciones Web y móviles, y si bien aún existen nichos en donde todavía se necesitan aplicaciones de escritorio, éstos están en su gran mayoría totalmente dominados por el ecosistema de Windows (que tiene más del 95% del total del mercado mundial de computadoras de escritorio), con lo cuál en general se usa .Net en lugar de java ya que el primero tiene una mucho mejor integración en general con la plataforma Windows, mientras el segundo trata de estar en todos lados a la vez y termina no siendo "nativo" en ninguno.
Incluso para los casos en donde SI exista desarrollo de aplicaciones de escritorio basadas en la JVM, lo más probable es que se use JavaFX en lugar de Swing. JavaFX es un framework basado en la JVM, que básicamente replica (por no decir "imita") a WPF, que es un framework para GUI basado en .Net, que resultó tan productivo e idóneo para casi todo tipo de aplicaciones, que ha habido varios intentos a lo largo de su existencia de imitiarlo o lograr algo parecido en otras plataformas (véase Polymer de Google).

Otra discusión que se da muy a menudo respecta a la afirmación por parte de algunas personas de que "en java existen muchas más librerías que en .Net". Mi punto de vista (y que al momento nadie ha conseguido rebatir) es que si bien es cierto esto, una gran parte de esas librerías existen con el único propósito de compensar las falencias del lenguaje java, mientras que otra gran parte es duplicación innecesaria. Esto se evidencia al ver (por ejemplo) la cantidad de librerías que intentaban "replicar" una característica del lenguaje C# conocida como LINQ, antes de que java tuviera algo medianamente similar, librerías que en el presente son totalmente irrelevantes y obsoletas ya que existían solo para compensar una carencia del lenguaje java que luego fue parcialmente remediada en java 8.
Esto sin mencionar el hecho de que basar tu software en una serie librerías creadas por desconocidos que encontraste en internet es mucho menos recomendable que utilizar algo oficialmente soportado por el creador de la plataforma. En .Net tienden a haber muchas menos "librerías" porque 1: no se necesita compensar falencias en los lenguajes, y 2: en general se usan las librerías oficiales ya que las mismas son de altísima calidad y MS provee soporte oficial de las mismas.

Hace un tiempo pregunté en este foro justamente:
http://www.forosdelweb.com/f45/cuale...-java-1119079/

Y nadie me supo dar una respuesta concreta aparte de "uso java porque gano mucho dinero", que fue exactamente lo mismo que un tiempo después me respondió el conocido referente....

Por último está la falsa dicotomía planteada por algunos de "open source versus Microsoft", lo cuál es completamente irrelevante ya que en este momento una inmensa mayoría de la plataforma .Net, incluyendo compiladores, runtime, framewoks, etc, es totalmente open source y se puede ver en GitHub. Además de eso, este año Microsoft lanzó las versión oficial de .Net para Linux y Mac, echando por tierra la vieja creencia de que .Net corre sólo bajo Windows (lo cuál hace más de 10 años dejó de ser cierto ya que existía la plataforma Mono, que básicamente es una versión open source y multi plataforma de .Net, pero no cuenta con soporte oficial). Esto sumado al hecho de que java es propiedad de la compañía Oracle, hecho que en sí mismo es un tema de discusión aparte.

En fin, desde mi humilde punto de vista, java cada vez tiene menos puntos en la lista de "pros" y cada vez más puntos en la lista de "contras", al menos comparado a plataformas y lenguajes modernos. Te queda decidir si ganar un poco más de dinero justifica trabajar con un lenguaje que a la larga te saca las ganas de vivir.

Me gustaría discutir estos puntos con alguien que tenga una opinión diferente, a ver en dónde se me está escapando la liebre.

Última edición por agleiva; 11/09/2015 a las 22:42