Systémový modul Java Platform - Java Platform Module System
The Systémový modul Java Platform[1] určuje distribuční formát pro sbírky Jáva kód a související zdroje. Určuje také úložiště pro ukládání těchto kolekcí, nebo moduly a identifikuje, jak je lze zjistit, načíst a zkontrolovat integritu. Zahrnuje funkce, jako jsou jmenné prostory, s cílem napravit některé nedostatky ve stávajících SKLENICE formát, zejména formát JAR, peklo, což může vést k problémům, jako jsou problémy s třídami a načítáním tříd.
Systém Java Module byl původně vyvíjen v rámci Proces komunity Java jako JSR 277 a měl být vydán s Java 7.
JSR 277 později byl přidržen a Project Jigsaw[2] byl vytvořen za účelem modularizace JDK. Tento JSR byl nahrazen JSR 376 (Java Platform Module System).
Projekt Jigsaw byl původně určen pro Java 7 (2011), ale bylo odloženo Java 8 (2014) jako součást plánu B,[3] a znovu odloženo na a Java 9 vydání v roce 2017.[4] Java 9 včetně Java Module System byla vydána 21. září 2017.[5]
Architektura
Systém modulů Java implementovaný pro prostředí Java 9 zahrnuje následující JEP a JSR (Java Specification Request):[2]
- JEP 200: The Modular JDK: Define a modular structure for the JDK
- JEP 201: Modulární zdrojový kód: Reorganizujte zdrojový kód JDK na moduly, vylepšete systém sestavení tak, aby kompiloval moduly, a vymáhejte hranice modulů v době sestavení
- JEP 220: Modulární běhové obrazy: Restrukturalizujte běhové obrazy JDK a JRE tak, aby vyhovovaly modulům a zlepšily výkon, zabezpečení a udržovatelnost
- JEP 260: Zapouzdřit většinu interních API
- JEP 261: Module System: Implement the Java Platform Module System
- JEP 282: The Java Linker: Create a tool that can assemblies and optimize a set of modules and their dependencies into a custom run-time image[6]
- JSR 376: Systém Java Platform Module[7]
Navíc bylo přidáno několik dalších funkcí JDK 9, které usnadňují přechod na systém modulů:
- JEP 238: Soubory JAR s více verzemi: Rozšíření formátu souboru JAR tak, aby umožňovalo koexistenci více verzí souborů tříd specifických pro Javu v jednom archivu.[8]
- JEP 253: Připravte se JavaFX Ovládací prvky uživatelského rozhraní a rozhraní CSS API pro modularizaci: Definujte veřejná rozhraní API pro funkce JavaFX, která je v současné době k dispozici pouze prostřednictvím interních rozhraní API a kvůli modularizaci by se stala nepřístupnou.[9]
- JEP 260: Zapouzdřit většinu interních rozhraní API: Ve výchozím nastavení zpřístupní většinu interních rozhraní API JDK, ale ponechá přístup k několika kritickým, široce používaným interním rozhraním API, dokud nebudou existovat podporované náhrady pro všechny nebo většinu jejich funkcí.[10]
- JEP 275: Modulární Java Application Packaging: The Balírna Java se bude vyvíjet pro JDK 9, čímž bude informován o modulech, což umožní například zabalit modul a všechny moduly, na kterých záleží.[11]
Moduly představují nový způsob seskupování kódu a dat. Proti Jar soubory, moduly výslovně deklarují, na kterých modulech jsou závislé a jaké balíčky exportují.[12]
Například následující deklarace modulu deklaruje, že modul com.foo.bar záleží na jiném com.foo.baz modul a exportuje následující balíčky: com.foo.bar.alpha a com.foo.bar.beta:
modul com.foo.bar {vyžaduje com.foo.baz; exportuje com.foo.bar.alpha; exportuje com.foo.bar.beta;}
Na rozdíl od formátu souboru Jar modul popíše tyto závislosti v deklaraci modulu, která bude umístěna do souboru s názvem modul-info.java v kořenovém adresáři hierarchie zdrojových souborů modulu. JDK je bude moci kontrolovat jak v době kompilace, tak za běhu. Samotný JDK bude modularizován pro Java 9.[13]
Odkazy s OSGi
Systém Java Module System nemá v úmyslu podporovat všechny funkce, které OSGi platforma aktuálně podporuje (například model životního cyklu a registr služeb). Systém Java Module System však bude podporovat funkce, které OSGi nepodporuje, jako je modularita v době kompilace a integrovaná podpora nativních knihoven.[14] V roce 2016 bylo publikováno několik článků, které zkoumají, jak mohou Java Module System a OSGi spolupracovat. Tyto články najdete na InfoQ[15] a také blog OSGi Alliance.[16]
Viz také
Reference
- ^ „Systém Java Platform Module (JSR 376)“. Oracle Corporation. Citováno 2018-07-02.
- ^ A b „Projektová skládačka“. Oracle Corporation. Citováno 2015-11-29.
- ^ Mark Reinhold (2009-09-20). „Je čas na… plán B“. Oracle Corporation. Citováno 2017-06-21.
- ^ „JDK 9“. Oracle Corporation. Citováno 2016-02-24.
- ^ „Java 9: Datum vydání a nové funkce“. techworld.com. 21. 7. 2017. Citováno 2017-11-18.
- ^ "jlink: Java Linker (JSR 282)". Oracle Corporation. Citováno 2016-03-12.
- ^ „Systém Java Platform Module (JSR 376)“. Oracle Corporation. Citováno 2015-11-29.
- ^ „JEP 238: Multi-Release JAR Files“. Oracle Corporation. Citováno 2017-07-31.
- ^ „JEP 253: Prepare JavaFX UI Controls & CSS APIs for Modularization“. Oracle Corporation. Citováno 2017-07-31.
- ^ „JEP 260: Zapouzdřit většinu interních API“. Oracle Corporation. Citováno 2017-07-31.
- ^ „JEP 275: Modular Java Application Packaging“. Oracle Corporation. Citováno 2017-07-31.
- ^ Mark Reinhold (08.03.2016). „Stav modulového systému“. Oracle Corporation. Citováno 2017-02-18.
- ^ "Souhrn modulu JDK". Oracle Corporation. 2016-06-24. Citováno 2017-02-18.
- ^ Mark Reinhold (2012-08-24). „Project Jigsaw: Late to the train: The Q&A“. Oracle Corporation. Citováno 2015-11-29.
- ^ „Java 9, OSGi a budoucnost modularity“. InfoQ. Citováno 2016-09-26.
- ^ "Java Module Layers and OSGi Bundles". OSGi Alliance. Citováno 2016-08-01.