Introducción a la plataforma Java
Introducción
En el corazón de los ordenadores, los microprocesadores ejecutan las listas de instrucciones. Estas listas contienen códigos binarios que representan cálculos y acciones que se tienen que hacer sobre los registros, la memoria o incluso los periféricos. Cuando un desarrollador escribe un programa, no construye directamente esta lista. Por fortuna, pasa por un lenguaje de programación con el que va a describir una sucesión de acciones de «alto nivel». Por ejemplo, si el programa necesita abrir el archivo config.txt, entonces el desarrollador utilizará la función fopen(«config.txt») de su lenguaje favorito para hacerlo. Después de esta línea, se ocultará toda una lista de instrucciones «de máquina» que el microprocesador ejecutará cuando la aplicación se ponga en marcha. Por lo tanto, los lenguajes simplifican mucho la escritura, pero, al final, siempre son instrucciones de máquina las que se ejecutan.
El programa «fuente» -en nuestro ejemplo el que contiene fopen(«config.txt»)- es un archivo de texto que el desarrollador edita con un editor de texto básico, como Notepad, o más evolucionado, como Notepad++ o incluso el editor integrado en su entorno de desarrollo (IDE), que se presentará más adelante. La máquina no puede ejecutar este archivo de texto. Se debe convertir...
Entorno de ejecución
Las aplicaciones escritas en Java no se comunican nunca directamente con el sistema operativo. Además, el resultado de una compilación Java (archivos con extensión .class) no es directamente ejecutable por el sistema operativo. Esta primera compilación, llamada Byte Code, contiene las instrucciones para la máquina virtual de Java, que va a «convertir sobre la marcha» el código intermedio en instrucciones compatibles con el entorno real de ejecución. Se habla de Just In Time Compiler (o JIT Compiler).
Cada entorno real de ejecución (Windows, Linux, macOS...) tiene su propia máquina virtual de Java, pero el Byte Code generado después de la compilación del programa fuente es el mismo y relativamente portable entre diferentes máquinas virtuales de Java. El adverbio «relativamente» se añade aquí para precisar que el diseño de un programa «portable» requiere algunas precauciones. Imaginemos que desea realizar un programa que deberá funcionar al mismo tiempo en el PC, la tableta y un teléfono. Es evidente que las características de estos tres dispositivos son totalmente diferentes y, por lo tanto, será necesario que el programa se adapte automáticamente a las características del entorno real. Por ejemplo, podrá solicitar la resolución del dispositivo de visualización...
Una librería muy completa
La plataforma Java ofrece una amplia colección de clases sobre las que se basan las aplicaciones. Se habla de API Java. Estas clases simplifican considerablemente la gestión de los objetos habituales (cadenas de caracteres, valores decimales, colecciones, etc.), así como la gestión de archivos, las interfaces gráficas clásicas, los API web, el acceso a las bases de datos, las comunicaciones de red, la seguridad, los diagnósticos, etc. La lista de las clases es muy amplia y, aunque se ofrezcan de manera jerárquica, el problema normalmente es saber identificarlas.
La mayor parte de las veces, estas clases son extensibles. Esto quiere decir que es posible extenderlas para mejorar su comportamiento básico y, a continuación, añadir los aspectos específicos del negocio.
Para organizar estas clases, la plataforma utiliza el concepto de paquetes, que agrupa las clases por objetivos (servicios de la misma naturaleza). Por ejemplo, el paquete java.io contiene una «caja de herramientas» para administrar los archivos.
El API (Application Programming Interface, término que designa la lista de las clases accesibles por el desarrollador) básico de Java 9 ofrece no menos de 6000 clases organizadas en más de 200 paquetes.
Naturalmente, es posible crear sus propios paquetes. El paquete Java se corresponde con el paquete del UML. El desacoplamiento...
Las herramientas de desarrollo con buen rendimiento
La plataforma Java ofrece un compilador (javac.exe), que se puede utilizar directamente en línea de comandos, después de haber introducido el código del programa en un editor de texto. Por supuesto, el procedimiento es posible pero no muy productivo. Evidentemente, el desarrollador persigue la utilización de un entorno de desarrollo totalmente integrado, que le ayude durante la redacción del código, la realización de la interfaz gráfica, la puesta a punto y el despliegue de su aplicación. Este programa es un IDE (Integrated Development Environment). Como mínimo, integra un editor de código fuente, las herramientas que automatizan las compilaciones y un depurador.
Existen varios IDE para Java. Entre ellos hay tres principales: IntelliJ IDEA, de JetBrains; Eclipse, de la fundación Eclipse, y NetBeans, creado por iniciativa de Sun Microsystems y actualmente mantenido y distribuido por Oracle. Las demostraciones y ejercicios de este libro se basan en la utilización de IntelliJ IDEA porque es el IDE que nos ha parecido más sencillo para empezar a desarrollar.
Descarga e instalación de IntelliJ IDEA
Escriba en la barra de direcciones de su navegador de Internet: https://www.jetbrains.com/idea/download/#section=windows
Se muestra la siguiente pantalla.
El IDE se ofrece en dos versiones. Vamos a utilizar la versión «Community», que será suficiente para nuestros experimentos. Por lo tanto, haga clic en el botón Download de Community.
Empieza la descarga.
Una vez que termina la descarga, haga doble clic en el archivo descargado.
Permita las modificaciones para esta aplicación.
Haga clic en el botón Next y conserve los valores por defecto propuestos en las siguientes pantallas.
El inevitable Hello World
Incluso si el aprendizaje de IntelliJ IDEA se hace al mismo tiempo que la POO con Java, no nos resistimos más a redactar nuestro primer programa: el clásico Hello World!
Ejecute IntelliJ IDEA desde el menú Inicio - JetBrains - IntelliJ IDEA Community Edition.
Seleccione el tema (colores de la aplicación) que quiera.
La siguiente pantalla permite seleccionar los plug-ins por defecto. Los plug-ins son componentes activos que se pueden instalar en el IDE. IntelliJ IDEA es como su caja de herramientas, en la que mete las herramientas (plug-ins) que utiliza más habitualmente. Es inútil ocupar espacio en la caja con un avión de madera si la mayor parte de su tiempo lo pasa haciendo mecánica. Aquí sucede algo parecido, por lo que vamos a modificar la distribución por defecto, validando Swing para nuestras futuras experiencias gráficas.
Conserve las opciones por defecto de la siguiente pantalla:
Haga clic en Start using IntelliJ IDEA.
Una vez se carga la pantalla de bienvenida de IntelliJ IDEA, haga clic en la opción Create New Project.
Esta acción ejecuta el asistente de creación de aplicaciones, que va a comprobar si están todas las herramientas necesarias y va a preparar el esqueleto de nuestra futura aplicación.
En esta primera pantalla, el IDE nos informa de que todavía no se ha instalado ningún SDK. En efecto, IntelliJ IDEA no contiene los componentes Java (como los compiladores) que mantiene y ofrece la empresa Oracle. Estos componentes se distribuyen como kits de desarrollo de software o Software Development Kit (SDK). En el caso de Java, trabajamos con los Java Development Kit (JDK) e IntelliJ IDEA nos ofrece descargarlos e instalarlos. Durante esta fase de instalación, es posible que tenga que permitir que su cortafuegos de Windows desbloquee...
Una puntualización sobre los acrónimos
Hagamos una pequeña puntualización sobre los acrónimos más utilizados en el mundo Java.
Hemos descargado e instalado el JDK 9. JDK significa Java Development Kit y es un SDK (Software Development Kit) especial de Java, que contiene herramientas como el compilador, el depurador y también el JRE.
Hemos utilizado, sin saberlo, este JRE, que es el acrónimo de Java Runtime Environment. El JRE nos ha permitido mostrar este triunfal «Hello World». En nuestro caso, el JRE estaba incorporado en el JDK, pero se puede descargar e instalar de manera aislada.
Java es un potente lenguaje de desarrollo que permite crear aplicaciones para diferentes tipos de plataformas de ejecución: las pequeñas máquinas sin mucha potencia, las máquinas de escritorio y, para terminar, las máquinas que actúan como servidores con muchos recursos. A cada uno de estos tipos le corresponde una especificación de lo que debe ofrecer la plataforma Java. Estas especificaciones son, respectivamente, JME (Java Micro Edition), JSE (Java Standard Edition) y JEE (Java Enterprise Edition). Para el desarrollo, utilizamos las implementaciones de estas especificaciones por parte de editores como Oracle. Por ejemplo, el JDK 9 que hemos utilizado se corresponde con la implementación de las especificaciones del JSE por Oracle.
Para terminar, las especificaciones se indican...