जावा 9 सुविधाएँ और सुधार



इस ब्लॉग में प्रोजेक्ट आरा और प्रमुख जावा 9 सुविधाओं के तहत विकसित मॉड्यूलर फ्रेमवर्क जेएसहेल (आरईपीएल उपकरण), महत्वपूर्ण एपीआई परिवर्तन और जेवीएम-स्तर के बदलाव हैं।

जावा 9 और जावा 9 सुविधाओं की रिहाई जावा पारिस्थितिकी तंत्र के लिए एक मील का पत्थर है।नई रिलीज के साथ बने रहना तकनीक के साथ अद्यतित रहना और पेश किए जाने के पीछे की आवश्यकता को समझने के लिए महत्वपूर्ण है जो आपको अपने करीब लाएगा प्रोजेक्ट आरा के तहत विकसित मॉड्यूलर फ्रेमवर्क इस जावा एसई रिलीज़ का हिस्सा होगा और इसमें प्रमुख विशेषताएं हैं जेएसएलएम (आरईपीएल टूल), महत्वपूर्ण एपीआई परिवर्तन और जेवीएम के प्रदर्शन और डीबगैबिलिटी में सुधार के लिए जेवीएम-स्तर के बदलाव।

मर्ज सॉर्ट c ++ कोड

इससे पहले कि हम जावा 9 की विशेषताओं को विस्तार से बताएं, हम पिछले जावा संस्करणों पर एक नज़र डालते हैं और देखते हैं कि क्या कमियां थीं और जावा 9 ने उन विसंगतियों को दूर करने में कैसे मदद की: -





  • जावा मानक संस्करण प्लेटफ़ॉर्म और JDK छोटे कंप्यूटिंग उपकरणों के लिए नेविगेट करने योग्य नहीं थे
  • जेडीके की समग्र सुरक्षा और रखरखाव नहीं था
  • आवेदन प्रदर्शन में कोई समग्र सुधार नहीं हुआ
  • जावा डेवलपर्स के लिए कोड लाइब्रेरियों और बड़े अनुप्रयोगों का निर्माण करना और उन्हें बनाए रखना मुश्किल था, जावा एसई और ईई प्लेटफार्मों दोनों के लिए

इस ब्लॉग पोस्ट में मैं निम्नलिखित तरीकों से जावा 9 सुविधाओं को वर्गीकृत करूंगा:



  1. जावा 9 में प्रोसेस एपीआई अपडेट
  2. जावा 9 में HTTP / 2 क्लाइंट
  3. जावा 9 में जावा शेल स्क्रिप्टिंग (रीड-एवल-प्रिंट-लूप)
  4. मल्टी-रिलीज़ JAR फाइलें जावा 9 में उपलब्ध हैं
  5. जावा 9 में अधिक कंज्यूमर अपडेट्स की सुविधा है
  6. जावा 9 में प्रोजेक्ट आरा

जावा 9 में नया क्या है?

मैंने कुछ नए जावा 9 फीचर्स चुने हैं, जिनके बारे में मुझे लगता है कि यह जानने लायक है। आइए देखते हैं क्या हैं ये विशेषताएं: -

जावा 9 में प्रोसेस एपीआई अपडेट

जावा का प्रोसेस एपीआई काफी आदिम रहा है,केवल नई प्रक्रियाओं को लॉन्च करने के लिए समर्थन के साथ, प्रक्रियाओं के आउटपुट और त्रुटि धाराओं को पुनर्निर्देशित करता है। इस रिलीज़ में, प्रक्रिया API के अपडेट निम्नलिखित को सक्षम करते हैं:

  • वर्तमान JVM प्रक्रिया की PID प्राप्त करना और JVM द्वारा प्रायोजित कोई अन्य प्रक्रिया
  • पीआईडी, नाम, और संसाधन उपयोग जैसी जानकारी प्राप्त करने के लिए सिस्टम में चल रही प्रक्रियाओं की गणना करें
  • पेड़ों की प्रक्रिया का प्रबंधन
  • उपप्रबंधों का प्रबंधन करना

