¿Cuál es la diferencia entre Java y Javascript?

Esta es una pregunta que todos nos hicimos alguna vez, quizá cuando comenzamos a programar y escuchamos de estos 2 lenguajes de programación.

Es una de las dudas que seguirán existiendo siempre, gracias al juego de letras que una palabra contiene a la otra, nos hace creer, que tienen relación directa, como cuando se habla de Auto y Automóvil por ejemplo.

La verdad su relación solo tiene que ver con su historia y un poco de mercadotecnia.

Java es un lenguaje de programación que nació en 1991, creado para ser usado en el proyecto set-top-box por la empresa Sun Microsystems, un dispositivo receptor de señales analógicas de televisión. Su primer nombre fue Oak, luego Green y por ultimo quedo con el nombre de Java. Hay muchas historias sobre el origen del nombre Java que van desde las Iniciales de los diseñadores del lenguaje hasta la hipótesis de que es el nombre de un café que se vendía en una cafetería a la cual acudían los creadores del lenguaje (por eso el logotipo de la taza de café).

Resultado de imagen para java logo
Logo de Java

La propuesta del lenguaje Java era que funcionara en el dispositivo que fuera, sin importar su naturaleza: televisiones, lavadoras, computadoras etc, corriendo en una máquina virtual y permitiendo a los programadores desarrollar software en distintas plataformas.

En el año 2009 Oracle adquiere Sun Microsystem, y con ello, adquiere Java.

Java se describe como un lenguaje de programación Orientado a Objetos, compilado, fuertemente tipado y multiplataforma, y es en Java 8 cuando se le añade capacidad para programación funcional mediante expresiones Lambda.

El nombre de Javascript se dio quizá por un aspecto de mercadotecnia, en el año de 1995. ¿Recuerdan que había un navegador llamado Netscape? Pues este lenguaje agrego compatibilidad con Java. Ese mismo año nació Javascript, un lenguaje creado por Brendan Eich, un trabajador de Netscape. En un inicio Javascript tenía el nombre de Mocha, más tarde se llamó LiveScript, y por ultimo termino con el nombre Javascript. Curioso que el mismo año en el que Netscape agrego soporte a Java. Quizá se quiso aprovechar la bomba de Java para que los programadores aceptaran Javascript pensando que era una prolongación de Java.

Resultado de imagen para brendan eich
Brendan Eich

Javascript es un lenguaje de programación interpretado (Java es compilado), sigue el estándar EMAScript, se define como orientado a objetos basado en prototipos y débilmente tipado (Java es fuertemente tipado). Es decir, javascript es tan distinto de Java como lo es php de Java. Javascript comparte características a Java, pero son tan pocas que ni siquiera se parecen en sintaxis, paradigma, organización, arquitectura y funcionalidad.

Al parecer una campaña de mercadotecnia en el nombre hizo de Javascript ser lo que es ahora, quizá pudo haber terminado como VBScript si no hubiera cambiado su nombre para ser parecido a uno de los lenguajes fuertes del momento. Quizá, pero eso no quita que Javascript sea un buen lenguaje de programación, al igual que Java, pero distintos, tan distintos que su mayor relación es que un nombre de uno contiene al otro.

Pasar una función como parámetro en #javascript

Para los que aprendimos un lenguaje Orientado a Objetos antes que javascript algunas veces desconocemos la naturaleza dinámica de este lenguaje, y una de las cosas naturales es poder guardar una función en  una variable e igual enviarse esa función como parámetro.

Existen dos formas de hacerlo y la primera es haciendo una función anónima:


//creamos una función que recorre una lista
function recorreLista(funcionPasadaXParametro){

	//recorremos el arreglo/lista
	//utilizamos la palabra reservada this para referirnos al objeto que es dueño de este metodo.
	for(i=0;i<this.length;i++){

		//ejecutamos la función pasada como parametro, la cual se le envia el elemento actual
		funcionPasadaXParametro(this[i]);
	}

}

//creamos arreglo
arreglo=new Array(1,3,4,5);
//asignamos la funcion al metodo recorre
arreglo.recorre=recorreLista;

//ejecutamos la función pasandole una función anonima
arreglo.recorre(
				//FORMA 1 para pasar una función como paramétro
				//creamos la función anonima
				function(elemento){

					//mostramos el elemento actual
					alert(elemento)
				}
);

La segunda forma de pasar una función como parámetro, es pasando una función existente.


//creamos una función la cual enviaremos
function multiplicaX10(elemento){
	alert(elemento*10);
}

//FORMA 2 para pasar una función como parametro
arreglo.recorre(multiplicaX10);

Nota: Recuerden no poner los paréntesis cuando se pasa una función ya existente como parámetro, el hecho de poner los paréntesis ejecuta la función.