1. Libros y videos
  2. Java
  3. Presentación
Extrait - Java Los fundamentos del lenguaje (con ejercicios prácticos corregidos ) (2ª edición)
Extractos del libro
Java Los fundamentos del lenguaje (con ejercicios prácticos corregidos ) (2ª edición) Volver a la página de compra del libro

Presentación

Introducción

Java es ante todo un lenguaje orientado a objetos, diseñado para escribir programas informáticos.

Java también es una plataforma de desarrollo completa. Incluye un conjunto de librerías, especificaciones formalizadas por las JSR (Java Specification Requests), que definen los diferentes API (Application Programming Interface o interfaces de programación de aplicaciones en español), así como herramientas para compilar, ejecutar y documentar los programas.

Las funcionalidades del lenguaje Java se reúnen en lo que se denomina JDK (Java Development Kit), que proporciona todos los recursos necesarios para el desarrollo de aplicaciones Java. Las evoluciones de la plataforma se gestionan mediante propuestas de la comunidad Java, como las JEP (JDK Enhancement Proposal), que permiten introducir nuevas funcionalidades o mejorar las existentes.

En realidad, existen varias plataformas.

La plataforma básica se denomina Java SE (Java Standard Edition), como se ha indicado anteriormente. Responde a la mayoría de las necesidades.

La segunda, Java EE (Java Enterprise Edition), está destinada al desarrollo de aplicaciones distribuidas, en particular, web. Su objetivo es permitir la creación de aplicaciones distribuidas, y de manera específica de aplicaciones web. Esta plataforma se basa en la plataforma Java SE, pero también en software de terceros, los servidores de aplicaciones....

Historia

1. ¿Por qué Java?

Bill Joy, ingeniero de Sun Microsystems, y su equipo de investigadores trabajaban en el proyecto "Green", que consistía en desarrollar aplicaciones destinadas a una amplia variedad de dispositivos y sistemas integrados (en particular, teléfonos móviles y televisores interactivos).

Convencidos de las ventajas de la programación orientada a objetos (POO), decidieron desarrollar con el lenguaje C++, probado por su rendimiento.

Sin embargo, en el marco de este tipo de proyecto, C++ pronto reveló sus limitaciones. De hecho, surgieron numerosos problemas de incompatibilidad con las diferentes arquitecturas de hardware (procesadores y tamaño de memoria) y sistemas operativos, así como en la adaptación de la interfaz gráfica de las aplicaciones y la interconexión entre los diferentes dispositivos.

Ante estas dificultades, el equipo decidió crear un nuevo lenguaje acompañado de su propia plataforma de desarrollo. Dos desarrolladores de Sun Microsystems, James Gosling y Patrick Naughton, se pusieron manos a la obra.

La creación de este lenguaje y esta plataforma se inspiró en las interesantes funcionalidades que ofrecen otros lenguajes como C++, Objective C, Perl, etc. El resultado de este trabajo es una plataforma, acompañada de un lenguaje, perfectamente adaptada al desarrollo de aplicaciones seguras, distribuidas y portátiles. Estas aplicaciones pueden funcionar tanto en una gran variedad de dispositivos y sistemas integrados conectados en red, como en Internet (clientes ligeros) o en estaciones...

Características del lenguaje Java

Java ha sido diseñado para responder a las necesidades del desarrollo de software moderno. Sus principales características lo convierten en un lenguaje potente, fiable y accesible, adaptado a numerosos contextos (aplicaciones empresariales, móviles, integradas, etc.).

  • Sencillo: Java elimina los aspectos complejos y fuentes de errores que se encuentran en los lenguajes C/C++, como la gestión de punteros o la instrucción goto. La sintaxis es clara, la gestión de la memoria es automática (gracias al recolector de basura) y los tipos de datos son limitados pero coherentes.

  • Orientado a objetos: todo (o casi todo) es un objeto en Java. Este enfoque permite estructurar el código, hacerlo modular, reutilizable y fácil de mantener. Incluso los tipos primitivos se pueden encapsular en objetos gracias a las clases denominadas "clases envolventes" o "wrapperclasses" (en inglés).

  • Distribuido: Java integra herramientas para el desarrollo de aplicaciones distribuidas. Históricamente con RMI (Remote Method Invocation o invocación de métodos remotos, un mecanismo que permite llamar a métodos en objetos ubicados en otras máquinas a través de la red), hoy en día sobre todo a través de API REST, es fácil intercambiar datos en una red.

  • Interpretado e independiente de las arquitecturas: el código...

