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.
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.
- Oracle JDK: Descargar desde Oracle
- OpenJDK: Descargar desde 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
alPATH
.
- Añadir
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
- Editar el archivo
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
- Documentación oficial de Java: docs.oracle.com
Tutoriales de Java
Aprende Java con tutoriales de programación en Java.
Instalación De Java
Introducción Y Entorno
Configuración De Entorno Java
Introducción Y Entorno
Ecosistema Jakarta Ee De Java
Introducción Y Entorno
Tipos De Datos
Sintaxis
Variables
Sintaxis
Operadores
Sintaxis
Estructuras De Control
Sintaxis
Funciones
Sintaxis
Excepciones
Programación Orientada A Objetos
Clases Y Objetos
Programación Orientada A Objetos
Encapsulación
Programación Orientada A Objetos
Herencia
Programación Orientada A Objetos
Clases Abstractas
Programación Orientada A Objetos
Interfaces
Programación Orientada A Objetos
Sobrecarga De Métodos
Programación Orientada A Objetos
Polimorfismo
Programación Orientada A Objetos
La Clase Scanner
Programación Orientada A Objetos
Métodos De La Clase String
Programación Orientada A Objetos
Listas
Framework Collections
Conjuntos
Framework Collections
Mapas
Framework Collections
Funciones Lambda
Programación Funcional
Interfaz Funcional Consumer
Programación Funcional
Interfaz Funcional Predicate
Programación Funcional
Interfaz Funcional Supplier
Programación Funcional
Interfaz Funcional Function
Programación Funcional
Métodos Referenciados
Programación Funcional
Creación De Streams
Programación Funcional
Operaciones Intermedias Con Streams: Map()
Programación Funcional
Operaciones Intermedias Con Streams: Filter()
Programación Funcional
Operaciones Intermedias Con Streams: Distinct()
Programación Funcional
Operaciones Finales Con Streams: Collect()
Programación Funcional
Operaciones Finales Con Streams: Min Max
Programación Funcional
Operaciones Intermedias Con Streams: Flatmap()
Programación Funcional
Operaciones Intermedias Con Streams: Sorted()
Programación Funcional
Operaciones Finales Con Streams: Reduce()
Programación Funcional
Operaciones Finales Con Streams: Foreach()
Programación Funcional
Operaciones Finales Con Streams: Count()
Programación Funcional
Operaciones Finales Con Streams: Match
Programación Funcional
Api Optional
Programación Funcional
Api Java.nio 2
Entrada Y Salida (Io)
Api Java.time
Api Java.time
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.