Módulos de Java 9

Java 9 módulos son uno de los cambios más grandes en la estructura de Java. Aquí voy a dar una breve introducción de alto nivel sobre el “Sistema de Módulos de Java 9”.

Módulos de Java 9

Vamos a explorar los siguientes temas sobre el sistema de módulos de Java 9.

  1. Introducción
  2. Java SE 9: Proyecto Jigsaw
  3. Problemas del Sistema Java Actual
  4. Ventajas del Sistema de Módulos de Java SE 9
  5. Comparar JDK 8 y JDK 9
  6. ¿Qué es un Módulo de Java 9?
  7. Madre del Sistema de Módulos de Java 9
  8. Comparar Aplicaciones Java 8 y Java 9

Introducción

Oracle Corporation ha pospuesto el lanzamiento de Java 9 de marzo de 2017 a septiembre de 2017. Como sabemos, Java SE 8 vino con tres grandes características nuevas (además de algunas mejoras y nuevas características más).

  1. Expresiones Lambda
  2. API de Secuencias
  3. API de Fechas

De la misma manera, Java SE 9 viene con tres características importantes (además de algunas mejoras y nuevas características más):

  1. Sistema de Módulos de Java (Proyecto Jigsaw)
  2. Java REPL
  3. Proyecto de fresado de monedas

En esta publicación, discutiremos los conceptos básicos del proyecto Oracle Jigsaw.

Java SE 9: Proyecto Jigsaw

El proyecto Jigsaw va a introducir un concepto completamente nuevo en Java SE 9: Sistema de módulos de Java. Es un proyecto muy grande y prestigioso de Oracle Corp en la versión 9 de Java SE. Inicialmente, comenzaron este proyecto como parte del lanzamiento de Java SE 7. Sin embargo, con grandes cambios, se pospuso a Java SE 8 y luego nuevamente se pospuso. Ahora está a punto de ser lanzado con Java SE 9 en septiembre de 2017. Principales objetivos del proyecto Jigsaw:

  • El JDK Modular

    Como sabemos, el sistema actual de JDK es demasiado grande. Por lo tanto, han decidido dividir el propio JDK en pequeños módulos para obtener varios beneficios (los discutiremos pronto en las secciones siguientes). – Código Fuente Modular

    Los archivos de código fuente actuales jar son demasiado grandes, especialmente rt.jar es muy grande, ¿verdad? Por lo tanto, van a dividir el código fuente de Java en módulos más pequeños. – Imágenes de Tiempo de Ejecución Modulares

    El objetivo principal de esta característica es “Reestructurar las imágenes de tiempo de ejecución de JDK y JRE para acomodar módulos”. – Encapsular la Mayoría de las API Internas

    El objetivo principal de esta característica es “Hacer inaccesibles por defecto la mayoría de las API internas de JDK, pero dejar accesibles algunas API internas críticas y ampliamente utilizadas”. – Sistema de Módulos de Plataforma Java

    El objetivo principal de esta característica es “Permitir al usuario crear sus propios módulos para desarrollar sus aplicaciones”. – jlink: El Enlazador de Java

    El objetivo principal de esta herramienta jlink es “Permitir al usuario crear ejecutables para sus aplicaciones”.

Si no entiendes estas cosas claramente, NO te preocupes. Discutiremos estos conceptos a fondo con algunos ejemplos útiles en las secciones siguientes y también en mis próximas publicaciones.

¿Problemas del Sistema Java Actual?

En esta sección, discutiremos “Por qué necesitamos el Sistema de Módulos de Java SE 9”, lo que significa los problemas del Sistema Java actual. Los sistemas Java SE 8 o anteriores tienen los siguientes problemas en el desarrollo o entrega de aplicaciones basadas en Java.

  • Como JDK es demasiado grande, es un poco difícil reducirlo para dispositivos pequeños. Java SE 8 ha introducido 3 tipos de perfiles compactos para resolver este problema: compact1, compact2 y compact3. Pero no resuelve este problema.
  • Los archivos JAR como rt.jar, etc., son demasiado grandes para usar en dispositivos y aplicaciones pequeñas.
  • Como JDK es demasiado grande, nuestras aplicaciones o dispositivos no pueden admitir un mejor rendimiento.
  • No hay una Encapsulación Fuerte en el Sistema Java actual porque el modificador de acceso “public” es demasiado abierto. Todos pueden acceder a él.
  • Como JDK, JRE es demasiado grande, es difícil probar y mantener aplicaciones.
  • Como el público es demasiado abierto, no pueden evitar el acceso a algunas API Internas No Críticas como sun.*, *.internal.*, etc.
  • Como el usuario también puede acceder a las API internas, la seguridad también es un gran problema.
  • La aplicación es demasiado grande.
  • Es un poco difícil mantener un acoplamiento menor entre componentes.

Para resolver todos estos problemas, Oracle Corp se dispone a lanzar el sistema de módulos de Java en la versión Java SE 9.

Ventajas del Sistema de Módulos de Java SE 9

