Hubo un tiempo en el que Java fue el lenguaje número 1 y dominaba el mundo del desarrollo de software. Tanto así, que JavaScript le tomó prestado el nombre para ser más popular y Microsoft creó C# y .NET para competir con Java. Esta historia te lo contamos en nuestro video de Youtube: ¿Qué es .NET? Guía definitiva para entender la plataforma de Microsoft. Incluso, Google eligió a Java para el desarrollo oficial de Android.
Y si tienes los suficientes años, recordarás que los teléfonos pre smartphone mostraban la tacita de café de Java al inicio de sus aplicaciones y juegos. En resumen: Java estaba en todas partes porque combinaba el poder de lenguajes de bajo nivel como C y C++ con una sintaxis más sencilla, y la capacidad de ejecutarse en cualquier sistema operativo.
Java sigue siendo uno de los lenguajes más importantes del mundo, es el tercero según el índice Tiobe, y su popularidad prácticamente no ha caído en más de 20 años. Recordemos que Java se lanzó en 1995, y tenía el puesto 16 en 1997. Pero rápidamente escaló posiciones.
Pero, ¿qué tiene Java que lo hace tan especial? Luego de leer este blog entenderás qué es Java, cómo funciona y porqué es el lenguaje preferido por muchos desarrolladores. Porque en español, nadie explica mejor que EDteam.
Características de Java
Las computadoras no entienden el lenguaje humano sino el de las máquinas, que se llama binario 8ceros y unos). Sin embargo, las personas no comprenden el lenguaje de las máquinas, sino el humano (español, inglés, etc). Entonces, ¿cómo puede un programar darle instrucciones a una computadora si usan lenguajes completamente diferentes? Esto sucede a través de algo llamado lenguaje de programación, que se sirve como un puente de comunicación entre ambos.
Por ejemplo, el programador aprende los lenguajes de programación con los cientos de cursos de EDteam , como quién aprende un nuevo idioma, mientras que la computadora debe convertir el código escrito por el programador en lenguaje de máquina. Existen dos formas de conseguirlo: por compilación o por interpretación.
1. La compilación
La compilación es un proceso previo que consiste en transformar el código de programación en lenguaje de máquina antes de ejecutarlo. En este paso, es el programador quien se encarga de compilar su código y una vez hecho, entonces puede ejecutarlo. Ejemplos de lenguajes compilados: Go, C++ o Rust.
2. La interpretación
En la interpretación, el programador ejecuta el código tal como lo escribió, sin compilar. Entonces, ¿cómo hace la computadora para ejecutarlo si no está en código máquina? Usando un software llamado intérprete que hace la traducción durante la ejecución. Obviamente, ese intérprete debe estar instalado previamente en la computadora. Ejemplos de lenguajes interpretados: JavaScript, Python o PHP. ¡Todos los puedes aprender en EDteam!
¿Cuál es mejor?
Si aún no te queda claro, imagina que un lenguaje compilado es una película en otro idioma pero doblada al español. Es decir, ya se hizo el trabajo previo de regrabar todas las voces en tu idioma para que no tengas que hacer un esfuerzo extra al mirarla. Mientras que, un lenguaje interpretado, es la misma película pero con subtítulos. Así que, además de ver la película, debes estar procesando lo que lees en el mismo momento.
Visto así, los lenguajes compilados son más veloces en su ejecución porque fueron traducidos previamente, pero tienen el problema de que solo funcionan en un sistema operativo. Por ejemplo, para que una app de Windows funcione en Mac, debes volver a escribirla.
Los interpretados no tienen este problema porque basta con instalar el intérprete y se pueden ejecutar en cualquier parte. Sin embargo, son más lentos y no tienen todo el poder de un lenguaje compilado.
Java: lo mejor de ambos mundos
Para resolver estos problema, Java combina lo mejor de los dos mundos en dos pasos:
- Compilación. El código escrito en Java se compila pero no a código máquina, sino a un lenguaje intermedio llamado bytecode. De esa manera, puede tener un rendimiento similar a los lenguajes compilados.
- Interpretación. Este bytecode es interpretado en tiempo real a código máquina por la Máquina Virtual de Java (JVM). De esta forma, podíamos instalar la JVM en cualquier sistema operativo y las aplicaciones no tenían que escribirse de nuevo, sino que eran multiplataforma.
Por esta razón, su eslogan fue Write once, run anywhere (escribe una vez, ejecuta en todas partes), lo cual marcó una revolución e hizo a Java tremendamente popular. Sin embargo, en algunos casos, la ejecución multiplataforma no era 100% eficaz y popularmente se decía la frase: Write once, debug anywhere (escribe una vez, corrige errores en todas partes).
Con el tiempo, se mejoró la JVM para que, en lugar de interpretar el bytecode, lo compile en tiempo de ejecución. A este proceso se le llama Just In Time (JIT), lo que hace a Java mucho más veloz.
Historia de Java
En 1990, el programador Patrick Naughton le dijo a Scott McNealy, CEO de Sun Microsystems, que renunciaba a Sun y se iba a Next (la nueva empresa de Steve Jobs) donde estaban haciendo las cosas bien. Entonces McNealy le propuso que le dijera todo lo que estaba mal en Sun y todo lo que cambiaría. En resumen: ¿qué harías si fueras Dios?
Al día siguiente, Naughton le envió un correo electrónico que corrió por toda la compañía y generó intensos debates sobre todo lo que debería cambiar en la empresa. El principal tema: la computadora personal estaba comiéndose el mundo y Sun no tenía nada con qué competir y seguían con sus anticuadas estaciones de trabajo.
El proyecto Green
Entonces Sun les dio a Patrick Naughton, James Gosling y Mike Sheridan un proyecto libre, lejos de la burocracia corporativa, para que desarrollaran el siguiente gran producto de Sun. Este se llamó Green (o verde, en español) pero tenía un pequeño problema: nadie sabía cuál sería ese gran proyecto. Lo obvio, sería meterse en el mercado de las computadoras personales, pero estaba dominado por Microsoft y era una lucha de David contra Goliat, así que quedó descartado.
Un día, Gosling tuvo una epifanía: los chips estaban en todas partes, pero se usaban muy mal (él mismo tenía tres controles remotos: para su TV, su deco y su stereo) así que pensaron en desarrollar un sistema operativo capaz de controlar cualquier aparato que tenga un chip, por lo que, dicho sistema operativo, debería ser capaz de correr en cualquier dispositivo electrónico y cualquier chip. Ese fue el inicio de lo que hoy en Java, pero todavía no se llamaba así.
Oak y Star 7
Empezaron el proyecto programándolo en C++, pero pronto Gosling se dio cuenta que no era la mejor opción para lo que buscaban y decidió crear un lenguaje nuevo (sin saber que se convertiría en el número 1 del mundo). Con este nuevo lenguaje, al que llamaron Oak (roble, en español), y las interfaces diseñadas por Naughton, construyeron un prototipo de control remoto universal al que llamaron Star 7. Este dispositivo permitía controlar la TV y grabar programas desde una interfaz táctil, donde un personaje llamado Duke te guiaba por los controles.
En 1992 hicieron la demo oficial del Star 7 con Mcnealy y el CEO quedó encantado y convencido del potencial comercial, por lo que creó una empresa subsidiaria llamada FirstPerson Inc para este proyecto.
Pero, aunque el aparato era revolucionario y adelantado a su tiempo, nunca pudo venderse y Sun prefirió enfocarse en usar el lenguaje Oak para controlar otros dispositivos, como decodificadores de TV por cable o consolas de videojuegos, creyendo que la TV por cable era el futuro de la electrónica de consumo. Pero, no pudieron estar más equivocados.
Durante todo ese tiempo, obsesionados con la TV, se les pasó por completo mirar la nueva revolución del mundo: la web. Incluso en el plan de negocios que escribieron para generar ganancias con Oak, no decía web por ningún lugar.
De Oak (de pago) para TV a Java (gratis) para la web
Fue Bill Joy, cofundador de Sun y quien había escrito la versión de Berkeley de Unix (BSD), quien propuso llevar Oak a la web y hacerlo gratis, como lo hizo Netscape. Fue allí cuando Gosling adaptó Oak para la web y pasó a llamarse Java, mientras que Naughton escribió, en un fin de semana, un intérprete para el navegador llamado HotJava. El objetivo de ponerlo gratis en la web era que se convirtiera lo antes posible en un estándar (antes de que Microsoft contraatacara como solía hacer) y luego buscarían un modelo de negocio.
Sin embargo, había resistencia dentro de la empresa por poner a Java gratis. Recordemos que en esos tiempos, no existía el concepto de Open Source que es tan común actualmente. Incluso Eric Schmidt, exCEO de Google, y que en ese tiempo era director de tecnología de Sun, estaba nervioso y no sabía como justificar ponerlo gratis. Pero aún así, en diciembre de 1994, enviaron copias de Java y HotJava a un grupo privado de testers. Tres meses más tarde, Marc Andreesen y Jim Clark, los fundadores de Netscape, recibieron una copia y quedaron sorprendidos.
Los applets de Java permitían tener aplicaciones que funcionaran en el navegador sin tener que reescribirlas para cada plataforma. Además, en un tiempo en que la web era solo texto e imágenes, tener aplicaciones con animaciones o que respondieran al movimiento del mouse era increíble.
A partir de entonces , Java se convirtió en el lenguaje más popular del mundo. No solo en web, sino también en el escritorio, dispositivos electrónicos y teléfonos. No había rival para Java. Con los años, la web avanzó tanto que los applets se sentían pesados y lentos y muchas cosas podían hacerse con Flash y luego con JavaScript. Pero Java es más que los applets y estaba más vivo que nunca del lado del servidor, construyendo aplicaciones web distribuidas y gigantescas.
Java en la computación distribuida
En 2010, el presidente ruso Dmitry Medvedev visitó la sede de Twitter en San Francisco y envió su primer tweet. Aunque, en realidad, no usó Twitter. En esos tiempos, Twitter se caía cada dos minutos, sobre todo en los tiempos del mundial de fútbol. Así que los ingenieros de Twitter tuvieron que crear un Twitter falso para que el presidente pudiera publicar su tweet y no pasar vergüenza.
Luego de eso, decidieron que habían tenido suficiente con Ruby on Rails, porque no tenía la capacidad de escalar para lo que necesitaban en ese momento, y reescribieron completamente Twitter con Java y lenguajes similares, como Clojure y Scala.
Java es tan fuerte que no solo es usado por Twitter, sino también por Google, LinkedIn y Netflix. Incluso Amazon contrató a James Gosling, el creador del lenguaje, para darle soporte dentro de AWS.
Lenguajes JVM
Y es que Java es más que el lenguaje, es una completa plataforma de desarrollo donde la magia está en la JVM (Java Virtual Machine), que puede instalarse en cualquier sistema operativo para convertir a Java en everywhere. Es prácticamente lo mismo que ocurrió en 2009, cuando se sacó el motor de JavaScript de Google Chrome para instalarlo en todas partes con Node.js, convirtiendo a JavaScript en everywhere (en todas partes, en español).
Pero, a diferencia de JavaScript, la JVM va más allá porque no solamente interpreta código escrito en Java, sino que también existen una serie de lenguajes, a los que se les llaman JVM, por que utilizan la máquina virtual de Java para ejecutarse. Los más famosos son Clojure, Scala y más recientemente, Kotlin.
¿Java es Open Source o propietario?
Como vimos en su historia, Java fue liberado de manera gratuita para convertirse en un estándar, pero esta decisión causó un conflicto interno en la compañía debido a que el término Open Source no existía aún, y liberar un producto al público (cosa que hoy es normal), en esos tiempos era completamente impensable.
El término Open Source aparece recién en 1998 cuando Netspace es derrotada por Microsoft y abre su código para que otros desarrolladores puedan continuar con su trabajo (ese código fue el origen, años más tarde, de Firefox). Hasta entonces, solo existía un término parecido llamado Software libre, pero era un término de secta, filosófico y del bien contra el mal, más que un concepto puramente técnico.
Desde 1998, las actualizaciones de Java se hacen a través del JCP o Java Community Process, que es un conjunto de reglas para que los miembros propongan mejoras y actualizaciones. Algo similar a lo que ocurre con las fundaciones Open Source de la actualidad. Es recién en 2006 cuando Sun Microsystems convierte a Java oficialmente en Open Source mediante la licencia GPL. Con esa licencia, en mayo de 2008, se lanza la OpenJDK. Esta es una versión completamente abierta y gratuita de todos los recursos para desarrollar en Java, como la máquina virtual y el tiempo de ejecución.
Oracle y el Open Source
En 2009, luego de varias malas decisiones, el valor de Sun había caído tanto que Oracle la compró por apenas 7 mil 400 millones de dólares. Puede parecer una enorme cantidad de dinero, pero Larry Ellison, fundador de Oracle, la calificó como “una ganga”. La compra de Oracle encendió todas las alarmas de la comunidad por el futuro de los proyectos Open Source de Sun como MySQL y Java.
Demanda a Google
En 2008, para el desarrollo de Android, Google escogió a Java como plataforma para el desarrollo de aplicaciones y “copió” algunas implementaciones de sus APIs para su propia máquina virtual Dalvik. Cuando Oracle compró a Sun, demandó a Google por violación de patentes por una suma de casi diez mil millones de dólares.
Este juicio demoró casi 11 años, pero al final ganó Google. Sin embargo, para ese entonces, ya Google había reemplazado a Java por Kotlin como lenguaje principal. Si quieres más detalles de esta demanda, tenemos un video en nuestro canal de Youtube: Google vence a Oracle en el juicio tecnológico de la década.
Entonces, ¿Java es abierto o cerrado?
Hay que tener en cuenta que Oracle es propietaria de la marca Java, sin embargo, el lenguaje como tal, es libre. Por lo tanto, existen varias implementaciones libres, la más famosa es la OpenJDK, que te permite utilizar Java sin tener que pagarle a nadie. También existe Jakarta EE, que sería como la versión abierta de Java Enterprise Edition. Pero obviamente, Oracle también ofrece servicios de pago, que dan soporte a grandes empresas de forma comercial.
Java es usado en el desarrollo web, de videojuegos, la computación en la nube, el Big data, el internet de las cosas (IoT), la inteligencia artificial, los sistemas embebidos y muchas áreas más. No olvides que Java es más que un lenguaje, es una extensa plataforma de desarrollo que incluye el lenguaje, la JVM, las APIs y numerosas implementaciones. Aplicaciones como Minecraft, Gmail, Netflix, Android Studio, IntelliJ Idea y todos los IDEs derivados y miles de aplicaciones más usan Java en sus entrañas.
Ediciones de Java
Como plataforma, Java tiene varias ediciones que suelen confundir a los que comienzan, pero es bastante sencillo. Solo existen tres:
- Java Micro Edition (Java ME). La versión para controlar pequeños dispositivos y sistemas embebidos como teléfonos pre smartphone, televisores, refrigeradoras, microondas, etc.
- Java Standard Edition (Java SE). La versión standard con la que todos comenzamos a programar en Java y la más utilizada en desarrollo de escritorio y web.
- Java Enterprise Edition (Java EE). La versión enterprise que agrega capas adicionales a SE, principalmente para computación distribuida (microservicios) y gigantescas aplicaciones.
Sin embargo, seguramente has escuchado otros términos relacionados con Java que te enredan. Te las dejo como glosario para que más nunca te confundas:
- Java Virtual Machine (JVM). La máquina virtual de Java que convierte el bytecode en código máquina y gracias a la cual Java es multiplataforma.
- Java Runtime Enviroment (JRE). El tiempo de ejecución de Java, que se encarga de ejecutar los programas escritos en Java. El JRE incluye a la JVM.
- Java Development Kit (JDK). El kit con todas las herramientas de desarrollo para que los programadores escriban aplicaciones con Java. Incluye al JRE y a la JVM. Tiene su versión Open Source llamada OpenJDK.
- Java Swing y Java Fx. Son un conjunto de soluciones para crear interfaces de aplicaciones.
- Java Spring y Spring Boot. Spring es el framework más utilizado de Java para aplicaciones enterprise y Spring Boot es la versión para el desarrollo de APIs REST.
Así que ya sabes porque Java es un lenguaje poderoso y por qué es el tercer lenguaje más usado en el mundo según el índice TIOBE (solo detrás de Python y C). Además, Java cuenta con grandes campos de aplicación y uno de los más demandados por las grandes empresas. Si no tenías claro todo lo que incluye Java, cómo funciona, su historia y sus ediciones, con este blog se te fueron todas las dudas. Y si no lo sabías, #LoAprendisteEnEDteam.