आइए एक नमूना कोड देखें, जो वर्तमान पीआईडी ​​के साथ-साथ वर्तमान प्रक्रिया की जानकारी को प्रिंट करता है:



सार्वजनिक वर्ग NewFeatures {सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] args) {ProcessHandle currentProcess = ProcessHandle.current () System.out.println ('PID:' + currentProcess.getlid ()) ProcessHandle.Info currentProcessInfo = currentProcess.info () System.out.println ('जानकारी:' + currentProcessInfo)}

जावा 9 में HTTP / 2 क्लाइंट

यह जावा 9 फीचर बाद के रिलीज में बदलने की उम्मीद है और पूरी तरह से हटाया भी जा सकता है।

इससे पहले डेवलपर्स अक्सर तीसरे पक्ष के पुस्तकालयों का उपयोग करने का सहारा लेते हैं, जैसे कि अपाचे HTTP, जर्सी, और इसी तरह। इसके अतिरिक्त, जावा का HTTP एपीआई HTTP / 1.1 विनिर्देशन से पहले है और इसे बनाए रखने के लिए तुल्यकालिक और कठिन है। इन सीमाओं को एक नया एपीआई जोड़ने की आवश्यकता है। नया HTTP क्लाइंट एपीआई निम्नलिखित प्रदान करता है:

  • अधिकांश HTTP अनुरोधों से निपटने के लिए एक सरल और संक्षिप्त एपीआई
  • HTTP / 2 विनिर्देशन के लिए समर्थन
  • बेहतर प्रदर्शन
  • बेहतर सुरक्षा
  • कुछ और संवर्द्धन

आइए नए API का उपयोग करके HTTP GET अनुरोध करने के लिए एक नमूना कोड देखें। नीचे मॉड्यूल की परिभाषा फ़ाइल मॉड्यूल में परिभाषित की गई है-info.java:

मॉड्यूल newfeatures {jdk.incubator.httpclient} की आवश्यकता है

निम्न कोड HTTP क्लाइंट एपीआई का उपयोग करता है, जो jdk.incubator.httpclient मॉड्यूल का हिस्सा है:

import jdk.incubator.http। * import java.net.URI सार्वजनिक वर्ग Http2Feature {सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] args) अपवाद {HttpClient क्लाइंट = =ttpClient.newBuilder () बिल्ड () HttpRequest अनुरोध = HttpRequestequence का उपयोग करें। नया URI (http://httpbin.org/get)) .GET () .version (HttpClient.Version.HTTP_1_1) .build () HttpResponse.String प्रतिक्रिया = client.send (अनुरोध, HttpResponse.BodyHandler.asString) ())। System.out.println ('स्थिति कोड:' + response.statusCode ())
System.out.println ('रिस्पांस बॉडी:' + response.body ())}}}

जावा 9 में जावा शेल स्क्रिप्टिंग (रीड-एवल-प्रिंट-लूप)

आपने रूबी, स्काला, ग्रूवी, क्लोजर और अन्य लोगों को एक उपकरण के साथ शिपिंग करते हुए भाषाएं देखी होंगी, जिन्हें अक्सर कहा जाता है REPL () पढ़ें- एवल-प्रिंट-लूप ) का है। यह REPL उपकरण भाषा की विशेषताओं को आज़माने में बेहद उपयोगी है। उदाहरण के लिए, स्काला में, हम एक सरल हैलो वर्ल्ड प्रोग्राम लिख सकते हैं scala> Println ('हैलो वर्ल्ड')

के कुछ फायदे JShell REPL इस प्रकार हैं:

  • अनुभवी डेवलपर्स अपने मुख्य कोड आधार में इसे अपनाने से पहले जल्दी से प्रोटोटाइप और प्रयोग कर सकते हैं
  • जावा डेवलपर्स अब एक REPL का दावा कर सकते हैं

निम्न चित्र में दिखाए अनुसार JShell कमांड को चलाएं:

JShell हैलो वर्ल्ड उदाहरण - जावा 9 - एडुरका

