1. Introducción a Java
Introducción a Java
Section titled “Introducción a Java”Java es uno de los lenguajes de programación más populares y ampliamente utilizados en el mundo. Desde su lanzamiento en 1995 por Sun Microsystems (ahora propiedad de Oracle), Java ha revolucionado el desarrollo de software con su filosofía “Write Once, Run Anywhere” (Escribe una vez, ejecuta en cualquier lugar).
1.1 ¿Qué es Java?
Section titled “1.1 ¿Qué es Java?”Java es un lenguaje de programación de alto nivel, orientado a objetos, con una sintaxis inspirada en C y C++, pero con un modelo de objetos más simple y eliminando herramientas de bajo nivel que suelen inducir a muchos errores, como la manipulación directa de punteros o memoria.
Arquitectura de Java
Section titled “Arquitectura de Java”La arquitectura de Java se basa en la Java Virtual Machine (JVM), que es el componente que permite la portabilidad del código Java entre diferentes plataformas.
- JVM (Java Virtual Machine): Máquina virtual que ejecuta el bytecode de Java.
- JRE (Java Runtime Environment): Contiene la JVM y las bibliotecas estándar necesarias para ejecutar aplicaciones Java.
- JDK (Java Development Kit): Incluye el JRE más herramientas de desarrollo como el compilador (javac).
- El código fuente Java (.java) se compila a bytecode (.class) usando el compilador javac.
- El bytecode es independiente de la plataforma y puede ser ejecutado en cualquier dispositivo que tenga una JVM.
- La JVM interpreta el bytecode y lo convierte en instrucciones específicas para el sistema operativo y hardware subyacente.
Ediciones de Java
Section titled “Ediciones de Java”Java se distribuye en diferentes ediciones, cada una orientada a un tipo específico de desarrollo:
-
Java SE (Standard Edition): Fundamental Base del lenguaje, incluye las APIs core y es utilizada para aplicaciones de escritorio y aplicaciones simples.
-
Java EE (Enterprise Edition): Avanzado Construida sobre Java SE, añade APIs para el desarrollo de aplicaciones empresariales a gran escala, como sistemas distribuidos y aplicaciones web multicapa.
-
Java ME (Micro Edition): Especializado Versión reducida de Java SE, diseñada para dispositivos con recursos limitados como teléfonos móviles y dispositivos embebidos.
-
Jakarta EE: Moderno Anteriormente conocida como Java EE, es la versión de código abierto de Java Enterprise Edition, ahora bajo la Fundación Eclipse.
1.2 Características principales
Section titled “1.2 Características principales”Java posee varias características que lo han convertido en uno de los lenguajes más populares y duraderos:
Orientado a Objetos
Section titled “Orientado a Objetos”Java es un lenguaje completamente orientado a objetos, donde casi todo se trata como un objeto con propiedades y comportamientos.
// Ejemplo de clase en Javapublic class Persona { // Atributos (propiedades) private String nombre; private int edad;
// Constructor public Persona(String nombre, int edad) { this.nombre = nombre; this.edad = edad; }
// Métodos (comportamientos) public void saludar() { System.out.println("Hola, mi nombre es " + nombre); }
// Getters y setters public String getNombre() { return nombre; }
public void setNombre(String nombre) { this.nombre = nombre; }
public int getEdad() { return edad; }
public void setEdad(int edad) { this.edad = edad; }}Independencia de la plataforma
Section titled “Independencia de la plataforma”El código Java se compila a bytecode que puede ejecutarse en cualquier dispositivo que tenga una JVM, lo que hace que Java sea verdaderamente multiplataforma.
Robusto y seguro
Section titled “Robusto y seguro”Java fue diseñado con un fuerte énfasis en la fiabilidad y seguridad:
- Gestión automática de memoria: Incluye un recolector de basura (garbage collector) que libera automáticamente la memoria no utilizada.
- Verificación estricta de tipos: Detecta errores en tiempo de compilación.
- Manejo de excepciones: Sistema robusto para manejar errores en tiempo de ejecución.
- Modelo de seguridad: Sandbox de seguridad que limita el acceso a recursos del sistema.
Multihilo
Section titled “Multihilo”Java soporta programación concurrente a través de su API de hilos, permitiendo ejecutar múltiples tareas simultáneamente.
// Ejemplo de hilo en Javapublic class MiHilo extends Thread { public void run() { System.out.println("El hilo está corriendo"); }
public static void main(String args[]) { MiHilo hilo = new MiHilo(); hilo.start(); // Inicia la ejecución del hilo }}Alto rendimiento
Section titled “Alto rendimiento”Aunque Java es un lenguaje interpretado, la JVM utiliza técnicas como la compilación Just-In-Time (JIT) para optimizar el rendimiento en tiempo de ejecución.
Distribuido
Section titled “Distribuido”Java incluye extensas bibliotecas para trabajar con protocolos como TCP/IP, HTTP y FTP, facilitando el desarrollo de aplicaciones distribuidas.
Dinámico
Section titled “Dinámico”Java está diseñado para adaptarse a un entorno en evolución, permitiendo la carga dinámica de clases y la reflexión.
1.3 Instalación del JDK y configuración del entorno
Section titled “1.3 Instalación del JDK y configuración del entorno”Para comenzar a desarrollar en Java, necesitas instalar el JDK (Java Development Kit). A continuación, se detallan los pasos para diferentes sistemas operativos:
- Descargar el JDK
Visita la página oficial de Oracle o adopta OpenJDK para descargar la última versión del JDK:
- Instalar el JDK
- Ejecuta el instalador descargado (.exe o .msi)
- Sigue las instrucciones del asistente de instalación
- Anota la ruta de instalación (por defecto suele ser algo como
C:\Program Files\Java\jdk-[version])
- Abre el archivo .dmg o .pkg descargado
- Sigue las instrucciones del instalador
- La instalación se realizará en
/Library/Java/JavaVirtualMachines/
Usando apt (Debian/Ubuntu):
Terminal window sudo apt updatesudo apt install openjdk-17-jdkUsando yum (Fedora/CentOS):
Terminal window sudo yum install java-17-openjdk-devel - Configurar las variables de entorno
- Abre el Panel de control > Sistema > Configuración avanzada del sistema
- Haz clic en “Variables de entorno”
- En “Variables del sistema”, crea o edita la variable JAVA_HOME con la ruta de instalación del JDK
- Edita la variable PATH y añade
%JAVA_HOME%\bin
Edita el archivo ~/.bash_profile o ~/.zshrc (dependiendo de tu shell):
Terminal window export JAVA_HOME=$(/usr/libexec/java_home)export PATH=$JAVA_HOME/bin:$PATHLuego ejecuta
source ~/.bash_profileosource ~/.zshrcEdita el archivo ~/.bashrc:
Terminal window export JAVA_HOME=/usr/lib/jvm/java-17-openjdkexport PATH=$JAVA_HOME/bin:$PATHLuego ejecuta
source ~/.bashrc - Verificar la instalación
Abre una terminal o línea de comandos y ejecuta:
Terminal window java -versionjavac -versionDeberías ver la versión de Java instalada en ambos comandos.
IDEs recomendados para Java
Section titled “IDEs recomendados para Java”Aunque puedes programar en Java con un simple editor de texto, los IDEs (Entornos de Desarrollo Integrado) facilitan enormemente el desarrollo:
Desarrollado por JetBrains, es uno de los IDEs más potentes y populares para Java.
- Versión Community: Gratuita y de código abierto
- Versión Ultimate: De pago, con características adicionales para desarrollo empresarial
- Descargar IntelliJ IDEA
IDE de código abierto muy popular, especialmente en entornos empresariales.
- Completamente gratuito
- Gran cantidad de plugins disponibles
- Descargar Eclipse
IDE oficial de Java antes de la adquisición por Oracle, ahora bajo Apache.
- Interfaz intuitiva, ideal para principiantes
- Buen soporte para aplicaciones JavaFX y Java EE
- Descargar NetBeans
Editor de código ligero con extensiones para desarrollo Java.
- Más ligero que los IDEs tradicionales
- Requiere instalar extensiones como “Extension Pack for Java”
- Descargar VS Code
1.4 Tu primer programa: “Hola Mundo”
Section titled “1.4 Tu primer programa: “Hola Mundo””Vamos a crear el clásico programa “Hola Mundo” para verificar que todo está correctamente configurado y entender la estructura básica de un programa Java.
- Crear un archivo fuente
Crea un archivo llamado
HolaMundo.javacon tu editor o IDE favorito. - Escribir el códigopublic class HolaMundo {// El método main es el punto de entrada de la aplicaciónpublic static void main(String[] args) {// Imprime un mensaje en la consolaSystem.out.println("¡Hola, Mundo!");}}
- Compilar el programa
Abre una terminal en el directorio donde guardaste el archivo y ejecuta:
Terminal window javac HolaMundo.javaEsto generará un archivo
HolaMundo.classque contiene el bytecode. - Ejecutar el programa
En la misma terminal, ejecuta:
Terminal window java HolaMundoDeberías ver el mensaje “¡Hola, Mundo!” en la consola.
Explicación del código
Section titled “Explicación del código”public class HolaMundoseguido de llaves: Define una clase pública llamada HolaMundo.public static void main(String[] args)seguido de llaves: Define el método principal que se ejecuta al iniciar el programa.System.out.println(“¡Hola, Mundo!”);: Imprime el texto en la consola.
public: Modificador de acceso que hace que la clase o método sea accesible desde cualquier parte.class: Define una clase en Java.static: Indica que el método pertenece a la clase, no a instancias de la clase.void: Indica que el método no devuelve ningún valor.main: Nombre del método principal que la JVM busca para iniciar la ejecución.
String[] args: Array de cadenas que contiene los argumentos pasados al programa desde la línea de comandos.
Ejemplo de uso de argumentos:
public class Argumentos { public static void main(String[] args) { System.out.println("Número de argumentos: " + args.length); for (int i = 0; i < args.length; i++) { System.out.println("Argumento " + i + ": " + args[i]); } }}Ejecución: java Argumentos uno dos tres
Variaciones del “Hola Mundo”
Section titled “Variaciones del “Hola Mundo””public class HolaMundoFormato { public static void main(String[] args) { String nombre = "Juan"; int edad = 25; System.out.printf("¡Hola, %s! Tienes %d años.", nombre, edad); }}import java.util.Scanner;
public class HolaMundoInteractivo { public static void main(String[] args) { Scanner scanner = new Scanner(System.in);
System.out.print("Por favor, introduce tu nombre: "); String nombre = scanner.nextLine();
System.out.println("¡Hola, " + nombre + "! Bienvenido/a a Java.");
scanner.close(); }}import javax.swing.JOptionPane;
public class HolaMundoGUI { public static void main(String[] args) { JOptionPane.showMessageDialog( null, "¡Hola, Mundo!", "Mi Primera Aplicación Java", JOptionPane.INFORMATION_MESSAGE ); }}