Menú de navegaciónMenú
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

Java y JavaScript ¿son lo mismo?

Java-JavaScript-Son-Lo-Mismo

Esta pregunta puede parecerle obvia a muchos, pero todavía hay cantidad de gente que no lo tiene claro...

Dado que comparten una palabra al principio de su nombre, muchas personas piensan que Java y JavaScript están relacionados, o que JavaScript es un subconjunto de Java y cosas parecidas... Nada más lejos de la realidad.

Java nació en el año 1991 en la empresa Sun Microsystems, de la mano de James Gosling. Su objetivo inicial era crear aplicaciones para receptores de televisión y dispositivos embebidos, aunque al final haya terminado funcionando en casi todas partes. Inicialmente iba a llamarse Oak, y luego Green, pero finalmente el nombre elegido es el que todos conocemos. La Wikipedia tiene información muy interesante sobre su historia y su nombre que te recomiendo que te leas.

JavaScript es un lenguaje de programación posterior, creado a mediados de los años ‘90 por Brendan Eich, de la empresa Netscape. Su objetivo era dotar de interactividad a las páginas web visualizadas con su navegador de Internet, Netscape Navigator, el líder del mercado por aquella época. Su nombre en código durante el desarrollo del lenguaje era Mocha, y pensaban lanzarlo finalmente como LiveScript, aunque al final se acabó denominando JavaScript por la gran influencia en su sintaxis por parte del lenguaje Java, aunque las similitudes son únicamente estéticas. En la actualidad, además de ser el lenguaje utilizado casi en exclusiva para añadir interactividad a las páginas Web, JavaScript se encuentra integrado en otras muchas aplicaciones además de los navegadores: servidores, lenguajes de programación de propósito específico como Node.js o sistemas operativos como Windows.

Bien es cierto que la gente de Netscape intentó aprovechar el tirón de marketing que ofrecía Java en aquel momento, y usando la palabra "Java" en el nombre del nuevo lenguaje pretendían darle un halo de seriedad. Me imagino que, dada la confusión que generaron, se arrepintieron pronto de su decisión y de no haberle dejado el nombre de LiveScript.

