1. जावा के संस्करणों का इतिहास

जावा का इतिहास 1991 में शुरू होता है, जब सन प्रोग्रामर्स के एक समूह ने छोटे उपकरणों के लिए एक भाषा बनाने का फैसला किया: टीवी रिमोट कंट्रोल, कॉफी मेकर, टोस्टर, बैंक कार्ड, और इसी तरह।

इन उपकरणों के निर्माता अपने उत्पादों को नियंत्रित करने के लिए बहुत अलग प्रोसेसर का इस्तेमाल करते थे, इसलिए किसी विशेष प्रोसेसर या ओएस के आर्किटेक्चर से बंधा होना बहुत महत्वपूर्ण हो गया।

जावा के रचनाकारों ने समस्या को दो भागों में विभाजित करने का निर्णय लिया: उनके कार्यक्रमों को एक विशिष्ट प्रोसेसर के लिए मशीन कोड में नहीं, बल्कि एक विशेष मध्यवर्ती कोड में संकलित किया जाएगा। बदले में, उस मध्यवर्ती कोड को एक विशेष प्रोग्राम द्वारा निष्पादित किया जाएगा जिसे वर्चुअल मशीन कहा जाता है ।

अधिकांश प्रोग्रामर कंप्यूटर को एक मशीन के रूप में संदर्भित करते हैं।

दिलचस्प।

सी ++ को जावा भाषा के आधार के रूप में लिया गया था और इसे बहुत सरल और मानकीकृत किया गया था। यदि C ++ आपको 10 तरीकों से कुछ करने देता है, तो जावा उनमें से केवल एक को बनाए रखता है। कुछ मायनों में यह चित्रलिपि से वर्णमाला में परिवर्तन जैसा था।

जावा का पहला संस्करण 1996 में जारी किया गया था। उस समय से, जावा ने दुनिया भर में अपनी विजयी यात्रा शुरू की, जिसने बदले में भाषा के विकास और विकास को प्रेरित किया। आज, लाखों पुस्तकालय और कोड की अरबों लाइनें जावा में लिखी गई हैं, और हर 6 महीने में जावा के नए संस्करण जारी किए जाते हैं:

नाम वर्ष कक्षाओं की संख्या
जेडीके 1.0 1996 211
जेडीके 1.1 1997 477
जे2एसई 1.2 1998 1,524
जे2एसई 1.3 2000 1,840
जे2एसई 1.4 2002 2,723
जे2एसई 5.0 2004 3,279
जावा एसई 6 2006 3,793
जावा एसई 7 2011 4,024
जावा एसई 8 2014 4,240
जावा एसई 9 2017 6,005
जावा एसई 10 2018 6,002
जावा एसई 11 2018 4,411
जावा एसई 12 2019 4,433
जावा एसई 13 2019 4,515

हालांकि जावा के संस्करण नियमित रूप से जारी किए गए थे, वे सभी प्रोग्रामर के लिए समान महत्व नहीं रखते थे: जावा फिट और स्टार्ट में विकसित हुआ है।


2. जावा 2

पहली बड़ी छलांग JDK 1.2 की रिलीज के साथ हुई। इसमें इतने सारे नवाचार थे कि जावा के रचनाकारों ने इसका नाम बदलकर Java 2 Platform Standard Edition या संक्षेप में J2SE 1.2 रख दिया।

मुख्य नवाचार थे:

  • strictfpकीवर्ड
  • ग्राफिक्स के साथ काम करने के लिए स्विंग लाइब्रेरी
  • जेआईटी कंपाइलर, जिसने जावा प्रोग्राम के निष्पादन को गति दी
  • संग्रह का एक बड़ा सेट
  • पूर्ण यूनिकोड समर्थन: जापानी, चीनी और कोरियाई।

आज ये अविष्कार इतने बड़े नहीं लगते, लेकिन हर बड़ा प्रोजेक्ट एक छोटे से बड़ा होता है। जावा आज उतना लोकप्रिय नहीं होता अगर प्रोग्रामरों के एक छोटे समूह ने 20 साल पहले भाषा में सुधार नहीं किया होता।


3. जावा 5

JDK 1.5 सितंबर 2004 में जारी किया गया था। इसने बहुत सारे नवाचार भी पेश किए, इसलिए यह मदद नहीं कर सका लेकिन एक नए नाम के योग्य था: संस्करण 1.5, 1.6 और 1.7 के बजाय, उन्होंने 5.0, 6.0 और 7.0 का उपयोग करने का निर्णय लिया। तो, JDK 1.5 का पूरा नाम Java 2 Standard Edition 5.0 था