La plataforma Java SE

La plataforma Java SE (en sus diferentes aspectos) se puede representar de forma sintética mediante el siguiente esquema:

images/cap1_pag7.png

La plataforma instalada en el puesto de un desarrollador es el JDK. Proporciona APIs específicas, pero sobre todo herramientas de ayuda al desarrollo, como el compilador javac. El JDK también incluye el JRE.

La plataforma instalada en el equipo de destino (aquél en el que se debe ejecutar el programa) es el JRE. Ofrece el API Java, así como las herramientas necesarias para el entorno de ejecución, como la herramienta java, que permite iniciar un programa Java. La JVM forma parte integrante del JRE: garantiza la ejecución efectiva del programa pasado como parámetro a la herramienta java.

Las siguientes secciones presentan con más detalle los diferentes aspectos de la plataforma.

1. La máquina virtual Java (JVM)

La máquina virtual constituye la base de la plataforma Java; es indispensable para la ejecución de programas Java. La JVM está disponible para muchos tipos de ordenadores y sistemas operativos.

La máquina virtual Java asume varias responsabilidades esenciales:

  • La carga de las clases y del código byte que contienen: cuando un programa crea objetos o invoca miembros de una clase, es la JVM la que se encarga de cargar el código byte correspondiente para interpretarlo.

  • La gestión de la memoria: la JVM se encarga por completo de la gestión de las referencias a los objetos. Esto permite, en particular, la liberación automática de la memoria, gracias al recolector de basura (garbage collector), tan pronto como un objeto deja de estar referenciado en el programa (es decir, cuando ninguna variable apunta a él).

  • Seguridad: se trata de uno de los aspectos más complejos de los que se encarga la JVM. Al cargar el programa, comprueba que no se acceda a memoria no inicializada, que no se realice ninguna conversión de tipo ilegal y que no se manipulen directamente los punteros de memoria.

  • Interconexión con código nativo (por ejemplo, código C): muchas API básicas de Java se basan en código nativo proporcionado con el JRE para interactuar con el sistema host. Este mecanismo también se puede utilizar para acceder a determinados dispositivos o funciones que no están disponibles o que son difíciles...

Versiones y lanzamientos

Existen dos implementaciones de la plataforma Java SE: Oracle JDK (también llamada Oracle Java SE) y OpenJDK. La principal diferencia entre ambas es que Oracle JDK incluye herramientas avanzadas y asistencia técnica dedicada, accesible mediante una suscripción mensual.

Sin embargo, gracias a la nueva licencia Oracle No-Fee Terms and Conditions (NFTC), ahora es posible utilizar Oracle JDK de forma gratuita, bajo ciertas condiciones.

Este cambio supone una ruptura con la política vigente desde Java 11, en la que el uso gratuito de Oracle JDK se limitaba a actividades de prototipado, pruebas o aprendizaje. Cualquier uso profesional requería entonces una suscripción de pago.

Las funcionalidades del lenguaje son idénticas en ambas plataformas. La implementación de Oracle JDK se basa en la de OpenJDK.

Las versiones de Java se publican cada seis meses como parte de un ciclo de publicación rápido, destinado a proporcionar nuevas funcionalidades a los desarrolladores con mayor rapidez. Entre estas versiones, algunas se designan como LTS (Long-Term Support, soporte a largo plazo), como Java 8, Java 11, Java 17 y, más recientemente, Java 21, lanzada en septiembre de 2023.

Estas versiones LTS cuentan con un soporte prolongado, con actualizaciones de seguridad y estabilidad durante varios años, lo que las hace especialmente adecuadas para entornos de producción....

Instalación del JDK

El objetivo de esta sección es describir los principales pasos necesarios para configurar un entorno de desarrollo operativo, que incluye los siguientes elementos, en Windows, macOS y Linux.

1. Instalación del JDK en Windows

a. Instalación de la plataforma OpenJDK

Para instalar la plataforma OpenJDK, siga estos pasos:

 Acceda a la página de descarga: https://jdk.java.net/archive/

La última versión de OpenJDK siempre está disponible en https://jdk.java.net/23/. Por el momento, se trata de la versión 23, mientras que las versiones más antiguas, como la 21, se encuentran en https://jdk.java.net/archive/.

Debería aparecer la siguiente pantalla:

images/cap1_pag13.png

 Descargue el último archivo de la versión 21 adecuado para su sistema operativo (en este caso, 21.0.2 para Windows/x64). Tenga en cuenta que no hay instalador.

 Descomprima el archivo en el directorio que desee y la instalación habrá terminado.

