No sólo Apple III: Java, el lenguaje del marketing


Bienvenidos a la nueva sección bisemanal de iPaderos. El leitmotiv de estos artículos será expandir un poco más allá la perspectiva de la temática general del blog, que no deja de ser otra que Apple y su ecosistema, y sobre todo, nuestro querido iPad. Parece como si el resto del mundo no hubiera tenido su propia historia e influencia en el mundo tecnológico, y obviamente, no es así. Apple ha sido, sin duda, un motor que ha impulsado indiscutiblemente la industria, pero tenemos que recordar también a todos a aquellos que, en el pasado o en la actualidad, han dado también parte de su originalidad o inventiva al mundo moderno en el que vivimos. Esta sección aparecerá a las 9:41 am, hora del pacífico, como nuestra sección “One More Jobs” (pulsa aquí para saber por qué).

Java es, sin duda, uno de los entornos tecnológicos más polémicos de los últimos 20 años. No sólo por los vaivenes que ha sufrido: compraventa de empresas, litigios legales continuos entre los poseedores del copyright y prácticamente el resto del mundo, problemas estructurales, fallos de versiones, etc. Java es probablemente el sistema informático más improductivo de la historia. Sé que este artículo va a molestar a más de uno y de dos, pero a veces es bueno verse reflejado en un espejo para mostrar los defectos que uno tiene. Y Java tiene muchos. No podemos mostrar todo porque son muchos años de andadura y su impacto e influencia han sido muy extensos, pero vamos a tocar los puntos algunos de los puntos principales.

Sun_Java_Development_Kit

Java nació con una premisa en mente: construir un sistema de programación que permitiera programar una vez y ejecutar la aplicación en todos los sitios donde fuera posible. La multiplataforma no era algo nuevo, pero Java le dio carta de naturaleza al fijar muchos de los conceptos que conocemos hoy día como máquina virtual o byte-code. Una idea tan nueva y tan buena, al menos sobre el papel, requería de una ingeniería que por entonces aún estaba en pañales, cosa que se demostró sobradamente por los múltiples problemas que Java presentó con los años, haciendo casi imposible esta premisa por la inevitable lentitud con la que se ejecutaban las aplicaciones. La invención del “Just-In-Time” para ordenadores tuvo su inevitable despertar gracias al lenguaje cafetero. Pero Java es famoso no sólo por ser el primer lenguaje “compila una vez, ejecuta muchas veces”. Las polémicas no técnicas han rodeado siempre al sistema y una endogamia nada saludable han hecho estragos en este concepto en opinión del que les escribe. Vamos a ver porqué.

Java fue desarrollado en los laboratorios de Sun Microsystems. Aunque se comenzó su desarrollo en 1991, no fue hasta 1994 que pudo descargarse por primera vez y fue en 1995 cuando se presentó oficialmente en el evento oficial de Sun (para los más pequeños, Sun era una empresa que hasta 2010 desarrollaba los que por entonces eran considerados de los mejores sistemas servidor Unix del mercado, pero que a partir del 2000 fue perdiendo buena parte de su poder comercial por culpa de Linux fundamentalmente, hasta que en 2010 fue adquirida por Oracle, pero no adelantemos acontecimientos…). El que les habla en 1997 ya intentaba programar en Java, pero era misión imposible, al menos en MS-DOS y Windows. La aplicación de ejemplo, sin ir más lejos, que no era más que un amasijo de controles en una ventana, tardaba más de 5 minutos en cargar en un Pentium de la época. Alguno podrá decir que esos ordenadores eran lentos… Para los estándares actuales sí, pero para aquella época era un pepino. Las aplicaciones en Java eran tan lentas que hubo que recurrir a realizar compilaciones específicas en cada máquina para que cargaran “más rápido”, pero nunca tuvieron el rendimiento de las aplicaciones nativas de aquel entonces. Este fue el primer follón que tuvo que hacer frente Sun, porque no mucho tiempo más tarde surgieron los problemas de los applets. Ahora ya casi nadie recuerda este concepto, pero los applets fueron la aproximación de Java a lo que en entornos Windows se llamaba “control de ventana”: fragmentos de código que eran visualizables incrustados en un contenedor (una ventana, por ejemplo) y que realizaban alguna función de interfaz, como un botón o un formulario. Pero los applets fueron originales en una cosa: se podían incrustar en un navegador. El primer navegador que los soportó por Netscape Navigator (si no tenemos en cuenta HotJava, el navegador propio de Java), y permitía introducir subprogramas en Java por medio de este mecanismo en las página HTML. La razón por las que nadie conoce este concepto hoy día es porque simplemente fue desterrado: los problemas de seguridad que suponía y la lentitud con que se ejecutaban hicieron que su momento de moda pasara relativamente rápido, y a mediados de la década del 2000 ya no los quería nadie ni con un palo. Pero hay que reconocer una cosa: inició la moda de los complementos de navegador, que ojalá algún dios de alguna galaxia extermine con su rayo fulminador para siempre (no se nota que tengo Flash aborrecido, ¿verdad?).

