32

Java para JavaScript Developers: ¡Cómo superar el miedo a Java!

217078Puntos

hace 5 años

Spoiler: No hay ningún secreto.

La manera más efectiva de conocer nuevas herramientas y distintas maneras de pensar es aprendiendo nuevos lenguajes. Al mismo tiempo, esto nos ayuda a valorar el o los lenguajes que conocíamos antes.

Mi lenguaje favorito es JavaScript. Fui “obligado” a aprender un poco de PHP, pero no me gusta mucho. Eso sí, Laravel es extraordinario. Python y Ruby sí me encantan y quiero estudiarlos más. Programar Videojuegos es lo más divertido que existe y por eso tomé el Curso de C# para Videojuegos, aunque debo admitir que me encantó Unity, no tanto C#. Después, para mi sorpresa, seguí con el Curso de Introducción a C++ porque el proyecto del curso también es crear un videojuego para consolas (terminal de comandos).

De todos los cursos y lenguajes he aprendido muchísimos conceptos que son útiles para casi cualquier entorno de desarrollo, incluso en JavaScript.

Ahora es el turno de Java. Un lenguaje muy interesante, pero que le tenía mucho miedo, sobre todo por la mala fama de que el primer y más sencillo “Hello, World” son muchísimas líneas de código:

Hello, World

¡Pero sin miedo! Vamos a descubrir todos los mitos de Java, sus diferencias con JavaScript y, lo más interesante, sus similitudes. ¡Empezamos!

¿Qué no es tan diferente?

Java y JavaScript comparten algunas similitudes:

Las variables

¡No te emociones!

Java es un lenguaje tipado, esto quiere decir que debemos definir el tipo de dato de cada variable. Lo que pasa es que, a partir de Java 10, podemos usar la palabra reservada var para que Java analice el tipo de datos y se lo asigne a la variable automáticamente.

// Java 8int x = 10; // números enterosdouble x = 0.50; // números con decimaleschar letter= ‘A’ // Un solo carácter

String text = “Hello!” // Texto (tan largo como quieras)// Java 10

var x = 10; // números enteros

var x = 0.50; // números con decimales

var letter = ‘A’ // Un solo carácter

var text = “Hello!” // Texto (tan largo como quieras)

Recuerda que Java 8 es la versión más usada de Java hasta el momento y esta característica solo funciona a partir de la versión 10. Tampoco te confundas, Java sigue siendo un lenguaje tipado, las variables siguen teniendo que respetar un solo tipo de dato, pero eso lo vamos a analizar un poco más adelante.

Los comentarios

Jeje, yo se, no es tan importante. Pero los comentarios de Java son iguales a los de JavaScript:

// Esto es un comentario de una sola líneaint x = 1; // esto también es un comentario/*
 * Esto es un comentario
 * con más de una línea
 */

Los ciclos y condicionales

Encuentra las diferencias:

// Javafor (var i = 0; i < 10; i++) {
    if (array[i] == null) {
      var item = "Texto" + i;
      array[i] = item;
    }
      
    System.out.println(array[i]);
  }
}
// JavaScriptfor (var i = 0; i < 10; i++) {
  if (array[i] == null) {
      var item = "Texto" + i
      array[i] = item
  }

  console.log(array[i])
}

¿No es hermoso? ¡NO HAY NINGUNA DIFERENCIA! Los ciclos funcionan igual (de hecho, en todos los lenguajes funcionan igual), lo mismo los condicionales… Es precioso…

Diferente pero tampooooooco tanto

Clases y funciones

Las clases son casi iguales en Java y JavaScript. La única diferencia es que debes especificar si el código de tu clase se puede usar desde otros archivos o solo desde el mismo donde fueron definidas.

Yo sé, esto es muy raro si no conoces tanto los lenguajes tipados. Pero solo es cuestión de acostumbrarse, nada del otro mundo:

// JavaScriptclassMiPrimerClase{
  // ...
}
// JavapublicclassMiPrimerClase{
  // ...
}

Y si esto no te gusta, mucho menos te gustarán las funciones. No solo debes especificar si tus métodos son públicos o privados, también debes definir qué tipo de dato vas a devolver (sí, con el return):

// JavaScriptclassMiPrimerClase{
  functionmiPrimerMetodo() {
    return ‘Strings’ || intNumber || array // puedes devolver cualquier cosa
  }
}
// JavapublicclassMiPrimerClase{
  publicint function miPrimerMetodo(){
    return “String”; // ERROR!return array; // ERROR!return intNumber; // OK!
  }
}

¡Ojo! Aunque en Java estamos obligados a “limitar” las posibilidades de cada Clase o Función, en JavaScript NO tenemos ni la posibilidad de escribir código que no sea público para el resto de archivos y usuarios de nuestra aplicación.

¿O sí? Les dejo la duda: JavaScript private methods.

¿Qué SÍ es muy diferente?

Java es un lenguaje compilado y NO corre en el navegador

Java tiene dos versiones: Standard Edition y Enterprise Edition. La primera nos permite construir aplicaciones de escritorio y terminal (consola). La segunda nos ayuda a construir aplicaciones que corren en el servidor.