b. Instalación de la plataforma Oracle JDK

Para instalar la plataforma Oracle JDK, proceda de la siguiente manera:

 Acceda a la página de descarga dedicada a Java 21 en el sitio web oficial de Oracle: https://www.oracle.com/java/technologies/downloads/#java21

 Seleccione la pestaña correspondiente a su sistema operativo (por ejemplo, Windows).

La versión 21.X.X actual está disponible para su descarga. En el momento de redactar este documento, la versión es la 21.0.9.

images/cap1_pag18.png

 En Windows, seleccione el instalador denominado x64 Installer (por ejemplo: jdk-21_windows-x64_bin.exe).

 Ejecute el instalador y siga los pasos indicados.

images/cap1_pag19.png

 Haga clic en el botón Next.

images/cap1_pag20.png

 Modifique el directorio de instalación si es necesario. Por defecto, está definido en C:\Program Files\Java\jdk-21\.

 A continuación, haga clic en el botón Next para iniciar la instalación.

images/cap1_pag20_b.png

 La aparición de esta pantalla confirma que la instalación se ha realizado con éxito. Haga clic en el botón Close para finalizar.

c. Configuración de las variables de entorno

Para utilizar herramientas de desarrollo como javac.exe o java.exe sin tener que especificar su ruta de acceso completa, es necesario añadir el directorio que contiene estos ejecutables a la variable de entorno PATH. Este directorio corresponde a la carpeta \bin del JDK....

Entornos de desarrollo integrado (IDE)

JetBrains, el editor del software IntelliJ IDEA, ofrece varias ediciones de este entorno de desarrollo. La versión Ultimate es de pago y ofrece funciones avanzadas.

En el marco de este libro, nos centraremos en la versión gratuita y de código abierto: IntelliJ IDEA Community Edition (CE).

1. Instalación de IntelliJ IDEA

a. Instalación de IntelliJ IDEA CE en Mac

 Comience descargando el instalador desde el sitio web oficial de JetBrains: https://www.jetbrains.com/idea/download

 Seleccione la versión correspondiente a su arquitectura macOS (Intel o Apple Silicon).

images/01RI19N1.png

 Una vez finalizada la descarga, arrastre y suelte el lanzador en la carpeta Applications. La instalación de IntelliJ IDEA Community Edition ha finalizado.

Puede pasar a la siguiente subsección: Creación de un proyecto Java con IntelliJ IDEA.

b. Instalación de IntelliJ IDEA CE en Linux

 Para instalar el editor de código en un sistema Linux, comience por descargar el archivo correspondiente a su arquitectura (AMD o ARM) desde el sitio web oficial de JetBrains: https://www.jetbrains.com/idea/download

images/cap1_pag38.png

Una vez descargado el archivo, puede descomprimirlo a través de la interfaz gráfica de su entorno o utilizando el siguiente comando:

sudo tar -xvf ideaIC-2024.2.4.tar.gz 

De forma predeterminada, el contenido se extraerá en el directorio actual. Puede elegir otra ubicación si es necesario.

 Para iniciar IntelliJ IDEA, acceda a la carpeta extraída y ejecute el script de inicio:

cd idea-IC-242.23726.103/ 
bin/idea.sh 

La versión de IntelliJ IDEA en el momento de escribir este libro podría diferir de la que usted instalará, pero eso no tiene importancia.

La instalación ha finalizado. Puede pasar a la subsección...

Las bases de datos

1. Instalación de MySQL

El objetivo de esta sección es presentar la instalación del servidor MySQL y de DBeaver, una herramienta gráfica de código abierto que permite administrar servidores de bases de datos.

a. Instalación de MySQL Server en macOS

 Para instalar MySQL Server en macOS, primero descargue el instalador desde el sitio web oficial de MySQL. En la página de descargas, seleccione la versión correspondiente a su sistema, por ejemplo, macOS 14 (ARM, 64 bits): https://dev.mysql.com/downloads/mysql/

 Una vez descargado el instalador, ejecútelo para iniciar el proceso de instalación.

 Haga clic en el botón Continue para pasar al siguiente paso.

images/cap1_pag45.png

 A continuación, acepte las condiciones de la licencia haciendo clic en el botón Agree para continuar con la instalación.

images/cap1_pag46.png

 Podrá elegir instalar MySQL Server para un usuario específico o para todos los usuarios del sistema y luego haga clic en el botón Continue.

images/cap1_pag47.png
images/cap1_pag47_b.png