El Sistema de Módulos de Java SE 9 va a proporcionar los siguientes beneficios

  • Como Java SE 9 va a dividir JDK, JRE, JAR, etc., en módulos más pequeños, podemos utilizar los módulos que queramos. Por lo tanto, es muy fácil adaptar la Aplicación de Java a dispositivos pequeños.
  • Facilidad de prueba y mantenimiento.
  • Soporta un mejor rendimiento.
  • Dado que “public” ya no es simplemente “public”, ofrece una encapsulación muy sólida. (No te preocupes, es un concepto importante. Lo exploraremos con algunos ejemplos útiles pronto).
  • Ya no podemos acceder a APIs internas no críticas.
  • Los módulos pueden ocultar detalles no deseados e internos de forma muy segura, lo que nos brinda una mejor seguridad.
  • La aplicación es más pequeña porque solo podemos utilizar los módulos que queramos.
  • Es fácil mantener un acoplamiento menor entre los componentes.
  • Es fácil apoyar el Principio de Responsabilidad Única (SRP).

Exploraremos todos estos conceptos uno por uno pronto.

Comparar JDK 8 y JDK 9

Conocemos lo que contiene el software JDK. Después de instalar el software JDK 8, podemos ver varios directorios como bin, jre, lib, etc. en la carpeta principal de Java. Sin embargo, Oracle Corp ha cambiado esta estructura de carpeta de manera diferente, como se muestra a continuación. Estructura de la carpeta JDK 8: Estructura de la carpeta JDK 9: Aquí, en JDK 9, NO contiene JRE. En JDK 9, JRE se separa en una carpeta de distribución independiente. El software JDK 9 contiene una nueva carpeta llamada “jmods”. Contiene un conjunto de módulos de Java 9, como se muestra a continuación. En JDK 9, no hay rt.jar y no hay tools.jar NOTA: Hasta hoy, “jmods” contiene 95 módulos. Puede aumentar en la versión final. La carpeta “jmods” está disponible en ${JAVA_HOME}/jmods. Estos son conocidos como Módulos JDK.

¿Qué es un Módulo Java 9?

A Module is a self-describing collection of Code, Data, and some Resources. It is a set of related Packages, Types (classes, abstract classes, interfaces etc) with Code & Data and Resources. Each Module contains only a set of related code and data to support Single Responsibility (Functionality) Principle (SRP). The main goal of Java 9 Module System is to support Modular Programming in Java. We will discuss on “What is a Module Descriptor” and “How to develop Java Modules” in my coming posts.

Madre del Sistema de Módulos Java 9

A partir de ahora, el Sistema de Módulos de Java 9 tiene 95 módulos en JDK de Acceso Temprano. Oracle Corp ha separado los tarros (jars) de JDK y las Especificaciones de Java SE en dos conjuntos de módulos.

  • Todos los Módulos de JDK comienzan con “jdk.*”
  • Todos los Módulos de Especificaciones de Java SE comienzan con “java.*”

El Sistema de Módulos de Java 9 tiene un Módulo “java.base”. Se conoce como Módulo Base. Es un módulo independiente y NO depende de ningún otro módulo. Por defecto, todos los demás módulos dependen de este módulo. Por eso, el Módulo “java.base” también se conoce como La Madre de los Módulos de Java 9. Es el módulo predeterminado para todos los Módulos de JDK y Módulos Definidos por el Usuario.

Comparar Aplicaciones Java 8 y Java 9

Hemos desarrollado muchas aplicaciones en Java utilizando Java 5, 6, 7 u 8. Sabemos cómo se ven las aplicaciones en Java 8 o anteriores y qué contienen. En resumen, he representado una aplicación en Java 8 en un diagrama como se muestra a continuación: En las aplicaciones en Java 8 o anteriores, el componente de nivel superior es un Paquete. Agrupa un conjunto de tipos relacionados en un grupo. También contiene un conjunto de recursos. Las aplicaciones en Java 9 no tienen mucha diferencia con esto. Simplemente introdujeron un nuevo componente llamado “Módulo”, que se utiliza para agrupar un conjunto de paquetes relacionados en un grupo. Y un componente más nuevo que es el Descripto de Módulo (“module-info.java”). Eso es todo. El resto de la aplicación es igual que las versiones anteriores de las aplicaciones como se muestra a continuación. Al igual que las aplicaciones en Java 8 tienen Paquetes como componentes de nivel superior, las aplicaciones en Java 9 tienen Módulos como componentes de nivel superior. NOTA: – Cada Módulo en Java 9 tiene un solo Módulo y un solo Descripto de Módulo. A diferencia de los Paquetes en Java 8, no podemos crear varios módulos en un solo Módulo. En resumen, puedo decir que un Módulo en Java 9 contiene los siguientes componentes principales:

  • Un Módulo
  • Nombre del Módulo
  • Descripto de Módulo
  • Conjunto de Paquetes
  • Conjunto de Tipos y Recursos

Aquí los recursos pueden ser module-info.java (Descriptor de Módulo) u otras propiedades o XML. Hemos discutido demasiada teoría en este artículo. Creo que es suficiente para entender los conceptos básicos del sistema de módulos de Java 9. Comenzaremos un desarrollo de módulos básico en mi próximo artículo. Discutiré algunos conceptos teóricos más o terminología del Sistema de Módulos de Java 9 según sea necesario. Eso es todo sobre el tema “Introducción al Sistema de Módulos de Java 9”. Discutiremos algunos conceptos más del Sistema de Módulos de Java SE 9 en mis próximos artículos. Por favor, déjame un comentario si te ha gustado mi artículo o si tienes algún problema/sugerencia/error tipográfico. Gracias por leer mis tutoriales. ¡Feliz aprendizaje de Java SE 9! Referencia: Proyecto Jigsaw

Source:
https://www.digitalocean.com/community/tutorials/java-9-modules