| Tipus | Java (llenguatge de programació) |
|---|---|
ElJava Platform Module System[1] especifica un format de distribució per a col·leccions de codiJava i recursos associats. També especifica un repositori per emmagatzemar aquestes col·leccions, omòduls, i identifica com es poden descobrir, carregar i comprovar la integritat. Inclou funcions com els espais de noms amb l'objectiu de solucionar algunes de les deficiències del formatJAR existent, especialment elJAR Hell, que pot provocar problemes com ara el camí de classe i els problemes de càrrega de classes.
El sistema de mòduls de Java s'estava desenvolupant inicialment sota elprocés de la comunitat Java com a JSR 277 i estava programat per ser llançat amb Java 7.
Més tard, el JSR 277 es va suspendre i es va crear Project Jigsaw[2] per modularitzar el JDK. Aquest JSR va ser substituït per JSR 376 (Java Platform Module System).
Project Jigsaw estava pensat originalment per aJava 7 (2011), però es va ajornar aJava 8 (2014) com a part del Pla B,[3] i es va ajornar de nou a una versió deJava 9 el 2017.[4] Java 9, inclòs el sistema de mòduls Java, es va llançar el 21 de setembre de 2017.[5]
El sistema de mòduls Java implementat a Java 9 inclou els següentsJEP iJSR (sol·licitud d'especificació de Java) :[6]
A més, s'han afegit diverses altres funcions de JDK 9 per facilitar la transició al sistema de mòduls:
Propietats dels mòduls
Els mòduls són una nova forma d'agrupar el codi. Contràriament alsfitxers Jar, els mòduls declaren explícitament de quins mòduls depenen i quins paquets exporten.[13] Les declaracions de dependència explícites milloren la integritat del codi, facilitant el raonament sobre les aplicacions grans i les dependències entre els components del programari.
La declaració del mòdul es col·loca en un fitxer anomenatmodule-info.java a l'arrel de la jerarquia de fitxers font del mòdul. El JDK verificarà les dependències i les interaccions entre mòduls tant en temps de compilació com en temps d'execució.
Per exemple, la següent declaració del mòdul declara que el mòdulcom.foo.bar depèn d'un altre mòdulcom.foo.baz i exporta els paquets següents:com.foo.bar.alpha icom.foo.bar.beta :
module com.foo.bar { requires com.foo.baz; exports com.foo.bar.alpha; exports com.foo.bar.beta;}Els membres públics dels paquetscom.foo.bar.alpha icom.foo.bar.beta seran accessibles per mòduls dependents. Els membres privats són inaccessibles fins i tot a través d'un mitjà comla reflexió. Tingueu en compte que ales versions de Java de la 9 a la 16, si aquest "accés il·legal" està permèsde facto depèn de la configuració de lalínia d'ordres.[14]
El propi JDK s'ha modular enJava 9.[15]