Puede elegir otra ubicación de instalación, pero se recomienda mantener la ubicación predeterminada: /usr/local/mysql

 A continuación, haga clic en el botón Install para iniciar la instalación.

Según la versión de MySQL, aparecerá una pantalla en la que se le pedirá que defina una contraseña para el usuario root. Se recomienda elegir una contraseña que pueda recordar fácilmente, por ejemplo, almacenándola en un gestor de contraseñas.

images/cap1_pag48.png

Una vez finalizada la instalación, puede comprobar su correcto funcionamiento ejecutando los siguientes comandos en un terminal:

cd /usr/local/mysql/bin   
./mysql -u root -p 

Después de introducir su contraseña, debería aparecer un mensaje de conexión al servidor MySQL.

images/cap1_pag49.png

b. Creación de un usuario y una base de datos en macOS

Ahora está conectado a la consola MySQL como usuario root gracias al siguiente comando:

mysql -u root -p 
  • La opción -u permite especificar la cuenta que se va a utilizar (root).

  • La opción -p indica que se debe introducir una contraseña.

Para salir de MySQL, introduzca el comando:

exit; 

Desde esta consola, también es posible:

  • crear un nuevo usuario MySQL (por ejemplo, mysqluser con la contraseña Pa$$w0rd o cualquier otra contraseña...

El javadoc

La plataforma Java SE incluye un contenido esencial para los desarrolladores: el javadoc.

El javadoc es indispensable para cualquiera que desee programar en Java. Proporciona una documentación completa de todas las clases, interfaces y otros elementos que componen el API de Java, lo que permite a los desarrolladores comprender y utilizar mejor las funcionalidades disponibles.

Más adelante (véase el capítulo Programación orientada a objetos - Los comentarios) veremos cómo redactar javadoc para documentar nuestro propio programa Java. Por ahora, centrémonos en leer el javadoc proporcionado por Oracle.

Es posible consultar el javadoc desde un navegador web o directamente desde un entorno de desarrollo integrado como Eclipse.

1. Consulta desde un navegador

El javadoc oficial está disponible en la siguiente dirección: https://docs.oracle.com/en/java/javase/21/docs/api

También es posible descargarla para acceder a ella localmente: https://www.oracle.com/java/technologies/javase-jdk21-doc-downloads.html

images/01RI46N1.png

 Para realizar la instalación local, siga estos pasos:

  • acepte las condiciones de la licencia;

  • descargue el archivo;

  • descomprima su contenido en el directorio que desee;

  • acceda al subdirectorio /docs/api y abra el archivo index.html.

La página de inicio que se muestra localmente es idéntica a la que se puede acceder en línea.

images/01RI47N1.png

Esta página enumera todos los módulos...

El primer programa Java: ¡Hola, mundo!

Puede resultar tentador crear su primer programa Java directamente en un IDE como Eclipse, IntelliJ o cualquier otra herramienta de su elección. Sin embargo, para entender bien los mecanismos fundamentales de la creación de un programa, es preferible realizar manualmente los diferentes pasos antes de recurrir a un entorno de desarrollo.

1. Escritura del código

Un programa Java se compone de uno o varios archivos de texto con la extensión .java. El programa más sencillo contiene un solo archivo Java.

El nombre del archivo Java debe coincidir obligatoriamente con el nombre de la clase que contiene. Por ejemplo, un archivo llamado FirstProgram.java contendrá una clase llamada FirstProgram.

La estructura básica del archivo es la siguiente:

public class FirstProgram 
{ 
   ... 
} 

Atención: Java distingue entre mayúsculas y minúsculas. Por ejemplo, FirstProgram y firstprogram se consideran dos nombres diferentes.

Todo programa Java debe contener un método especial llamado main, que representa el punto de entrada del programa. Su declaración sigue una estructura fija:

public static void main(String[] args)   {  ...   }
{ 
   ... 
} 

Volveremos sobre este método con más detalle más adelante en el libro (véase el capítulo Entender un programa - Anatomía y punto de entrada de un programa). Por ahora, basta con saber que la ejecución de un programa Java comienza aquí.

Dentro de este método, se pueden escribir las instrucciones del programa. El ejemplo más clásico consiste en mostrar un mensaje en la pantalla. Esta es la instrucción que permite mostrar...

Conclusión

Al finalizar este capítulo, dispondrá de los conocimientos básicos necesarios para abordar con tranquilidad el aprendizaje del lenguaje Java y comenzar a crear sus primeros programas.