Aparte de esa raíz común en el nombre, Java y JavaScript son lenguajes totalmente diferentes. He aquí algunos ejemplos importantes de sus muchas diferencias:

  • JavaScript tradicionalmente ha sido un lenguaje interpretado, y Java es compilado. Para entendernos, y dicho muy básicamente, los programas JavaScript son archivos de texto que pueden leer tanto los ordenadores como las personas y que se interpretan a medida que se leen para luego ejecutarlos, mientras que los de Java se compilan a un archivo especial optimizado para que lo lea un ordenador y lo ejecute. Podríamos entrar en detalles de que Java se compila a un lenguaje intermedio llamado bytecode que es interpretado por un ejecutar JIT que facilita que sea multiplataforma, pero no es el objeto de este artículo y quiero mantenerlo intencionadamente simple. Por otro lado, y abundando en lo mismo, en la actualidad mucho código JavaScript es compilado (por ejemplo el motor V8 de Chrome y Node.js compila a código nativo el código JavaScript y puede llegar a ser tan rápido como cualquier otro). Así que en la actualidad la distinción no es tan clara entrando en detalle, pero sí se puede afirmar que son de naturaleza diferente porque JavaScript no requiere una compilación explícita para ser ejecutado.
  • Java se depura en dos fases y JavaScript en una. Como con todos los lenguajes interpretados, en JavaScript solamente sabes si has cometido inadvertidamente un error de sintaxis cuando vas a ejecutar el programa (salvo que uses herramientas especializadas como Visual Studio o WebStorm, que interpretan el código en segundo plano). En Java sin embargo, primero se realiza la fase de compilación, en la que el compilador ya indica los posibles errores de sintaxis que existan. Luego al ejecutar podrían surgir errores de lógica o de otra índole. En JavaScript todos ellos se depuran al mismo tiempo, haciéndolo más complicado.
  • Java es un lenguaje orientado a objetos puro, pero JavaScript está basado en prototipos. En realidad JavaScript debe simular muchas de las características de orientación a objetos que se dan en la mayoría de los lenguajes. A cambio proporciona diversos paradigmas de programación (funcional, imperativo, dinámico y orientado a objetos) lo que lo convierte en un lenguaje tremendamente versátil. De hecho en JavaScript es posible cambiar la "base" de la que hereda una clase en cualquier momento, afectando a todas, cosa imposible en la mayoría de los lenguajes orientados a objetos.
  • Java es fuertemente tipado, y JavaScript es débilmente tipado. En Java todas las variables tienen un tipo determinado y una vez definidas no se pueden cambiar. En JavaScript una misma variable puede contener primero un texto, luego un número, luego una fecha o un objeto, etc... Esto es un arma de doble filo pues permite una gran flexibilidad a cambio de muchos posibles errores si no tenemos cuidado.
  • Java tiene ámbito por bloque y JavaScript lo tiene por función: el acceso a las variables depende de dónde las hayamos definido. JavaScript tiene algunas reglas que pueden despistar bastante a los programadores de otros lenguajes.
  • JavaScript tiene clausuras, Java las acaba de incorporar. Uno de los conceptos más importantes en la programación con JavaScript (y en otros lenguajes) son las clausuras. Java no las tuvo hasta la versión 8 aparecida hace muy poco tiempo, que añadió también las funciones lambda, para dar soporte al paradigma de programación funcional.
  • Las funciones en JavaScript son multi-argumento siempre. En Java es necesario indicarlo.
  • JavaScript es estándar, Java no. El control del lenguaje JavaScript lo lleva la organización sin ánimo de lucro European Computer Manufacturers Association (ECMA). De hecho su nombre oficial es ECMAScript, y está estandarizado. Por el contrario el control sobre Java lo tiene Oracle, una empresa privada que decide a su antojo lo que se hace con él.

En resumen, y para dejar bien clara la diferencia sin palabras técnicas, desmiento a continuación algunos falsos mitos:

  1. JavaScript NO es lo mismo que Java.
  2. JavaScript NO es un subconjunto de Java.
  3. JavaScript NO es una versión de Java para programar páginas web.
  4. JavaScript NO comparte prácticamente nada con Java. Si acaso la misma sintaxis que comparte con otros lenguajes como C, C++ o C#, y algún detalle más como algunos nombres de clases (Math o Date, por ejemplo), pero nada más.
  5. JavaScript NO es más fácil que Java. De hecho en algunas áreas concretas es más difícil de dominar.
  6. Si sabes programar en Java NO sabes programar en JavaScript. Y viceversa.
  7. JavaScript NO es solo un lenguaje para páginas web, al igual que Java no es un lenguaje solo para servidor.

Espero que esto sirva para aclararlo de una vez por todas :-)

funnyjavascript

José M. Alarcón Aguín Fundador de campusMVP, es ingeniero industrial y especialista en consultoría de empresa. Ha escrito diversos libros, habiendo publicado hasta la fecha cientos de artículos sobre informática e ingeniería en publicaciones especializadas. Microsoft lo ha reconocido como MVP (Most Valuable Professional) en desarrollo web desde el año 2004 hasta la actualidad. Puedes seguirlo en Twitter en @jm_alarcon o leer sus blog técnico o personal. Ver todos los posts de José M. Alarcón Aguín

Boletín campusMVP.es

Solo cosas útiles. Una vez al mes.

🚀 Únete a miles de desarrolladores

DATE DE ALTA

x No me interesa | x Ya soy suscriptor

La mejor formación online para desarrolladores como tú

Comentarios (22) -

hector gustavo vallejo espinosa
hector gustavo vallejo espinosa

