Como desarrollador web Jeremy Keith dijo en 2009, «Java es para JavaScript como jamón es para hámster». La exactitud exacta de esa analogía es discutible, pero el espíritu detrás de ella es sólido: Java y JavaScript, a pesar de compartir una raíz lingüística común, son dos lenguajes de programación muy diferentes. A lo largo de los años, han llegado a superponerse un poco más, pero JavaScript sigue siendo el lenguaje de front-end dominante que hace que los sitios web sean interactivos, mientras que Java sigue siendo popular para la programación de aplicaciones y del lado del servidor. Si está intentando contratar a un desarrollador, aprender a codificar o crear un sitio / aplicación, es importante conocer la diferencia entre Java y Javascript.
Diferentes historias
TLDR: Java fue lo primero. JavaScript, que era similar pero técnicamente no afiliado a Java, apareció para satisfacer una necesidad diferente.
Java fue desarrollado durante cuatro años por James Gosling y un equipo de investigadores de Sun Microsystems, comenzando en 1991 y lanzándose en 1995. Desarrollaron un lenguaje orientado a objetos que podía ejecutarse en múltiples sistemas operativos. Desde entonces, se ha utilizado en una amplia gama de dispositivos, desde teléfonos hasta rovers de la NASA, y también era una tecnología web multimedia (como Flash y JavaScript todavía lo es) a través de Java Applets hasta 2016, cuando Java oficialmente retiró el soporte.
JavaScript también se lanzó en 1995, pero fue creado durante 10 días por Brendan Eich en Netscape como una forma de hacer que las páginas web fueran interactivas después de que el navegador las cargara. Inicialmente se llamó Mocha en mayo de 1995, pero se envió con Netscape Navigator como LiveScript en septiembre y se cambió a JavaScript en diciembre de 1995. Dado que el lenguaje fue creado para ser similar a Java como contraparte de scripting ligero, el nombre realmente hace sentido, y también fue una jugada de marketing bastante buena. Desde entonces, ha crecido hasta convertirse en uno de los tres componentes principales de la Internet moderna, junto con HTML y CSS.
Diferencias tecnicas
Tanto Java como JavaScript son lenguajes de programación orientados a objetos, lo que significa que los programadores pueden hacer que las cosas funcionen creando fragmentos de información y conectándolos a otros fragmentos de información. Un objeto “gato”, por ejemplo, podría incluir información sobre el nombre, el color y la edad de un gato, así como una lista de cosas que el gato puede hacer, como maullar, comer y dormir. La información en ese objeto está disponible para el programador, quien puede imprimir información sobre el gato o hacer que haga algo.
Esa es la mayor similitud. Sin embargo, las diferencias se acumulan a partir de ahí.
1. Se compila Java, se interpreta JavaScript
Java tiene un sistema de «escribir una vez, ejecutar en cualquier lugar». Funciona así:
- Escribe el código en Java.
- Compile el código en un código de bytes legible por computadora.
- Ejecute el código en la máquina virtual Java, que es una computadora virtual que ejecuta el código de bytes de Java en los dispositivos.
Esto significa que siempre que desee cambiar el programa, debe realizar el cambio en el código Java y volver a traducir todo el programa al código de bytes.
Sin embargo, los navegadores web pueden leer JavaScript tal como está escrito. El navegador simplemente verifica cada línea y la ejecuta. Esto lo hace más flexible y más fácil de cambiar, aunque va por detrás del código compilado en cuanto al rendimiento, ya que no se ejecuta directamente en un lenguaje legible por máquina.
2. Escritura estática (Java) frente a escritura dinámica (JavaScript)
Una gran parte de los lenguajes de programación almacena valores en variables. Java tiene un tipo estático, lo que significa que debe decir qué tipo de valor contiene cada variable, y luego se fija. Por ejemplo:
int a_number = 42; char a_letter = ‘z’;
«Int» tiene que ser un número y «char» tiene que ser una letra.
Sin embargo, JavaScript se escribe dinámicamente, por lo que cualquier variable puede contener cualquier tipo de datos y pueden cambiar sin problemas. El siguiente código funciona bien:
let number = 42; let a_letter = “z”;
Java tiene una ventaja de velocidad y depuración aquí: declarar tipos de variables hace que la búsqueda de problemas sea más rápida y también permite que el código se ejecute más rápidamente. Sin embargo, JavaScript es más rápido para trabajar con la mayoría de los desarrolladores.
3. Simultaneidad
Java puede ejecutar varios subprocesos diferentes al mismo tiempo, lo que significa que puede hacer varias cosas a la vez.
En su lugar, JavaScript usa un bucle de eventos, esencialmente trabajando a través de una pila de cosas por hacer hasta que llega al final. Nuevamente, Java tiene una ventaja de rendimiento aquí.
4. Java tiene clases, JavaScript tiene prototipos
Recuerde, Java y JavaScript usan objetos para almacenar información. Ambos también usan la «herencia», que permite que los objetos obtengan sus propiedades de otro lugar. En Java, obtienen propiedades de clases, que son esencialmente planos con instrucciones sobre cómo construir el objeto. En JavaScript, los objetos nuevos se crean utilizando prototipos u objetos que se pueden copiar para crear un objeto nuevo.
Básicamente, eso significa que cualquier objeto en JavaScript puede convertirse en un prototipo, mientras que Java requiere que cree una clase que pueda crear los objetos. Para hacer referencia a un ejemplo anterior, Java proporciona instrucciones sobre cómo construir un gato, mientras que JavaScript simplemente lo clona.
Cual necesito?
Si los detalles técnicos hicieron que sus ojos se pusieran vidriosos, ¡puede comenzar a prestar atención nuevamente ahora! Si está tratando de decidir entre Java y JavaScript, realmente no es demasiado difícil.
Por lo general, querrá JavaScript para:
- Sitios web, aplicaciones web y otras interfaces de front-end
- Servidores web simples / tareas de back-end (con Node.js)
- Creación de animaciones y juegos basados en navegador
- Aplicaciones / juegos / programas creados en Electron u otro marco multiplataforma
Sin embargo, probablemente desee utilizar Java para:
- Aplicaciones de Android
- Aplicaciones de escritorio
- Aplicaciones del lado del servidor
- Escribir código para teléfonos, dispositivos IoT y otro hardware
Si está buscando elegir un idioma para aprender, depende de sus objetivos. Si está buscando desarrollar una carrera en programación y obtener una sólida comprensión de los fundamentos de la programación, o si desea trabajar en aplicaciones que no son web, Java se considera el lenguaje más riguroso desde el punto de vista técnico. También es el más utilizado en el mundo.
Sin embargo, si desea incursionar en el desarrollo web o planea trabajar principalmente en sitios web y aplicaciones web, JavaScript es probablemente una habilidad «imprescindible». A largo plazo, no está de más aprender ambos, ya que ambos abarcan conceptos que pueden convertirlo en un programador mejor (¡y más comercial!).
Si está buscando incursionar en el desarrollo de juegos, estos lenguajes de programación serán más adecuados para usted.
Créditos de imagen: Logotipo del lenguaje de programación Java, Logotipo de JavaScript, Java-jvm, La programación impulsada por eventos simplemente explicada, Clases de OOP