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.
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.
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:
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.
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.
Paso 4: Verificación: Abre una terminal o línea de comandos y escribe java -version y javac -version. Si la instalación fue exitosa, deberías ver las versiones instaladas del JRE y del compilador Java, respectivamente.
Una IDE te proporcionará una interfaz para escribir, depurar y ejecutar tu código. Algunos populares incluyen:
Elige uno, descárgalo e instálalo desde su sitio web oficial.
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.
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.
}
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
}
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
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.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 aEl control de flujo permite que tu programa tome decisiones y ejecute código de manera condicional.
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
}
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
}
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)
}
Los arreglos en Java son contenedores que almacenan múltiples elementos del mismo tipo.
int[] miArreglo = {1, 2, 3, 4, 5};
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.
// Esto es un comentario/* Esto es un comentario multilínea */Acceso a miembros: public, private, y protected determinan 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.
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
}
}
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
}
Las interfaces y clases abstractas se utilizan para lograr la abstracción en Java.
Interface:
interface MiInterface {
public void miMetodo();
}
abstract class MiClase {
public abstract void miMetodo(); //método abstracto
}
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
}
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.
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.
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.
ArrayList, LinkedList.Set: Una interfaz de Conjunto. Esta colección no contiene elementos duplicados.
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.
HashMap, LinkedHashMap, TreeMap.Queue: Una colección diseñada para operaciones de tipo FIFO (First-In-First-Out).
PriorityQueue, LinkedList.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.
// 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);
}
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);
}
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());
}
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.
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.
Clase: public class HolaMundo define una clase pública llamada HolaMundo. 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.
No te desanimes si te encuentras con errores, son parte del aprendizaje. Siempre analiza el error, probablemente sea alguno de los siguientes:
java como javac estén disponibles en tu línea de comandos o terminal.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.
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.