es excelente, la labor que está haciendo no tenía ni idea de las diferencias de Java y JavaScript, me sirvió de mucho para mi conocimiento personal y para una tarea que debía de presentar en el sena, el cual no tarde en referenciarle la página, pues me encuentro estudiando ingeniería de sistemas en la universidad Cooperativa de Ibagué Tolima Colombia, por lo que me encuentro muy agradecido por usted señor JOSE MANUEL RINCÓN, de ante mano quisiera, claro con su aprobación me dé la oportunidad de seguir sus comentarios y enseñanzas.

Responder

José Manuel Alarcón
José Manuel Alarcón

Estupendo. Me alegro de que haya servido :-)

Responder

Juan Gonzalez
Juan Gonzalez

Con el debido respeto, como principiante en el ambito de la programacion, encuentro este articulo poco didactico ya que no solo no ha respondido a la pregunta formulada, sino que se ha enedado explicando cosas que solo un profesional como el sabe.
Muchas gracias por hacerme perder el tiempo.

Responder

José Manuel Alarcón
José Manuel Alarcón

¿¿De verdad?? :-O

Responder

Yo también soy principiante y estuvo muy claro lo que está escrito. Quizá haga falta releer. A pesar de que ya tiene tiempo la publicación, mi comentario servirá para alguna otra persona en el futuro.
Gracias por la información.

Responder

Amigo, que no te lo ha explicado?, quizás deberías dedicarte a otra cosa.

Responder

sinceramente pienso que no puede estar mas claro

Responder

Juan Carlos
Juan Carlos

Muchas gracias he aclarado mis dudas. De pronto tutorial de java en español?

Responder

José Manuel Alarcón
José Manuel Alarcón

Hola Juan Carlos:

Hemos lanzado hace poco un curso muy bueno sobre Java que parte de 0 y llega a un nivel alto: www.campusmvp.es/.../...a-plataforma-Java_231.aspx

Saludos.

Responder

jhonathan Garcia
jhonathan Garcia

Buen Articulo hermano.

Responder

Enrique Suárez
Enrique Suárez

Que tal buenas noches .
Leí el articulo , soy principiante de javascript ya que me gusta el diseño web, según el articulo javascript no tienen nada que ver con java.

¿Eso quiere decir que estoy aprendiendo un lenguaje totalmente nuevo?
¿cual es mas facil, java ó javascript ?

por cierto muy buen articulo , despejo algunas dudas que tenia

Responder

José Manuel Alarcón
José Manuel Alarcón

Hola:

Me alegro de que te haya servido el post.

No sé a qué te refieres con lo de un lenguaje "totalmente nuevo". Si te refieres a que es un lenguaje completamente diferente a Java: entonces sí. No es solo el lenguaje, es que Java además de un lenguaje es un Framework y es mucho más complejo (aquí tienes una buena descripción: www.campusmvp.es/.../...ones-implementaciones.aspx).

JavaScript es más fácil que Java. Lo fundamental se aprende enseguida, aunque tiene algunas partes complejas también que es necesaro dominar. el problema es que muchos se quedan en lo primero y no llegan a aprender nunca lo segundo (lo complejo), y eso es un grave error.

Cualquiera de los dos es una gran apuesta de futuro. Java se ejecuta en casi cualquier dispositivo (www.campusmvp.es/.../...sitivos-ejecutan-java.aspx) y JavaScript igual (www.campusmvp.es/.../...a-aprender-JavaScript.aspx), aunque para lo que más se usa es para desarrollo web tanto en cliente como en servidor.

Saludos!

Responder

Buenas tardes. Soy programador en java y estoy aprendiendo javaScript. Me gustaría saber a qué te refieres cuando dices "Lo difícil de  JavaScript". ¿Te refieres al DOM?

Saludos!

Responder

José Manuel Alarcón
José Manuel Alarcón

Hola Sergio:

Pues JavaScript tiene bastantes cosas un tanto liadas por su propia naturaleza: desde cosas fundamentales del propio lenguaje por carecer de tipado fuerte como las conversiones implícitas (que pueden llegar a hacer cosas muy raras), hasta cosas avanzadas de ECMAScript como los símbolos, sin olvidarnos de la herencia por prototipos, las clausuras y mil detalles más. Al final, como en casi todo, el problema suelen ser los detalles, y JavaScript de eso tiene miles.