Los problemas legales de Java siempre han sido el grano en el trasero de los poseedores del copyright, primero Sun y luego Oracle. Generalmente, cuando se libera un lenguaje de programación, este suele estar disponible para todo el mundo y pueden crearse compiladores e interpretes de forma directa. Java fue de los primeros entornos públicos de programación que no eran libres para ello. Está sujeto a copyright y nadie excepto Sun (Oracle ahora) podía realizar un compilador o crear su propia versión del framework de APIs (clases) para sistemas operativos alternativos a los oficiales. Lo curioso del asunto es que, aún así, Sun liberó Java con código fuente y se le podía ver las entrañas (luego remedió eso, tarde y mal), pero no podías hacer nada con ello. Sólo mirarlo. En un entorno tan friki como suele ser el de desarrollo de aplicaciones y sistemas, eso era pecado mortal. De los múltiples frentes que tuvo que encarar Sun en su momento por estas circunstancias hubo dos especialmente notables: Microsoft y, atención, el proyecto GNU. Vamos por partes. Microsoft, ante la popularidad creciente de Java, decidió sacar su propio compilador y framework para Windows (lo habitual, vamos, como solía hacer entonces), sin percatarse, consciente o inconscientemente, de que la licencia no lo permitía. El conflicto se extendió hasta más allá del año 2000, llegando incluso a liberar una versión Java para .NET, la plataforma que precisamente creó Microsoft para competir con Java, pero tal concepto no pasó del 2005 con la versión 2.0 de .NET. Microsoft no volvió a tocar el Java de ninguna forma, tras enfrentarse continuamente con una Sun que creía estar en posesión de la verdad (y en realidad, así era, tal y como estaba redactada la licencia). Pero uno de los casos más chocantes fue el enfrentamiento con la Free Software Foundation y el proyecto GNU, liderado por el ínclito Richard Stallman, un figura donde los haya, que merece su propio artículo para él sólo. Desarrolladores de la FSF comenzaron un proyecto libre de Java que, obviamente, se cruzó en los derroteros de la licencia de Sun. Llegaron a los tribunales, pero finalmente Sun decidió que no valía la pena enfrentarse a uno de los héroes del mundo Unix y les permitió desarrollar su propio sistema para GNU/Linux (Sun sacaría más adelante su propia versión de Java para Linux). No obstante, el proyecto se fue abandonando y hoy día está en “stand-by”.

Oracle Corporate Headquarters

La popularidad de Java se granjeó sobre la base del marketing. Sun tenía especial interés en que los desarrolladores corporativos, los de sus clientes de envergadura (Sun pretendió competir con IBM en el mercado empresarial de alto nivel y en parte lo consiguió, con sus máquinas y sistemas), y sabía que para llegar a ellos tenía que crear “hype”. Pues dicho y hecho: la campaña de marketing fue brutal, tanto en las propias empresas como en las universidades. La presión sobre las instituciones y los profesores (aunque ellos lo nieguen) fue enorme, y de hecho, consiguió que se establecieran asignaturas de Java en las escuelas técnicas y superiores que todavía hoy perduran. En el 2000, en las charlas de amigos informáticos, Java fue conocido en algunos círculos como el “lenguaje anuncio”, puesto que en aquella época no veías casi otra cosa que anuncios de Java en todas las revistas. Probablemente ha sido el entorno de programación más publicitado nunca. Eso dio sus frutos, y hoy día sigue siendo el lenguaje más usado para desarrollar, al menos en el mundo del open source. En las empresas, ya hace años que se ha ido abandonando, pero todavía es muy popular en muchos entornos, sobre todo la administración pública. Pero cuando el lenguaje estaba ya casi muerto, ocurrió el milagro: Android.

A mediados de la década pasada, Google tenía un gran interés en medrar en el mundo móvil. Había visto posibilidades a las aplicaciones en teléfonos, sobre todo tras el éxito de los teléfonos Symbian de Nokia, que permitía instalar pequeñas applets Java en los teléfonos. Google intentó infructuosamente que Sun y el consorcio Java, que lideraba la empresa de servidores, hiciera cambios en el framework y la máquina virtual para adecuarla a las necesidades móviles, pero era una estructura altamente burocratizada que hacía casi imposible cualquier avance. Así que se pusieron a trabajar en su propio sistema. Pero en 2007 ocurrió lo que no se esperaban: Apple saca el iPhone original al mercado y medio mercado empieza a correr como pollo sin cabeza. Un ingeniero de Google que trabajaba en el proyecto móvil declaró que pensaba que todo había terminado, que no podían competir con una pantalla multi-táctil sin teclado. Google fue una empresa inteligente y se puso a trabajar en ello (otras como Blackberry se durmieron en los laureles y ya sabemos lo que pasó). El problema es que lo que tenían, en términos llanos, no servía para nada. En 2005 habían adquirido una startup llamada Android Inc. por 50 millones de dólares y aunque ya se había intentado hacer algo con ello, la cosa había terminado con un teléfono con teclado parecido a la Blackberry. Tuvieron que rehacer el sistema completo para que fuera multi-táctil, con pantalla grande y todo lo que hoy día suponemos que es un smartphone. Centrándonos de nuevo en Java, Android estaba desarrollado en este sistema, y la popularidad que han tenido estos teléfonos ha hecho que el lenguaje haya conseguido repuntar en los últimos cinco años tras el lento declive (a nivel de tecnología popular se refiere) que llevaba sufriendo los cinco años previos. Que Google decidiera usar Java para desarrollar su sistema fue fuertemente criticado en su día y se demostró, por ejemplo, que con Mono (un fork para Unix de .NET) se podía desarrollar exactamente el mismo sistema en el mismo hardware ejecutándose mucho más rápido.

