मॉड्यूल संरचना
एक मॉड्यूल पैकेजेस का एक कंटेनर है और प्रत्येक मॉड्यूल में एक मॉड्यूल डिस्क्रिप्टर होता है जिसमें मॉड्यूल नाम, मॉड्यूल निर्भरताएं शामिल होती हैं, इसका मतलब है कि अन्य मॉड्यूल्स के नाम जिन पर यह निर्भर करता है और उन पैकेजेस के नाम जो यह निर्यात करता है जिनका उपयोग केवल उन मॉड्यूल्स द्वारा किया जा सकता है जो इस पर निर्भर करते हैं।
module com.tutorialspoint.app {
/** मॉड्यूल जिन पर com.tutorialspoint.app निर्भर करता है */
requires com.tutorialspoint.services;
/** इस मॉड्यूल द्वारा उजागर पैकेजेस जिनका उपयोग अन्य मॉड्यूल्स द्वारा किया जा सकता है */
exports com.tutorialspoint.app.util;
}
तीन कंपाइलेशन मोड
Java 9 मॉड्यूल द्वारा तीन अलग-अलग कंपाइलेशन मोड प्रदान किए जाते हैं: लिगेसी मोड, सिंगल मॉड्यूल मोड, और मल्टी-मॉड्यूल मोड।
1. लिगेसी मोड
यह तब सक्षम होता है जब --source, --target, और --release विकल्पों द्वारा परिभाषित कंपाइलेशन वातावरण 8 से कम या बराबर होता है। कंपाइलर उसी तरह व्यवहार करता है जैसे वह Java 8 (या उससे पहले) में करता है जहां हम मॉड्यूल-संबंधी विकल्पों (--module-path) के बजाय पारंपरिक विकल्पों (क्लासपथ, आदि) का उपयोग कर सकते हैं। इस मोड में, हमारा कोड रनटाइम के दौरान अनाम मॉड्यूल के रूप में चलता है।
2. सिंगल मॉड्यूल मोड
यह तब सक्षम होता है जब कंपाइलेशन वातावरण 9 या बाद का होता है और --module-source-path विकल्प उपयोग नहीं किया जाता है। इस मोड में, कोड पारंपरिक पैकेज पदानुक्रमित डायरेक्टरी ट्री में संरचित होता है। कोड में एक module-info.java फाइल होती है और क्लासपथ के बजाय मॉड्यूलपथ पर चलता है। इस संरचना में, हम अपनी module-info.java फाइल को सीधे src डायरेक्टरी के तहत रख सकते हैं। हम एक ही डायरेक्टरी ट्री में कई module-info.java फाइलें नहीं रख सकते, इसलिए इसे सिंगल मॉड्यूल मोड कहा जाता है।
3. मल्टी-मॉड्यूल मोड
यह तब सक्षम होता है जब कंपाइलेशन वातावरण 9 या बाद का होता है और --module-source-path विकल्प उपयोग किया जाता है। इस मोड में, हम एक ही सोर्स डायरेक्टरी के तहत कई मॉड्यूल्स रखते हैं। कंपाइल-टाइम के दौरान, मुख्य सोर्स डायरेक्टरी को --module-source-path विकल्प के साथ निर्दिष्ट किया जा सकता है। प्रत्येक व्यक्तिगत मॉड्यूल के लिए सोर्स ट्री को मुख्य सोर्स डायरेक्टरी के तहत अपने स्वयं के सबडायरेक्टरी में रखा जा सकता है।
ये मोड मौजूदा कोडबेस से मॉड्यूलर Java 9 प्रोजेक्ट्स में माइग्रेशन पथ प्रदान करते हैं।