Contenidos
Curso rápido de Java para desarrolladores de Javascript
¡Hola! ¿Quieres tener empleo para siempre en tu vida? Entonces aprende Java, el lenguaje de programación que todos odian pero que, por alguna razón, se niega a morir.
Preparé este pequeño post para cualquiera que tenga interés en Java.
Las buenas noticias son: Como Java es un lenguaje basado en C, hay muchas similitudes entre JavaScript, C#, C y C++.
Las malas noticias son que estás aprendiendo Java.
Sin más preámbulos, hay que empezar.
Hola Mundo
public class Main {
public static void main(String[] args) {
System.out.println("Hello, world!");
}
}
Hay que revisar que está pasando en ese bloque de código:
/*
Estamos declarando una clase pública
*/
public class Main{}
/*
- Main es el punto de entrada de toda la aplicación, esto es como main() en lenguajes como C o Go.
- Static es una palabra reservada que indica que un miembro (variable, método, bloque o clase anidada)
pertenece a la clase en sí y no a una instancia específica de esa clase.
- Void representa el tipo que la función va a retornar; en este caso no retorna nada, por eso se usa void.
- String[] args representa el tipo de argumentos que tendrá la función, que será un array de strings.
*/
*/
public static void main(String[] args) {}
/*
System.out.println es simplemente el equivalennte a console.log()
*/
System.out.println("Hello, world!");
Variables y tipos
int age = 30;
double price = 19.99;
boolean canFly = true;
String name = "Superman";
Java es un lenguage estrictamente typeado -¿esa palabra existe?-, asi que siempre tienes que declarar el tipo.
No “let” o “const”; Java usa “final” en lugar de “const”.
final int maxScore = 100; // equivalente a const
Entonces como pueden imaginar, algo como esto es valido:
int age = 30;
age = 31;
We don’t need to re-write the variable type when changing its value.
Control Flow
if (admin) {
System.out.println("Hola!");
} else {
System.out.println("Adios");
}
for (int i = 0; i < 420; i++) {
System.out.println(i);
}
while (condition) {
//Haz algo
}
- Similar a JavaScript
- No “forEach” en arrays directamente, se usan loops.
Metodos
public static int add(int a, int b) {
return a + b;
}
- Debes declarar el tipo de retorno, que va antes del nombre de la función.
- “static” = como mencioné antes, significa que este método pertenece a la clase, no al objeto
Clases y objetos
La fundación de Java son las clases y los objectos.
public class Person {
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public void greet() {
System.out.println("Hello, my name is " + name);
}
}
Person p = new Person("Dennis Reynolds", 40);
p.greet();
- () => No hay arrow functions
- “this” se refiere a los campos de la instancia
- No hay código a nivel superior—todo debe estar dentro de una clase
Arrays y Lists
int[] numbers = {1, 2, 3}; // Fixed-size array
import java.util.ArrayList;
ArrayList<String> tvShows = new ArrayList<>();
list.add("Always Sunny");
list.add("The Office");
- “ArrayList” es un array dínamico como en JS.
- Se usa “.get(i)” y “.set(i, value)” para acceder/modificar los “ArrayList”
Package/paquetes (como modules)
package com.myapp.utils;
import java.util.ArrayList;
import com.myapp.utils.MyHelper;
Herencia
public class Camera {
public void record() {
System.out.println("Grabando en 1080p");
}
}
public class SonyFX30 extends Camera {
@Override
public void record() {
System.out.println("Granando en 4k");
}
}
- Se usa el decorador “@Override” cuando se sobreecriben métodos; en JS simplemente se reescribe el método.
Interfaces (como las interfaces de TypeScript)
public interface Drawable {
void draw();
}
public class Circle implements Drawable {
public void draw() {
System.out.println("Drawing a circle");
}
}
- Una clase puede “implementar” multiples interfaces
Conclusión
¡Los lenguajes basados en C son lo máximo!