oracle-android-java

Por último, en 2010 Sun fue adquirida por Oracle Inc., el gigante de las bases de datos, y claro está, Java pasaba a ser de su propiedad. Y también sus líos legales. Oracle lleva desde entonces enfrentada con varias empresas por este motivo, principalmente con Google, y parece que van ganando. De hecho, podría pasar que Google tuviera que retirar Android del mercado por la violación de licencias. Así de fuerte. La razón principal es que Android está construido sobre un compilador y una máquina virtual específicas que violan las licencias de Java. Pero el futuro de Java no está muy claro. Como decía antes, la plataforma llevaba cayendo en picado desde mediados de la década pasada debido al agotamiento propio de la misma, hasta que Android volvió a levantarlo como nunca antes. Oracle se está pensando muy seriamente, por lo que parece, quitarse Java de encima, lo que deja el futuro del lenguaje muy poco claro incluso para los propios miembros del equipo de desarrollo. Particularmente nunca he sido partidario de este sistema. Está aviejado, es difícil de programar (razón por la cual más del 60% de las apps Android están programadas usando entornos tipo web o por ejemplo con Xamarin, en .NET, no siendo pues nativas) y en general es un entorno demasiado problemático que ha pecado más de romántico que de lo que debe pecar un lenguaje: de ser útil y práctico. Para que os hagáis una idea: cualquier proyecto software que os imagineis cuesta tres veces más desarrollarlo en Java que en cualquier otra plataforma. ¿Por qué? Porque fue hecho así adrede. Cualquier proyecto Java necesita el doble o triple de programadores que en cualquier otra plataforma, precisamente porque se quiso salvaguardar el concepto de desarrollo empresarial. Y lo consiguieron. Es el poder de la publicidad.

Anterior 9 aplicaciones gratuitas por tiempo limitado (12-octubre-15)
Siguiente 11 aplicaciones gratuitas por tiempo limitado (13-octubre-15)

6 Comentarios

  1. Ray
    13 de Octubre, 2015
    Responder

    Java no es malo, es peor…. Y esa lentitud si que mata…

  2. Silverio
    14 de Octubre, 2015
    Responder

    Buen artículo, no soy programador pero recuerdo cuando estaba en la universidad que todos se quejaban de Java

    • lainon
      14 de Octubre, 2015
      Responder

      En tiempos siempre me pregunté quien podía tener las narices de poner asignaturas de iniciación a la programación con Java, que es el lenguaje más anti-formativo que conozco… De hecho en muchos sitios llegó a sustituir incluso a C, que ha sido el estándar toda la vida para aprender a programar y realizar proyectos en la Universidad. Luego cuando analizas lo que pasó, lo entiendes, pero no deja de sorprendente la capacidad del marketing para llegar a los sitios más insospechados…

  3. LEANDRO
    15 de Octubre, 2015
    Responder

    Agrego algo mas al articulo:
    No solo es marketing , tambien cuenta mucho el mercado laboral actual, toda la gente que programa en Java no va a dejar tan facilmente que el lenguaje muera porque significaria migrar y ponerse a estudiar nuevamente , algo parecido a lo que paso con Visual Basic en su momento , o Cobol o los lenguajes XBase para el manejo contable.
    Yo creo que java va a morir en lenguaje de aprendizaje como fue C++ donde para explicar determinados conceptos iniciales es muy util.
    Nadie mataria su propio trabajo en detrimento a la mejora romantica de los sistemas, mucha gente piensa asi pero no su mayoria, es como avisarle a los clientes que consiguen un articulo mas barato en otro lugar

    • lainon
      16 de Octubre, 2015
      Responder

      Estoy de acuerdo, es evidente que muchos programadores Java van a anclarse a él como si no hubiera un mañana. Muchos ya han migrado, en buena medida a C#, pero también a lenguajes de script tipo Python o Ruby, entre otros. La comunidad de desarrolladores Java es evidentemente muy fuerte y lo seguirá siendo. Pero si finalmente Oracle le retira su apoyo al lenguaje, sólo podrá sobrevivir en la comunidad de software libre, ya que las empresas empezarán a pasarse a otras plataformas (como muchas están haciendo ya). En general, va a ser una muerte lenta, pero segura.

    • lainon
      16 de Octubre, 2015
      Responder

      Digo todo esto (y también el artículo) partiendo de que yo también desarrollo en Java por Android, pero no por gusto, como de hecho le está pasando a mucha gente que desarrolla para el robotito. Si puedo, prefiero Xcode de lejos… XD

Contestar

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *