Curso de programación con Java

Java es el lenguaje de programación popular para aplicaciones robustas y escalables. Aprende a desarrollar software profesional con Java.

Aprende Java GRATIS y certifícate

Java es un lenguaje de programación orientado a objetos y una plataforma informática que fue desarrollado por Sun Microsystems en 1995. Es ampliamente utilizado para crear aplicaciones multiplataforma, desde aplicaciones móviles hasta sistemas empresariales robustos. Su filosofía "escribe una vez, ejecuta en cualquier lugar" permite que el código Java compilado se ejecute en cualquier dispositivo que tenga instalada la Máquina Virtual de Java (JVM).

¿Qué es Java?

Java es tanto un lenguaje de programación de alto nivel como una plataforma de software. Como lenguaje, es conocido por su sintaxis similar a C++, pero con menos complejidades y una gestión automática de memoria mediante recolección de basura. Como plataforma, proporciona un entorno para desarrollar y ejecutar programas Java, incluyendo bibliotecas estándar y herramientas de desarrollo.

Características principales de Java

  • Orientado a objetos: Facilita el modelado de sistemas complejos mediante clases y objetos.
  • Multiplataforma: El código Java se compila en bytecode, que puede ejecutarse en cualquier JVM independientemente del sistema operativo.
  • Gestión automática de memoria: El recolector de basura se encarga de liberar memoria de objetos que ya no se utilizan.
  • Seguro y robusto: Incluye características que evitan errores comunes y proporciona un entorno de ejecución seguro.
  • Multihilo: Soporta programación concurrente para mejorar el rendimiento de las aplicaciones.

Instalación y configuración

Descarga del JDK

Para desarrollar en Java, es necesario instalar el Java Development Kit (JDK). Se puede descargar desde el sitio oficial de Oracle o utilizar distribuciones de código abierto como OpenJDK.

Configuración del entorno

Después de instalar el JDK, es recomendable configurar las variables de entorno:

  • En Windows:

    • Añadir JAVA_HOME apuntando al directorio de instalación del JDK.
    • Agregar %JAVA_HOME%\bin al PATH.
  • En Linux y macOS:

    • Editar el archivo .bashrc o .bash_profile y añadir:
      export JAVA_HOME=/ruta/al/jdk
      export PATH=$JAVA_HOME/bin:$PATH
      

Sintaxis básica

Estructura de un programa Java

Un programa Java básico consiste en una clase pública con un método main:

public class HolaMundo {
    public static void main(String[] args) {
        System.out.println("¡Hola, mundo!");
    }
}

Para compilar y ejecutar:

javac HolaMundo.java
java HolaMundo

Variables y tipos de datos

Java es un lenguaje de tipado estático, por lo que es necesario declarar el tipo de las variables.

Tipos primitivos

  • Enteros: byte, short, int, long
  • Punto flotante: float, double
  • Carácter: char
  • Booleano: boolean

Ejemplo:

int edad = 30;
double salario = 2500.50;
char inicial = 'A';
boolean esActivo = true;

Tipos no primitivos

  • Clases: String, Integer, Double, etc.
  • Arreglos: Estructuras que almacenan múltiples valores del mismo tipo.

Ejemplo:

String nombre = "Ana";
int[] numeros = {1, 2, 3, 4, 5};

Operadores

Aritméticos

  • Suma: +
  • Resta: -
  • Multiplicación: *
  • División: /
  • Módulo: %

Ejemplo:

int resultado = 10 + 5;

Relacionales

  • Mayor que: >
  • Menor que: <
  • Igual a: ==
  • Diferente de: !=
  • Mayor o igual que: >=
  • Menor o igual que: <=

Lógicos

  • AND: &&
  • OR: ||
  • NOT: !

Estructuras de control

Condicionales

If-else

if (edad >= 18) {
    System.out.println("Eres mayor de edad.");
} else {
    System.out.println("Eres menor de edad.");
}

Switch

switch (dia) {
    case 1:
        System.out.println("Lunes");
        break;
    case 2:
        System.out.println("Martes");
        break;
    // ...
    default:
        System.out.println("Día no válido");
}

Bucles

For

for (int i = 0; i < 10; i++) {
    System.out.println("Iteración: " + i);
}

While

int i = 0;
while (i < 10) {
    System.out.println("Iteración: " + i);
    i++;
}

Do-while

int i = 0;
do {
    System.out.println("Iteración: " + i);
    i++;
} while (i < 10);

Programación orientada a objetos en Java

Clases y objetos

Una clase es una plantilla para crear objetos. Los objetos son instancias de clases.

Definición de una clase