मल्टी-रिलीज़ JAR फाइलें जावा 9 में उपलब्ध हैं

अब तक, JAR फ़ाइलों में वे कक्षाएं शामिल हो सकती हैं जो केवल उन जावा संस्करण पर चल सकती हैं, जिनके लिए उन्हें संकलित किया गया था। नए संस्करणों पर जावा प्लेटफ़ॉर्म की नई सुविधाओं का लाभ उठाने के लिए, पुस्तकालय डेवलपर्स को अपने पुस्तकालय का एक नया संस्करण जारी करना होगा। जल्द ही, डेवलपर्स द्वारा बनाए जाने वाले पुस्तकालय के कई संस्करण होंगे, जो एक बुरा सपना हो सकता है। इस सीमा को पार करने के लिए, बहु-रिलीज़ JAR फ़ाइलों की ये Java 9 सुविधाएँ डेवलपर्स को JAR फ़ाइलों को विभिन्न जावा संस्करणों के लिए अलग-अलग वर्ग फ़ाइलों के साथ बनाने की अनुमति देती हैं।निम्नलिखित उदाहरण इसे और अधिक स्पष्ट करता है।

यहाँ वर्तमान JAR फ़ाइलों का एक चित्रण है:

जार जड़ - एक कक्षा - बकलस - सीक्लास

यहां बताया गया है कि मल्टी-रिलीज़ JAR फाइलें कैसी दिखती हैं:

जार जड़ - एक कक्षा - बकलस - सीक्लास - मेटा-जानकारी - संस्करण - ९ - एक कक्षा - 10 - बकलस

पूर्ववर्ती चित्रण में, JAR दो जावा संस्करण -9 और 10 के लिए वर्ग फ़ाइलों का समर्थन करता है।

इसलिए, जब पहले जावा को जावा 9 पर निष्पादित किया जाता है, तो संस्करणों के तहत एक्लास - 9 फ़ोल्डर निष्पादन के लिए उठाए जाते हैं।

एक प्लेटफ़ॉर्म पर जो बहु-रिलीज़ JAR फ़ाइलों का समर्थन नहीं करता है, संस्करण निर्देशिका के अंतर्गत आने वाली कक्षाएं कभी उपयोग नहीं की जाती हैं। इसलिए, यदि आप जावा 8 पर मल्टी-रिलीज़ JAR फ़ाइल चलाते हैं, तो यह एक साधारण JAR फ़ाइल चलाने के समान ही अच्छा है।

जावा 9 में अधिक कंज्यूमर अपडेट्स की सुविधा है

इस अद्यतन में, एक नया वर्ग, java.util.concurrent.Flow पेश किया गया है, जिसमें प्रकाशित-सदस्यता ढांचे के कार्यान्वयन का समर्थन करने वाले नेस्टेड इंटरफेस हैं। पब्लिश-सब्सक्राइब फ्रेमवर्क डेवलपर्स को ऐसे घटकों का निर्माण करने में सक्षम बनाता है, जो सब्सक्राइबर्स द्वारा डेटा का उपभोग करने वाले प्रकाशकों और सब्सक्राइबर्स का उत्पादन करने वाले डेटा की लाइव स्ट्रीम का उपभोग कर सकते हैं, जो उन्हें प्रबंधित करता है। चार नए इंटरफेस इस प्रकार हैं:

  • java.util.concurrent.Flow.Publisher
  • java.util.concurrent.Flow.Subscriber
  • java.util.concurrent.Flow.Subscription
  • java.util.concurrent.Flow.Processor (जो प्रकाशक और ग्राहक दोनों के रूप में कार्य करता है)।

जावा 9 में प्रोजेक्ट आरा

इस परियोजना का मुख्य उद्देश्य की अवधारणा को पेश करना है प्रतिरूपकता सहयोग जावा 9 में मॉड्यूल बनाने के लिए और फिर उसी पर लागू करें JDK अर्थात्, JDK को संशोधित करें

