The Java Platform Module System specifies a distribution format for collections of Java code and associated resources. It also specifies a repository for storing these collections, or modules , and identifies how they can be discovered, loaded and checked for integrity. It includes features such as namespaces with the aim of fixing some of the shortcomings in the existing JAR format, especially the JAR Hell , which can lead to issues such as classpath and class loading problems.
17-557: The Java Module System was initially being developed under the Java Community Process as JSR 277 and was scheduled to be released with Java 7. JSR 277 later was put on hold and Project Jigsaw was created to modularize the JDK. This JSR was superseded by JSR 376 (Java Platform Module System). Project Jigsaw was originally intended for Java 7 (2011) but was deferred to Java 8 (2014) as part of Plan B, and again deferred to
34-638: A Java 9 release in 2017. Java 9 including the Java Module System was released on September 21, 2017. The Java Module System implemented in Java 9 includes the following JEPs and JSR (Java Specification Request) : Additionally, several other JDK 9 features have been added to ease transition to the module system: Modules are a new way of grouping code. Contrary to Jar files , modules explicitly declare which modules they depend on, and what packages they export. Explicit dependency declarations improve
51-627: A Technology Compatibility Kit to verify the API specification. The JCP itself is described by a JSR. As of 2020 , JSR 387 describes the current version (2.11) of the JCP. There are hundreds of JSRs. Some of the more visible JSRs include: The JCP's executive board has been characterized as a " rubber stamp organization " since Oracle acquired Sun Microsystems (the original developer of the Java language ). The Apache Software Foundation resigned its seat on
68-670: Is de facto permitted depends on a command line setting. The JDK itself has been modularized in Java 9 . The Java Module System does not intend to support all the functionalities that the OSGi platform currently supports (for example the Life-Cycle model and the Services Registry). However the Java Module System will support functions which are not supported by OSGi, such as modularity at compile-time, and built-in support for native libraries. A couple of articles exploring how
85-669: The Belgian Federal Parliament declared him temporarily unable to reign. That effectively transferred his powers to the Cabinet for a single day, consequentially overriding his veto . Historian Edward S. Ellis described Ottoman Sultan Abdul Hamid II 's General Assembly of the Ottoman Empire as a toy parliament. It was created in 1876 with the sole purpose of appeasing the European powers. One of
102-649: The Italian Chamber of Fasces and Corporations during the Fascist regime . Since the 2003 elections , Russia's Federal Assembly has been similarly referred to as a rubber stamp institution. Russia's State Duma (the lower house of the Federal Assembly ) quickly adopted a number of laws proposed by the government without delay. The annexation of Crimea was quickly approved in 2014 with only one deputy, Ilya Ponomarev , voting against. During
119-474: The Java Module System and OSGi could interoperate were published in 2016. These can be found on InfoQ and also the OSGi Alliance Blog. Java Community Process The Java Community Process (JCP) , established in 1998, is a formal mechanism that enables interested parties to develop standard technical specifications for Java technology. Becoming a member of the JCP requires solid knowledge of
136-508: The Java Specification Requests (JSRs). These formal documents describe proposed specifications and technologies to be added to the Java platform . New members are encouraged to engage actively and play a crucial role in supporting the Java community and its releases. It is essential that members possess expertise and in-depth technical knowledge, combined with strong professional experience, to significantly contribute to
153-551: The Java programming language, its specifications, and best practices in software development. Membership in the JCP involves a detailed review of the candidate's profile, including an assessment by current members. Typically, professionals are invited to join the JCP based on their contributions and reputation within the Java community. Once invited, the new member undergoes an evaluation by the JCP Executive Committee, ensuring that they can effectively contribute to
170-629: The board in December 2010 because Oracle was unwilling to license the Technology Compatibility Kit for Apache's version of Java. Source: Credit Suisse Oracle Red Hat Credit Suisse Rubber stamp (politics) A rubber stamp is a political metaphor , referring to a person or institution with considerable de jure power but little de facto power โ one that rarely or never disagrees with more powerful organizations. Historian Edward S. Ellis used
187-475: The growth and usage of the Java language . Membership for organizations and commercial entities requires annual fees, but it is free for individuals. JSRs undergo formal public reviews before becoming final, and the JCP Executive Committee votes on their approval. A finalized JSR provides a reference implementation , which is a free implementation of the technology in source code form, and
SECTION 10
#1732787144146204-414: The integrity of the code, by making it easier to reason about large applications and the dependencies between software components. The module declaration is placed in a file named module-info.java at the root of the moduleโs source-file hierarchy. The JDK will verify dependencies and interactions between modules both at compile-time and runtime. For example, the following module declaration declares that
221-411: The module com.foo.bar depends on another com.foo.baz module, and exports the following packages: com.foo.bar.alpha and com.foo.bar.beta : The public members of com.foo.bar.alpha and com.foo.bar.beta packages will be accessible by dependent modules. Private members are inaccessible even through a means such as reflection . Note that in Java versions 9 through 16, whether such 'illegal access'
238-593: The most famous examples of a rubber stamp institution is the Reichstag of Nazi Germany , which unanimously confirmed all decisions already made by Adolf Hitler and the highest-ranking members of the Nazi Party . Many legislatures of authoritarian and totalitarian countries are considered as rubber stamps, such as communist parliaments like the Chinese National People's Congress , or
255-485: The parliament's decisions. Rubber-stamp legislatures may occur even in democratic countries if the institutional arrangement allows for it. In many instances, the refusal of a constitutional monarch to rubber stamp laws passed by parliament can set off a constitutional crisis . For example, when then-king Baudouin of Belgium , because of his religious objections, refused to sign a bill legalizing abortions in April 1990,
272-552: The stamper's duty to do so. In the situation where a dictator's legislature is a "rubber stamp", the orders they are meant to endorse are formalities they are expected to legitimize, and are usually done to create the superficial appearance of legislative and dictatorial harmony rather than because they have actual power. In a constitutional monarchy or parliamentary republic , heads of state are typically "rubber stamps" (or figureheads ) to an elected parliament, even if they legally possess considerable reserve powers or disagree with
289-416: The term toy parliament to describe a rubber-stamp legislature. In situations where this superior official's signature may frequently be required for routine paperwork, a literal rubber stamp is used, with a likeness of their hand-written signature. In essence, the term is meant to convey an endorsement without careful thought or personal investment in the outcome, especially since it is usually expected as
#145854