Evidentemente para un programador experimentado en otro lenguaje resulta más fácil aunque al mismo tiempo hay cosas que despistan mucho porque son muy diferentes (como la POO tan sui-generis que tiene), pero para programadores noveles puede ser "duro" algunas veces.

Si te apetece puedes medir tus conocimientos fundamentales de JavaScript con este test gratuito:

https://go.campusmvp.es/testjs

Saludos!

Responder

Excelente explicación. Se te agradece.

Responder

Hola José Manuel,
tengo que decidir entre dos cursos, ya que se solapan y no puedo realizar ambos, y estoy en duda.. Uno es de JavaScript+ Angular y el otro de Java+Android..Qué me recomendarías? Cuál ves más interesante de cara al futuro?

Muchas gracias de antemano.
Un saludo.

Responder

José Manuel Alarcón
José Manuel Alarcón

Hola Álex:

Esta es una pregunta muy complicada de contestar porque es comparar categorías muy diferentes de lenguajes/plataformas.

Supongo que todo va a depender de a qué te quieras decidir realmente, porque tanto el desarrollo web como el desarrollo móvil tienen mucha demanda y se espera que lo sigan teniendo en medio-largo plazo.

Mi opinión siempre estará algo sesgada porque a mi lo que más me gusta es el desarrollo web. Pero para desarrollo web Front-End debes aprender bien muchas cosas: HTML, CSS, JavaScript, ECMAScript, algún framework como Angular y muchas herramientas específicas necesarias.

Pero para desarrollo móvil sobre Android hay que aprender también mucho: el lenguaje y la plataforma Java, frameworks específicos para hacer cosas, SQL (aunque solo sea para SQLite), las cuestiones específicas de Android (que son muchas)... Por otro lado solo podrías programar para Android, pero no para iOS...

En fin, lamento no poder ser mucho más claro y darte una respuesta clara y diáfana, pero es que es imposible porque depende de muchas cosas, gran parte de las cuales tienen que ver con tus intereses y circunstancias personales.

Yo l o que te diría es que aprendas lo que más te motive e interese a ti, y que lo aprendas bien, metiéndote a fondo. Por suerte hoy en la actualidad da más o menos igual en qué te especialices: hay muchísima demanda y trabajo  así que no tendrás problemas si lo aprendes en serio.

Saludos!

Responder

Muchísimas gracias por la respuesta y por tu tiempo José Manuel.

Saludos!

Responder

Pablo González
Pablo González

Cómo apunte me gustaría indiccar que JavaScript es no es un lenguaje intrepretado propiamente dicho. El motor de JavaScript compila el programa al vuelo e inmediatamente ejecuta el código compildado. Saludos!

Responder

José Manuel Alarcón
José Manuel Alarcón

Hola Pablo:

Tradicionalmente ha sido así, pero en la actualidad eso no es correcto del todo. De hecho la especificación ECMAScript deja sin determinar específicamente esto y aunque el lenguaje puede ser interpretado, también puede ser compilado. La mayoría de los motores de JavaScript de los navegadores, y específicamente V8 (el de Chrome y Node.js) compilan a código nativo el código JavaScript y pueden llegar a ser tan rápidos como cualquier otro lenguaje.

Digamos que la distinción en la actualidad no es tan clara.

Saludos.

Responder

Octavio  Marín
Octavio Marín

Hola... Gracias por la información...soy estudiante nuevo en la carrera de autorización y control industrial, cual de las dos formas  crees tú que es la que más se apega a esta carrera?...ojalá me saques de esa duda, me ayudaría mucho.
Saludos.

Responder

Al fin resuelvo esta duda que tengo desde el cole. Gracias man, saludos.

Responder

Agregar comentario

Los datos anteriores se utilizarán exclusivamente para permitirte hacer el comentario y, si lo seleccionas, notificarte de nuevos comentarios en este artículo, pero no se procesarán ni se utilizarán para ningún otro propósito. Lee nuestra política de privacidad.