public class Persona {
    String nombre;
    int edad;

    public void saludar() {
        System.out.println("Hola, me llamo " + nombre);
    }
}

Creación de un objeto

Persona persona = new Persona();
persona.nombre = "Luis";
persona.edad = 25;
persona.saludar();

Encapsulación

Consiste en ocultar los detalles internos de una clase y exponer solo lo necesario.

public class CuentaBancaria {
    private double saldo;

    public void depositar(double monto) {
        saldo += monto;
    }

    public double obtenerSaldo() {
        return saldo;
    }
}

Herencia

Permite que una clase herede atributos y métodos de otra.

public class Animal {
    public void comer() {
        System.out.println("El animal está comiendo");
    }
}

public class Perro extends Animal {
    public void ladrar() {
        System.out.println("El perro está ladrando");
    }
}

Polimorfismo

Una misma acción puede tener diferentes comportamientos según el objeto.

public class Ave extends Animal {
    @Override
    public void comer() {
        System.out.println("El ave está picoteando");
    }
}

Clases abstractas e interfaces

Clases abstractas

No pueden ser instanciadas y pueden contener métodos abstractos.

public abstract class Figura {
    public abstract double calcularArea();
}

Interfaces

Definen un conjunto de métodos que una clase debe implementar.

public interface Volador {
    void volar();
}

public class Pajaro implements Volador {
    @Override
    public void volar() {
        System.out.println("El pájaro está volando");
    }
}

Manejo de excepciones

Las excepciones manejan errores en tiempo de ejecución.

try {
    int division = 10 / 0;
} catch (ArithmeticException e) {
    System.out.println("Error: " + e.getMessage());
} finally {
    System.out.println("Bloque finally ejecutado");
}

Colecciones en Java

El framework de colecciones proporciona estructuras de datos como listas, conjuntos y mapas.

Listas

List<String> lista = new ArrayList<>();
lista.add("Elemento 1");
lista.add("Elemento 2");

Conjuntos

Set<Integer> conjunto = new HashSet<>();
conjunto.add(1);
conjunto.add(2);

Mapas

Map<String, Integer> mapa = new HashMap<>();
mapa.put("clave1", 100);
mapa.put("clave2", 200);

Entrada y salida (I/O)

Java proporciona clases para manejar archivos y flujos de datos.

try (BufferedReader br = new BufferedReader(new FileReader("archivo.txt"))) {
    String linea;
    while ((linea = br.readLine()) != null) {
        System.out.println(linea);
    }
} catch (IOException e) {
    e.printStackTrace();
}

Multihilo

Permite ejecutar varias tareas simultáneamente.

Creación de un hilo mediante Runnable

public class MiHilo implements Runnable {
    @Override
    public void run() {
        System.out.println("El hilo está corriendo");
    }
}

Thread hilo = new Thread(new MiHilo());
hilo.start();

Uso de la clase Thread

public class MiHilo extends Thread {
    @Override
    public void run() {
        System.out.println("El hilo está corriendo");
    }
}

MiHilo hilo = new MiHilo();
hilo.start();

Java Standard Library

Incluye una amplia gama de paquetes y clases útiles.

  • java.lang: Clases básicas como String, Math, Object.
  • java.util: Colecciones, fechas, utilidades.
  • java.io: Entrada y salida.
  • java.net: Operaciones de red.
  • java.sql: Acceso a bases de datos.

Herramientas de desarrollo (IDEs)

IntelliJ IDEA

IDE potente con características avanzadas.

Eclipse

Un entorno de desarrollo integrado popular y extensible.

NetBeans

IDE oficial patrocinado por Oracle.

Buenas prácticas en Java

  • Nombrado consistente: Usar convenciones de nomenclatura estándar.
  • Comentarios significativos: Añadir comentarios cuando sea necesario.
  • Gestión de excepciones adecuada: Manejar excepciones de forma efectiva.
  • Código modular: Dividir el código en métodos y clases lógicas.
  • Evitar código duplicado: Reutilizar código mediante herencia y composición.

Recursos adicionales

Aprende Java GRATIS online

Tutoriales de Java

Aprende Java con tutoriales de programación en Java.

Ejercicios de programación de Java

Evalúa tus conocimientos en Java con ejercicios de programación Java de tipo Test, Puzzle, Código y Proyecto con VSCode.

Tipo de tecnología

Lenguaje

Categoría laboral

Backend

Año de lanzamiento

1995

Developers

James Gosling y Sun Microsystems

Todos los módulos del curso de Java

Ver todos los módulos de Java

Otras tecnologías

Acceder a todas las tecnologías