इस अद्यतन में ऐसी चीजें शामिल थीं जिनके बिना भाषा का और विकास संभव नहीं होता।

एनोटेशन । स्प्रिंग और हाइबरनेट से जुनीट तक, आधे प्रमुख आधुनिक ढांचे एनोटेशन पर बनाए गए हैं।

जेनरिक । जेनरिक ने संग्रह की शक्ति (और भी बहुत कुछ) को नई ऊंचाइयों पर पहुंचाया है। कोड सरल, अधिक कॉम्पैक्ट और सुरक्षित हो गया है।

ऑटोबॉक्सिंग/अनबॉक्सिंग आदिम प्रकारों और उनके रैपर प्रकारों के बीच स्वत: रूपांतरण है। इससे कोड लिखना और पढ़ना बहुत आसान हो गया, और संग्रह और भी लोकप्रिय हो गए।

लूप अब प्रोग्रामर foreachद्वारा लिखे गए सभी लूपों का कम से कम आधा हिस्सा है। और, ज़ाहिर है, संग्रह के साथ काम करते समय यह अनिवार्य है।

एनम एक और अच्छी नई सुविधा है यह कई चीजों को खूबसूरती से सरल बनाने की अनुमति देता है।

ये सभी नवाचार नहीं हैं: सैकड़ों नए वर्ग जोड़े गए। महत्वपूर्ण बात यह है कि वे बिल्कुल सही नवाचार थे, और उन्होंने जावा की लोकप्रियता को एक और शक्तिशाली बढ़ावा दिया।


4. जावा 6

जावा 6 को बड़ी संख्या में छोटे सुधारों और नाम में नंबर 2 के परित्याग के लिए याद किया जाता है: यह अब "जावा 2 मानक संस्करण 6.0" नहीं था, बल्कि केवल "जावा मानक संस्करण 6.0" था।

यहाँ कुछ दिलचस्प नवाचार हैं:

जावा कंपाइलर एपीआई ने जावा कंपाइलर को सीधे कोड से कॉल करना संभव बना दिया । इसका मतलब है कि आपका प्रोग्राम अब क्लास कोड का प्रतिनिधित्व करने वाला टेक्स्ट उत्पन्न कर सकता है, इसे जावा कंपाइलर एपीआई के तरीकों को कॉल करके संकलित कर सकता है , और फिर तुरंत संकलित क्लास के तरीकों को कॉल करना शुरू कर सकता है। विकास के ऐसे पूरे क्षेत्र हैं जहाँ यह क्षमता जीवन को बहुत सरल बनाती है।

जावा प्रोग्राम के अंदर सीधे जावास्क्रिप्ट को निष्पादित करना संभव हो गया । यह सुविधा दिखाई दी क्योंकि JavaSE 6 में Rhino JavaScript इंजन शामिल था।


5. जावा 7

जावा 7 जुलाई 2011 में जारी किया गया था। इसमें कई सुधार होने चाहिए थे, लेकिन प्रोग्रामर केवल योजना का एक छोटा सा हिस्सा जोड़ने में कामयाब रहे। विशेष रूप से, उन्होंने चीजों को जोड़ा जैसे:

डेटा इनपुट और आउटपुट के साथ काम करने के लिए एक नया पुस्तकालय। न्यू इनपुट आउटपुट एपीआई के रूप में जाना जाता है , यह java.nioपैकेज में स्थित है ।

संकलन समय पर जावा कंपाइलर का स्वचालित प्रकार का अनुमान प्रोग्रामर को कम कोड लिखने देता है। संकलक होशियार हो गया, और वह तो बस शुरुआत थी।

स्विच स्टेटमेंट ने स्ट्रिंग्स को केस वैल्यू के रूप में उपयोग करने की क्षमता प्राप्त की।

स्वत: संसाधन प्रबंधन में भी काफी सुधार हुआ है: try-with-resourcesनिर्माण के साथ, जावा प्रोग्राम आपके लिए डेटा स्ट्रीम बंद कर सकता है जब उन्हें अब आवश्यकता नहीं है।

और भी कई बदलाव थे, लेकिन जावा सीखने के हमारे वर्तमान चरण में वे इतने महत्वपूर्ण नहीं हैं।


6. जावा 8