¡Pero eso no es todo!

Java puede funcionar en cualquier dispositivo o sistema operativo gracias a que es un lenguaje compilado que, además, pasa por una “segunda compilación” en lo que conocemos como JVM (Java Virtual Machine), aquí es donde sucede “la magia” para que nuestras aplicaciones funcionen donde sea.

JavaScript es el único lenguaje de programación que corre en el navegador. Todo esto cambia con la futura llegada de Web Assembly, por supuesto. Pero ignorando eso por un momento, no es lo mismo que JavaScript corra nativamente en prácticamente cualquier dispositivo a que Java pueda compilar a todas las diferentes versiones de estos dispositivos.

Los punto y coma no son opcionales

Los punto y coma son opcionales en JavaScript. Pero no lo son en lenguajes como Java, PHP o C++ (en este último son incluso más raros de lo normal).

Esto es una opinión de personal: me gusta poner los punto y coma SOLO cuando es opcional, cuando sé que puedo no ponerlos y no va a pasar nada. En cambio, si tendremos un error diferente e inentendible por cada punto y coma que no pongamos, me cuesta ponerlos, incluso lo olvido.

Arrays

Los arrays en java NO son en lo más mínimo parecidos a los arrays en JavaScript. En Java las listas solo pueden guardar elementos de un mismo tipo de dato, mientras que en JavaScript pueden guardar lo que sea.

También hay muchas limitantes por tener que definir la cantidad de elementos que queremos guardar. En JavaScript los arrays pueden guardar los elementos que necesites y los que vas a necesitar después. En Java debes definir la cantidad máxima de elementos desde un principio.

Esta es mi opinión: no me gustan los arrays en Java.

// JavaScriptconst lista = [“String”, 12, 15.15, otrosArrays, objetos, literalmenteLoQueSea];
// Java

TipoDeDato[] nombreDeLaVariable = new TipoDeDato[capacidadMáximaDeElementos];

nombreDeLaVariable[0] = “”;

Cambiar el tipo de dato de las variables es… muy diferente…

En JavaScript podemos definir que la variable patito sea igual a 10, lo que significa que el tipo de dato de patito es int. Lo interesante es que patito puede convertirse en lo que tú quieras: Strings, número con decimales, un array, objeto, etc. Pero todo esto cambia si programamos con Java.

Por defecto, Java puede intentar ayudarnos a convertir los resultados de una operación entre variables de distintos tipos de dato, pero esto es solo una estimación, no podemos esperar resultados exactos.

Por ejemplo:

int a = 30;

int b = 12;

a / b; // 2!!!!!!!!!!

Afortunadamente, podemos realizar casteo en el resultado de la operación entre nuestras variables para obtener los resultados correctos:

int a = 30;
int b = 12;

(double) a / b; // 2.5!!!!!!!!

Estos dilemas todavía me sacan algunos dolores de cabeza, pero piensa que, en este ejemplo, no tendremos problemas de ningún tipo si especificamos desde un principio que ambas variables, las que vamos a dividir, son declaradas de tipo double:

double a = 30;

double b = 12;

a / b; // 2.5!!!!!!!!

Licencias

¡Odio las licencias! ¡Te odio Java! Pinche Oracle sin…

Sí. Java cobra licencia a partir de la versión 11, que todavía no es la versión más popular de Java (¿adivinas por qué?), pero no durará mucho hasta que sea la más popular, ya que la versión 8 no tendrá mantenimiento a partir del 2020 a menos que (adivina) pagues una licencia.

Esto significa que tarde o temprano vamos a tener que pagar por usar Java en un ambiente de producción. Afortunadamente, OpenJDK es una versión gratis y open source que podemos usar gracias a la grandiosa comunidad de este lenguaje.

¡Amo el Open Source! ¡Te amo Java! ¡Te amo Open JDK! ¡Viva la comunidad!

Conclusiones

¡Te invito a que estudies otros lenguajes de programación! De hecho, también te invito a que estudies otros conceptos y metodologías, incluso si no parecen tener mucha relación con la programación.

Y en otras noticias, pero no por eso menos importantes, te invito a tomar el [Curso Básico de Java SE] para estudiar a profundidad lo que leíste en este blogpost (solo que explicado por una experta) y muchas cosas más.

#NuncaParesDeAprender 🤓💚

Juan
Juan
juandc

217078Puntos

hace 5 años

Todas sus entradas
Escribe tu comentario
+ 2
Ordenar por:
3
14235Puntos
5 años

excelente! yo empece con borland pascal en 2005 y guardaba los programas en disquetes que muchas veces me dejaron en un brillante null… saludos de otro venezolano en chile!

2
16011Puntos
5 años

Tome su like buen hombre, creo que si me ha servido para perderle el miedo un poco a Java. Yo empecé programando en Python y luego en C++

2
7298Puntos
5 años

Yo empecé con Java y desde ahí que me he enamorado de la programación jaja
Saludos desde Chile

2
3 años

Enel camino de un desarrollador de software, es necesario que aprendas otros lenguajes, porque cada lenguaje es increíble a su manera. Y java es muy seguro y aparte que corre en cualquier sistema o dispositivo. Muy buen blog