कुछ के लाभ का प्रतिरूपकता इस प्रकार हैं:

  • मजबूत अतिक्रमण : मॉड्यूल मॉड्यूल के केवल उन हिस्सों तक पहुंच सकता है जिन्हें उपयोग के लिए उपलब्ध कराया गया है। इसलिए, पैकेज में सार्वजनिक कक्षाएं तब तक सार्वजनिक नहीं होती हैं जब तक मॉड्यूल जानकारी फ़ाइल में पैकेज को स्पष्ट रूप से निर्यात नहीं किया जाता है।
  • स्पष्ट निर्भरताएँ : मॉड्यूल को यह घोषित करना होगा कि वे कौन से अन्य मॉड्यूल का उपयोग आवश्यकता खंड के माध्यम से करेंगे।
  • छोटे रनटाइम बनाने के लिए मॉड्यूल का संयोजन, जिसे आसानी से छोटे कंप्यूटिंग उपकरणों तक बढ़ाया जा सकता है।
  • विश्वसनीय है : अनुप्रयोग समाप्त करके अधिक विश्वसनीय हैं रन-टाइम त्रुटियां उदाहरण:- आपने लापता कक्षाओं के कारण रन-टाइम के दौरान अपने आवेदन को विफल होने का अनुभव किया होगा, जिसके परिणामस्वरूप वर्ग अपवाद में नहीं मिला

विभिन्न हैं JEPs , जो इस परियोजना का हिस्सा हैं, निम्नानुसार हैं:

  • JEP 200 - मॉड्यूलर JDK : यह जावा प्लेटफ़ॉर्म मॉड्यूल सिस्टम को लागू करता है जो JDK को मॉड्यूल के एक सेट में व्यवस्थित करता है जिसे संकलित समय, निर्माण समय, या रनटाइम पर जोड़ा जा सकता है।
  • JEP 201 - मॉड्यूलर स्रोत कोड : यह मॉड्यूल में JDK स्रोत कोड को संशोधित करता है और मॉड्यूल को संकलित करने के लिए बिल्ड टूल को बढ़ाता है।
  • जेईपी 220 - मॉड्यूलर रनटाइम इमेज : यह जेडीके और जेआरई रनटाइम छवियों को मॉड्यूल को समायोजित करने और प्रदर्शन, सुरक्षा और रखरखाव में सुधार करने के लिए पुन: बनाता है।
  • JEP 260 - अधिकांश आंतरिक API को एन्क्रिप्ट करता है : यह बहुत सारे आंतरिक एपीआई को सीधे या प्रतिबिंब के माध्यम से एक्सेस करने की अनुमति देता है। आंतरिक API तक पहुंच जो परिवर्तन के लिए बाध्य है, काफी जोखिम भरा है। इसके उपयोग को रोकने के लिए, उन्हें मॉड्यूल में एनकैप्सुलेट किया जा रहा है और केवल उन्हीं आंतरिक APIs का व्यापक रूप से उपयोग किया जा रहा है जब तक कि एक उचित API उसके स्थान पर उपलब्ध न हो जाए।
  • JEP 261 - मॉड्यूल सिस्टम : यह जावा प्रोग्रामिंग भाषा, जेवीएम और अन्य मानक एपीआई को बदलकर मॉड्यूल सिस्टम जावा विनिर्देशन को लागू करता है
  • JEP 282: jlink, Java लिंकर : यह छोटे समय में पैकेजिंग मॉड्यूल और उनकी निर्भरता की अनुमति देता है।

तो, यह सब जावा 9 और नए जावा 9 सुविधाओं के बारे में था।

अब जब आप जावा 9 की विशेषताओं को समझ गए हैं, तो देखें 250,000 से अधिक संतुष्ट शिक्षार्थियों के एक नेटवर्क के साथ एक विश्वसनीय ऑनलाइन शिक्षण कंपनी, एडुरेका द्वारा, दुनिया भर में फैली हुई है।

जी ओ.टी. हमारे लिए एक प्रश्न है? कृपया इस 'जावा 9' ब्लॉग के टिप्पणी अनुभाग में उल्लेख करें और हम जल्द से जल्द आपके पास वापस आ जाएंगे।