जावा 8 मार्च 2014 में बाहर आया और जावा का सबसे मजबूत हालिया अपडेट था।

@FunctionalInterfaceइन सबसे ऊपर, प्रोग्रामर इसे लैम्ब्डा एक्सप्रेशन और कार्यात्मक इंटरफेस ( एनोटेशन) के अतिरिक्त के लिए याद करते हैं । हम 21 स्तर पर उनकी जांच करेंगे। आपका कोड फिर कभी वही नहीं रहेगा।

संग्रह के लिए धाराएँ भी जोड़ी गईं, जो लैम्ब्डा अभिव्यक्तियों के संयोजन में, कोड को अधिक कॉम्पैक्ट रूप से लिखना संभव बनाती हैं। हालांकि हमेशा अधिक पठनीय नहीं।

दिलचस्प।

और तीसरा बड़ा बदलाव जावा 8 द्वारा तारीखों और समय के साथ काम करने के लिए एक पूरी तरह से नई एपीआई की शुरुआत थी - डेट टाइम एपीआई । हम निकट भविष्य में इसका अध्ययन करेंगे।


7. जावा 9

जावा 9 सितंबर 2017 में जारी किया गया था। उस समय से, जावा के रचनाकारों ने हर छह महीने में नए संस्करण जारी करने का फैसला किया है। वे शायद गूगल क्रोम ब्राउज़र के डेवलपर्स द्वारा अपनाए गए दृष्टिकोण से प्रभावित थे।

जावा 9 रिलीज़ ने जावा मशीन के आंतरिक भाग पर अधिक ध्यान केंद्रित किया। सामान्य प्रोग्रामरों के लिए यह सबसे महत्वपूर्ण चीज थी जो एक प्रोग्राम को मॉड्यूल में विभाजित करने की क्षमता थी। यह तब बहुत सुविधाजनक होता है जब आपके पास दसियों हजार कक्षाएं हों या जब आपका कोड गतिशील रूप से प्लगइन्स को अनलोड करता हो।

लेकिन निकट भविष्य में शायद यह हमारे लिए बहुत कम उपयोगी होगा।


8. जावा 11

जावा 9 के रिलीज़ होने के छह महीने बाद, जावा 10 आया, और छह महीने बाद, जावा 11 आया।

इस समय के दौरान बहुत से छोटे सुधार किए गए थे, लेकिन आपको अधिकतर केवल दो ही याद होंगे:

इसने यूनिकोड 10 के लिए समर्थन जोड़ा। अब आप अपने जावा प्रोग्राम में इमोजी का उपयोग कर सकते हैं। आप उनके साथ उसी तरह काम कर सकते हैं जिस तरह आप बूलियन प्रकार के साथ काम करते हैं:

प्रकार अनुमान में सुधार किया गया था, और वह varकीवर्ड दिखाई दिया, जिसे आप निश्चित रूप से पसंद करेंगे।

अब आप निम्नलिखित लिख सकते हैं:

var str = "Hello";

और संकलक इसे इसमें परिवर्तित करता है:

String str = "Hello";

लेकिन कुछ नुकसान भी हुए। जावा के रचनाकारों ने JDK 11 से JavaFX, Java EE और CORBA जैसे पुस्तकालयों को हटा दिया।


9. अनुकूलता का महत्व

जब एक नया संस्करण जारी किया जाता है, तो प्रोग्रामर अक्सर स्क्रैच से शुरू करना चाहते हैं। आखिरकार, पुराने बगों का एक गुच्छा कौन ठीक करना चाहता है जब वे बिल्कुल सकारात्मक हैं कि कोड को शुरुआत से ही कैसे लिखा जाना चाहिए था?

लेकिन इतिहास ऐसे दृष्टिकोण का समर्थन नहीं करता है। हर बार जब प्रोग्रामर किसी प्रोग्राम का नया संस्करण जारी करते हैं, तो इसके 90% उपयोगकर्ता पुराने संस्करण का उपयोग कर रहे होते हैं। वे प्रोग्राम की नई विशेषताओं का उपयोग या उपेक्षा कर सकते हैं, लेकिन जब कोई अच्छी तरह से काम करने वाली चीज काम करना बंद कर देती है तो उपयोगकर्ता उससे नफरत करते हैं।

