En este capítulo vamos a hablar de Java, uno de los lenguajes pilares de la programación orientada a objetos, en el cual van a estar los ejemplos vistos en esta serie de capítulos.
Vamos a hablar de su historia, entender su funcionamiento, el por qué lo elegimos, y prepararte para escribir tu primer programa.
# Un Poco de Historia y Filosofía
Java fue concebido originalmente por Sun Microsystems en 1995 y desde entonces ha sido adoptado como uno de los lenguajes de programación más populares del mundo.
En 2010, Oracle Corporation adquirió Sun Microsystems, llevando a Java a nuevas alturas. Su lema “Escribe una vez, ejecuta en cualquier lugar†encapsula su filosofía de portabilidad y eficiencia, permitiendo que el mismo código funcione en diferentes plataformas sin modificaciones.
# ¿Por Qué Elegimos Java?
Java (también hay que incluir a C#) es uno de los lenguajes pioneros y más populares de programación orientada a objetos, en la actualidad sigue teniendo gran importancia y un alto uso dentro de la industria.
Java se elige por varias razones:
-
Portabilidad: Gracias a la JVM (Java Virtual Machine), el código Java es portable y puede ejecutarse en cualquier sistema operativo.
-
Orientado a Objetos: Promueve un diseño limpio y modular, facilitando el mantenimiento y la escalabilidad del software.
-
Seguridad y Robustez: Gestiona la memoria automáticamente y protege contra muchas vulnerabilidades comunes en otros lenguajes.
-
Rico Ecosistema: Amplia gama de bibliotecas y marcos de trabajo para casi cualquier tarea de programación imaginable.
# Compilado vs. Interpretado: El Papel de la JVM
Java es tanto compilado como interpretado, la JVM (Java Virtual Machine) es una maquina virtual que nos permite ejecutar código Java. Es un programa que se instala sobre el sistema operativo y corre nuestro programa.
Primero, el código fuente se compila en bytecode por el compilador Java, y luego, en tiempo de ejecución, la JVM interpreta y ejecuta este bytecode.
Esta doble etapa permite una verificación y optimización exhaustiva, lo que contribuye a la eficiencia y portabilidad de Java, ya que el código compilado es independiente del sistema operativo, es el mismo para todos porque ejecuta sobre la JVM.
La JVM es quien se encarga de interactuar con el Sistema Operativo.
# Instalación del JDK (Java Development Kit)
La JDK es un kit de desarrollo necesario para escribir y ejecutar programas Java. Incluye la JRE (Java Runtime Environment) y un conjunto de herramientas para desarrollar Java.
-
Paso 1: Descarga del JDK
Visita el sitio web oficial de Oracle o una distribución de OpenJDK y descarga la versión más reciente del JDK para tu sistema operativo.
-
Paso 2: Instalación
Ejecuta el instalador descargado y sigue las instrucciones. Asegúrate de seleccionar un PATH de instalación que recuerdes, ya que necesitarás referenciarlo más tarde.
-
Paso 3: Configuración del PATH
Para poder ejecutar los comandos de Java desde la línea de comandos, necesitas agregar la ubicación del binario de Java al PATH del sistema.
-
En Windows: Ve a Configuración del Sistema > Variables de Entorno y edita la variable de sistema ‘Path’ para incluir la ruta al binario de Java (ej.
C:\Program Files\Java\jdk-11.0.1\bin). -
En macOS/Linux: Edita tu archivo de perfil (.bash_profile, .bashrc, .zprofile, etc.) y añade
export PATH=/usr/lib/jvm/jdk-11.0.1/bin:$PATH, reemplazando la ruta con tu ruta de instalación específica.
-
En Windows: Ve a Configuración del Sistema > Variables de Entorno y edita la variable de sistema ‘Path’ para incluir la ruta al binario de Java (ej.
-
Paso 4: Verificación
Abre una terminal o línea de comandos y escribe
java -versionyjavac -version. Si la instalación fue exitosa, deberías ver las versiones instaladas del JRE y del compilador Java, respectivamente.
# IDE (Entorno de Desarrollo Integrado)
Una IDE te proporcionará una interfaz para escribir, depurar y ejecutar tu código. Algunos populares incluyen:
-
Eclipse: La IDE más usada por desarrolladores Java.
-
IntelliJ IDEA: Conocido por su ergonomía y características inteligentes.
-
NetBeans: Otro IDE gratuito y de código abierto.
Elige uno, descárgalo e instálalo desde su sitio web oficial.
# Sintaxis Java
Java es un lenguaje de programación rico y potente con muchos elementos en su sintaxis. A continuación, te presento los elementos básicos que necesitarás conocer para empezar a programar en Java.
1. Clases
Todo en Java está asociado con clases e interfaces. Una clase es un “modelo†para crear objetos (instancias específicas de la clase).
public class MiClase {
//Atributos, métodos, etc.
}
2. Métodos
Un método es un bloque de código que se ejecuta cuando se invoca. Un programa Java puede tener muchos métodos.
public void miMetodo(){
//Código para ejecutar
}
3. Variables
Las variables son contenedores para almacenar datos. En Java, cada variable debe ser declarada con un tipo de datos.
int miNumero = 5; //Variable de tipo entero
4. Tipos de Datos
Java es un lenguaje de programación fuertemente tipado. Algunos tipos básicos incluyen:
- -
int: Para enteros. - -
double: Para números decimales. - -
boolean: Para verdadero/falso. - -
char: Para caracteres individuales. - -
String: Para cadenas de texto.
5. Operadores
Java utiliza operadores para realizar operaciones en variables y valores. Algunos ejemplos comunes incluyen:
- -
+: Adición - -
-: Sustracción - -
*: Multiplicación - -
/: División - -
%: Módulo - -
==: Igual a - -
!=: No igual a
6. Control de Flujo
El control de flujo permite que tu programa tome decisiones y ejecute código de manera condicional.
If Statement:
if (condicion1) {
//código a ejecutar si la condición1 es verdadera
} else if (condicion2) {
//código a ejecutar si la condición2 es verdadera
} else if (condicion3) {
//código a ejecutar si la condición3 es verdadera
/// ...
} else {
//código a ejecutar si ninguna condición previa es verdadera
}
Switch Statement:
swirch (expresion) {
case x:
//código a ejecutar si expresion es igual a x (expresion == x)
break; //no sigue evaluando los otros casos
case y:
//código a ejecutar si expresion es igual a y (expresion == y)
break; //no sigue evaluando los otros casos
default:
//código a ejecutar si no se cumplen los casos anteriores
//también se ejecuta si no salió por algún break
}
7. Bucles
Los bucles se utilizan para ejecutar un bloque de código varias veces.
For Loop:
for (int i=0; i < 10; i++) {
//código a ejecutar en cada iteración
}
While Loop:
while (condicion) {
//código a ejecutar mientras la condición sea verdadera (true)
}
8. Arreglos
Los arreglos en Java son contenedores que almacenan múltiples elementos del mismo tipo.
int[] miArreglo = {1, 2, 3, 4, 5};
9. Comentarios
Los comentarios son utilizados para explicar el código y pueden ayudar cuando se revisa el código en el futuro. No son ejecutados por el programa.
- - Comentarios de una sola línea:
// Esto es un comentario - - Comentarios de varias líneas:
/* Esto es un comentario multilínea */
10. Acceso a Miembros y Modificadores de Acceso
- Acceso a miembros:
public,private, yprotecteddeterminan la visibilidad de clases, variables y métodos. - Modificadores no acceso: Como
static, que indica que un miembro pertenece a la clase en lugar de a una instancia de la clase.
11. Constructores
Un constructor es un método especial que se utiliza para inicializar objetos.
public class MiClase {
// atributos
// Constructor
public MiClase() {
// código para ejecutar durante la creación del objeto
}
}
12. Herencia
La herencia permite que una clase adquiera los campos y métodos de otra clase.
public class MiSubclase extends MiClase {
// Clase que hereda de mi clase
}
13. Interfaces y Clases Abstractas
Las interfaces y clases abstractas se utilizan para lograr la abstracción en Java.
Interface:
interface MiInterface {
public void miMetodo();
}
Clase Abstracta:
abstract class MiClase {
public abstract void miMetodo(); //método abstracto
}
14. Excepciones
Las excepciones son eventos que ocurren durante la ejecución del programa y alteran el flujo normal, se capturan mediante las sentencias try/catch
try {
// código que puede generar una excepción
} catch (ExceptionType1 e) {
// código para manejar la excepción
} catch (ExceptionType2 e) {
// código para manejar la excepción
// ...
} catch (ExceptionTypeN e) {
// código para manejar la excepción
}
15. Colecciones en Java
Las colecciones son estructuras de datos que se usan para almacenar y organizar múltiples elementos. Java proporciona un framework de colecciones robusto que permite trabajar con diferentes tipos de conjuntos de datos.
Framework de Colecciones
El framework de colecciones de Java brinda varias interfaces y clases para almacenar y manipular grupos de objetos. Estas interfaces y clases se encuentran principalmente en el paquete java.util.
Interfaces e implementaciones
Se declara la variable (o el atributo) con el tipo de la interfaz, y cuando se crea se le asigna un tipo concreto de implementación.
-
List: La interfaz más simple, una colección ordenada (lista) que puede contener elementos duplicados. Permite acceso posicional a los elementos.
- Ejemplo de implementación:
ArrayList,LinkedList. -
Set: Una interfaz de Conjunto. Esta colección no contiene elementos duplicados.
- Ejemplo de implementación:
HashSet,LinkedHashSet,TreeSet. -
Map: Interfaz tipo mapa (clave, valor). Este objeto mapea claves a valores. Una clave no puede duplicarse, pero puede tener uno o más valores.
- Ejemplo de implementación:
HashMap,LinkedHashMap,TreeMap. -
Queue: Una colección diseñada para operaciones de tipo FIFO (First-In-First-Out).
- Ejemplo de implementación:
PriorityQueue,LinkedList.
Generics
Las colecciones suelen utilizarse junto con Generics, que permiten definir colecciones con un tipo de datos específico. Por ejemplo, List<String> define una lista de elementos que son cadenas de texto.
Ejemplo de Uso de List
// nombres es de tipo List (Interfaz)
// al crearla le asigno un tipo concreto, ArrayList
List<String> nombres = new ArrayList<>();
nombres.add("Ana");
nombres.add("Luis");
// List permite elementos duplicados
nombres.add("Ana");
for (String nombre : nombres) {
System.out.println(nombre);
}
Ejemplo de Uso de Set
Set<String> nombres = new HashSet<>();
nombres.add("Ana");
nombres.add("Luis");
nombres.add("Ana");
// Set no permite elementos duplicados, no lo agregará
for (String nombre : nombres) {
System.out.println(nombre);
}
Ejemplo de Uso de Map
Map<String, Integer> edades = new HashMap<>();
edades.put("Ana", 25);
edades.put("Luis", 30);
edades.put("Ana", 28); // Las claves son únicas. Esto sobrescribe el valor de "Ana".
for (Map.Entry<String, Integer> entrada : edades.entrySet()) {
System.out.println(entrada.getKey() + ": " + entrada.getValue());
}
Ejemplo de Uso de Queue
Queue<String> cola = new LinkedList<>();
cola.offer("Primero");
cola.offer("Segundo");
cola.offer("Tercero");
while (!cola.isEmpty()) {
System.out.println(cola.poll());
}
Los elementos básicos de la sintaxis de Java mencionados aquí forman la columna vertebral de cualquier programa Java.
A lo largo de los capítulos iremos viendo qué significa cada uno.
# Tu Primer Programa Java: “Hola Mundoâ€
Una vez que hayas configurado tu entorno, es hora de escribir tu primer programa.
-
Paso 1: Crear un Nuevo Archivo
Abre tu IDE, crea un nuevo proyecto y luego un nuevo archivo llamado
HolaMundo.java. -
Paso 2: Escribe el Código
Copia el siguiente código en tu archivo.
public class HolaMundo { // Clase // public static void main es el Punto de entrada de todo programa public static void main(String[] args) { System.out.println("¡Hola, mundo!"); } } -
Paso 3: Compilar y Ejecutar
Utiliza las herramientas de tu IDE para compilar y ejecutar el programa. Deberías ver “¡Hola, mundo!†impreso en la salida.
# Entendiendo el Código
-
Clase:
public class HolaMundodefine una clase pública llamadaHolaMundo. En Java, todo código tiene que estar dentro de una clase. -
Método main:
public static void main(String[] args)define el método principal, el punto de entrada de cualquier programa Java. Cuando ejecutas el programa, el JVM llama a este método. -
Imprimir a Consola:
System.out.println("¡Hola, mundo!");imprime una línea de texto en la consola. Es una forma de mostrar datos al usuario.
# Resolución de Problemas Comunes
No te desanimes si te encuentras con errores, son parte del aprendizaje. Siempre analiza el error, probablemente sea alguno de los siguientes:
-
JDK Instalado Correctamente: Asegúrate de que tanto
javacomojavacestén disponibles en tu línea de comandos o terminal. -
Estructura del Código: Verifica que la estructura de tu código coincida exactamente con el ejemplo y que el nombre del archivo coincida con el nombre de la clase.
-
Configuración del IDE: Asegúrate de que tu IDE esté configurado para usar el JDK que instalaste.
-
“Googleaâ€: “googlear†es lo que evitará “reinventar la rueda“. La comunidad Java es muy grande y siempre dispuesta a ayudar, en sitios como Stack Overflow encontrarás muchos problemas comunes.
# Explorando Más Allá
Una vez que te sientas cómodo con los fundamentos, no te detengas. Java es muy potente.
Experimenta con conceptos más avanzados como hilos, colecciones y GUIs.
Sumérgete en marcos de trabajo como Spring para ver cómo Java se maneja en entornos empresariales.
# Conclusiones
Java no es solo un lenguaje, es una aventura en el mundo de la programación. Con cada línea de código, estás participando en una historia que ha sido escrita por millones de desarrolladores a lo largo de décadas.
Así que adelante, configura tu entorno, escribe tu código y sé parte de la comunidad global que sigue llevando a Java a nuevos horizontes.