जब प्रोग्रामरों ने ऐसे नए संस्करण जारी किए जो संगत नहीं थे तो कई बेहतरीन उत्पाद समाप्त हो गए। या बस जब उन्होंने बड़े बदलाव किए। उदाहरण के लिए, विंडोज 8 में स्टार्ट बटन को छोड़ने का विचार उपयोगकर्ताओं को पसंद नहीं आया। विंडोज 10 की रिलीज़ ने विंडो 8 में जो हटा दिया गया था, उसका आधा हिस्सा वापस ले लिया।

और तो और, विंडोज़ आपको विंडोज़ 95 के लिए 20 साल पहले लिखे गए प्रोग्राम चलाने देता है या एमएस डॉस 3.0 के लिए 30 साल पहले लिखे गए प्रोग्राम चलाने देता है - वे काम करेंगे। विंडोज के लोकप्रिय बने रहने का यह एक कारण है।

और जावा उतना लोकप्रिय नहीं होगा जितना कि इसके डेवलपर्स ने संगतता की परवाह नहीं की। किसी भी समय जावा मशीन का एक नया संस्करण, एसडीके का एक नया संस्करण, या कक्षाओं में बड़े बदलाव, जनवरी 1996 से लिखे गए सभी जावा कोड काम करना जारी रखते हैं।

यह आमतौर पर कुछ भी हटाए बिना केवल नई विधियों, कक्षाओं और पैकेजों को जोड़कर हासिल किया जाता है। इस दृष्टिकोण के अपने पक्ष और विपक्ष हैं।

एक ओर, जावा पुराने, उप-इष्टतम और अनावश्यक कोड के रूप में सामान के एक समूह के चारों ओर घसीटता है। दूसरी ओर, जावा 11 में लिखी गई आपकी परियोजना हमेशा जावा 8 में लिखी गई लाइब्रेरी का उपयोग कर सकती है जो जावा 5 और जावा 2 में लिखी गई लाइब्रेरी का उपयोग करती है। कोड का यह हॉजपॉज ठीक काम करेगा।

सी ++ भाषा के साथ, 32-बिट और 64-बिट प्लेटफॉर्म दोनों के लिए संकलित पुस्तकालयों का उपयोग उसी प्रोजेक्ट में नहीं किया जा सकता है। और यदि आपको अचानक पता चलता है कि charएक लाइब्रेरी में प्रयुक्त प्रकार एक बाइट का उपयोग करता है, जबकि दूसरा दो बाइट्स का उपयोग करता है, तो आपको बहुत बड़ा सिरदर्द होगा।


10. बहिष्कृत

इसलिए, जावा के रचनाकारों ने कुछ भी नहीं हटाने का फैसला किया, लेकिन केवल नई कक्षाएं और पैकेज जोड़ने के लिए। लेकिन वे प्रोग्रामर्स को कैसे बताते हैं कि मौजूदा उप-इष्टतम समाधान के लिए एक नया योग्य विकल्प है?

ऐसा करने के लिए, वे एनोटेशन के साथ आए @Deprecated

यदि किसी विधि या वर्ग को पदावनत किया जाता है, तो यह एनोटेशन उसकी घोषणा के आगे जोड़ा जाता है। इसका अर्थ है कि प्रोग्रामर कोड का उपयोग करने से हतोत्साहित होते हैं।

आप अभी भी बहिष्कृत वर्ग या विधि का उपयोग कर सकते हैं, लेकिन इसकी अनुशंसा नहीं की जाती है।

और कितनी बार लोग ऐसे काम करते हैं जिनकी अनुशंसा नहीं की जाती है? लगभग हमेशा 🙂

कई वर्गों को 20 वर्षों के लिए बहिष्कृत कर दिया गया है - उनका उपयोग किया गया है और अभी भी उपयोग किया जा रहा है। लोग उनसे परिचित हैं या वे सिर्फ सुविधाजनक हैं। लेकिन एक जोखिम है कि उन्हें किसी बिंदु पर हटा दिया जाएगा, इसलिए बेहतर है कि उनका उपयोग न करें।

IntelliJ IDEA सहित सभी आधुनिक IDE @Deprecatedएनोटेशन को संभाल सकते हैं। बहिष्कृत वर्गों और विधियों के नाम स्ट्राइकथ्रू स्वरूपण का उपयोग करके प्रदर्शित किए जाते हैं। कुछ इस तरह:

Date date = new Date();
int day = date.getDay();

पदावनत वर्ग बहुत लोकप्रिय हैं और अक्सर कोड में पाए जाते हैं, इसलिए हम जल्द ही उनमें से कुछ को देखेंगे।