1. Java च्या आवृत्त्यांचा इतिहास

जावाचा इतिहास 1991 मध्ये सुरू होतो, जेव्हा सन प्रोग्रामरच्या एका गटाने छोट्या उपकरणांसाठी भाषा तयार करण्याचा निर्णय घेतला: टीव्ही रिमोट कंट्रोल्स, कॉफी मेकर, टोस्टर्स, बँक कार्ड इ.

या उपकरणांचे निर्माते त्यांच्या उत्पादनांवर नियंत्रण ठेवण्यासाठी खूप भिन्न प्रोसेसर वापरतात, म्हणून विशिष्ट प्रोसेसर किंवा OS च्या आर्किटेक्चरशी जोडले जाणे खूप महत्वाचे आहे.

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

बहुतेक प्रोग्रामर संगणकाला मशीन म्हणून संबोधतात.

मनोरंजक.

C++ हा जावा भाषेसाठी आधार म्हणून घेतला गेला आणि मोठ्या प्रमाणात सरलीकृत आणि प्रमाणित करण्यात आला. जर C++ तुम्हाला 10 मार्गांनी काही करू देत असेल, तर Java ने त्यापैकी फक्त एक ठेवला आहे. काही मार्गांनी हे चित्रलिपीपासून वर्णमाला बदलण्यासारखे होते.

जावाची पहिली आवृत्ती 1996 मध्ये प्रसिद्ध झाली. तेव्हापासून, जावाने जगभरात विजयी वाटचाल सुरू केली, ज्यामुळे, भाषेच्या उत्क्रांती आणि वाढीला चालना मिळाली. आज, जावामध्ये लाखो लायब्ररी आणि अब्जावधी ओळी कोड लिहिलेल्या आहेत आणि जावाच्या नवीन आवृत्त्या दर 6 महिन्यांनी रिलीझ केल्या जातात:

नाव वर्ष वर्गांची संख्या
JDK 1.0 1996 211
JDK 1.1 1997 ४७७
J2SE 1.2 1998 १,५२४
J2SE 1.3 2000 १,८४०
J2SE 1.4 2002 २,७२३
J2SE 5.0 2004 ३,२७९
Java SE 6 2006 ३,७९३
Java SE 7 2011 ४,०२४
Java SE 8 2014 ४,२४०
Java SE 9 2017 6,005
Java SE 10 2018 6,002
Java SE 11 2018 ४,४११
Java SE 12 2019 ४,४३३
Java SE 13 2019 ४,५१५

जरी Java च्या आवृत्त्या नियमितपणे प्रसिद्ध केल्या गेल्या, तरी त्या सर्व प्रोग्रामरसाठी समान महत्त्व धारण करत नाहीत: जावा योग्य आणि प्रारंभामध्ये विकसित झाला आहे.


2. जावा 2

JDK 1.2 च्या रिलीझसह पहिली मोठी झेप पुढे आली. त्यात इतके नवनवीन शोध होते की Java च्या निर्मात्यांनी त्याचे नाव Java 2 Platform Standard Edition किंवा J2SE 1.2 असे ठेवले.

मुख्य नवकल्पना होत्या:

  • strictfpकीवर्ड
  • ग्राफिक्ससह काम करण्यासाठी स्विंग लायब्ररी
  • JIT कंपाइलर, ज्याने Java प्रोग्राम्सच्या अंमलबजावणीला गती दिली
  • संग्रहांचा एक मोठा संच
  • पूर्ण युनिकोड समर्थन: जपानी, चीनी आणि कोरियन.

आज, हे नवकल्पना इतके मोठे वाटत नाहीत, परंतु प्रत्येक मोठा प्रकल्प लहानातून वाढतो. 20 वर्षांपूर्वी जर प्रोग्रामरच्या एका छोट्या गटाने भाषा सुधारत राहिली नसती तर जावा आज तितका लोकप्रिय नसता.


3. Java 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

Java 6 मोठ्या संख्येने लहान सुधारणांसाठी आणि नावातील क्रमांक 2 सोडून दिल्याबद्दल लक्षात ठेवले जाते: ते आता "Java 2 Standard Edition 6.0" नव्हते, तर फक्त "Java Standard Edition 6.0" होते.

येथे काही मनोरंजक नवकल्पना आहेत:

Java Compiler API ने कोडवरून थेट Java कंपाइलरला कॉल करणे शक्य केले . म्हणजे तुमचा प्रोग्राम आता क्लास कोडचे प्रतिनिधित्व करणारा मजकूर व्युत्पन्न करू शकतो, Java Compiler API च्या पद्धती कॉल करून संकलित करू शकतो आणि त्यानंतर लगेचच संकलित वर्गाच्या पद्धतींना कॉल करणे सुरू करू शकतो. विकासाची संपूर्ण क्षेत्रे आहेत जिथे ही क्षमता जीवनास मोठ्या प्रमाणात सुलभ करते.

जावा प्रोग्राममध्ये थेट JavaScript कार्यान्वित करणे शक्य झाले . हे वैशिष्ट्य दिसून आले कारण JavaSE 6 मध्ये Rhino JavaScript इंजिन समाविष्ट होते.


5. Java 7

जावा 7 जुलै 2011 मध्ये रिलीझ करण्यात आला. त्यात अनेक सुधारणा अपेक्षित होत्या, परंतु प्रोग्रामर नियोजित केलेल्या गोष्टींचा फक्त एक छोटासा भाग जोडण्यात यशस्वी झाले. विशेषतः, त्यांनी यासारख्या गोष्टी जोडल्या:

डेटा इनपुट आणि आउटपुटसह कार्य करण्यासाठी नवीन लायब्ररी. नवीन इनपुट आउटपुट API म्हणून ओळखले जाते , ते पॅकेजमध्ये स्थित आहे java.nio.

संकलित वेळी Java कंपाइलरचे स्वयंचलित प्रकार अनुमान प्रोग्रामरना कमी कोड लिहू देतात. कंपाइलर अधिक हुशार झाला, आणि ही फक्त सुरुवात होती.

स्विच स्टेटमेंटने केस व्हॅल्यू म्हणून स्ट्रिंग वापरण्याची क्षमता प्राप्त केली.

स्वयंचलित संसाधन व्यवस्थापन देखील लक्षणीयरीत्या सुधारले आहे: try-with-resourcesरचना सह, Java प्रोग्राम आपल्यासाठी डेटा प्रवाह यापुढे आवश्यक नसताना बंद करू शकतो.

इतरही बरेच बदल झाले, परंतु ते जावा शिकण्याच्या आमच्या सध्याच्या टप्प्यावर इतके महत्त्वाचे नाहीत.


6. जावा 8

Java 8 मार्च 2014 मध्ये बाहेर आला आणि Java चे सर्वात मजबूत अलीकडील अपडेट होते.

@FunctionalInterfaceसर्वात महत्त्वाचे म्हणजे, प्रोग्रामर हे लॅम्बडा अभिव्यक्ती आणि कार्यात्मक इंटरफेस ( भाष्य) जोडण्यासाठी लक्षात ठेवतात . आम्ही त्यांची पातळी 21 वर तपासणी करू. तुमचा कोड पुन्हा कधीही सारखा राहणार नाही.

संग्रहांसाठी प्रवाह देखील जोडले गेले, ज्याने, लॅम्बडा अभिव्यक्तीसह, कोड अधिक संक्षिप्तपणे लिहिणे शक्य केले. जरी नेहमीच जास्त वाचनीय नसले तरी.

मनोरंजक.

आणि तिसरा मोठा बदल म्हणजे जावा 8 ने तारखा आणि वेळेसह कार्य करण्यासाठी संपूर्ण नवीन API ची ओळख - तारीख वेळ API . नजीकच्या भविष्यात आम्ही त्याचा अभ्यास करू.


7. जावा 9

Java 9 सप्टेंबर 2017 मध्ये रिलीझ झाला. तेव्हापासून, Java च्या निर्मात्यांनी दर सहा महिन्यांनी - नवीन आवृत्त्या अधिक वारंवार रिलीझ करण्याचा निर्णय घेतला आहे. Google Chrome ब्राउझरच्या विकसकांनी अवलंबलेल्या दृष्टिकोनामुळे ते कदाचित प्रभावित झाले असतील.

Java 9 रिलीझने Java मशीनच्या अंतर्गत भागांवर अधिक लक्ष केंद्रित केले. सामान्य प्रोग्रामरसाठी सर्वात महत्त्वाची गोष्ट म्हणजे प्रोग्रामला मॉड्यूलमध्ये विभाजित करण्याची क्षमता. जेव्हा तुमच्याकडे हजारो वर्ग असतात किंवा तुमचा कोड डायनॅमिकली प्लगइन्स अनलोड करतो तेव्हा हे अतिशय सोयीचे असते.

पण नजीकच्या भविष्यात कदाचित त्याचा आपल्याला फारसा उपयोग होणार नाही.


8. Java 11

Java 9 रिलीझ झाल्यानंतर सहा महिन्यांनी, Java 10 बाहेर आला आणि आणखी सहा महिन्यांनंतर, Java 11 बाहेर आला.

या वेळी अनेक लहान सुधारणा केल्या गेल्या, परंतु तुम्हाला बहुधा फक्त दोनच आठवतील:

यात युनिकोड 10 साठी समर्थन जोडले आहे. आता तुम्ही तुमच्या Java प्रोग्राम्समध्ये इमोजी वापरू शकता. तुम्ही बुलियन प्रकारात जसे काम करता त्याच प्रकारे तुम्ही त्यांच्यासोबत काम करू शकता:

टाईप इन्फरन्स सुधारला आहे, आणि तुम्हाला नक्की आवडेल असा varकीवर्ड दिसला.

आता आपण खालील लिहू शकता:

var str = "Hello";

आणि कंपाइलर याला यात रूपांतरित करतो:

String str = "Hello";

पण काही नुकसानही होते. Java च्या निर्मात्यांनी JDK 11 मधून JavaFX, Java EE आणि CORBA सारख्या लायब्ररी वगळल्या.


9. सुसंगततेचे महत्त्व

जेव्हा नवीन आवृत्ती रिलीझ केली जाते, तेव्हा प्रोग्रामर बर्‍याचदा सुरवातीपासून प्रारंभ करू इच्छितात. शेवटी, कोड अगदी सुरुवातीपासून कसा लिहिला गेला असावा हे पूर्णपणे सकारात्मक असताना जुन्या बग्सचा एक समूह कोणाला दुरुस्त करायचा आहे?

पण इतिहास अशा पद्धतीचे समर्थन करत नाही. प्रत्येक वेळी प्रोग्रामर प्रोग्रामची नवीन आवृत्ती रिलीझ करत असताना, त्याचे 90% वापरकर्ते जुनी आवृत्ती वापरत आहेत. ते प्रोग्रामच्या नवीन वैशिष्ट्यांचा वापर करू शकतात किंवा दुर्लक्ष करू शकतात, परंतु वापरकर्ते काय तिरस्कार करतात जेव्हा चांगले कार्य करत असलेली एखादी गोष्ट काम करणे थांबवते.

प्रोग्रामरने नवीन आवृत्त्या सोडल्या ज्या सुसंगत नाहीत तेव्हा अनेक उत्कृष्ट उत्पादने मरण पावली आहेत. किंवा फक्त जेव्हा त्यांनी मोठे बदल केले. उदाहरणार्थ, विंडोज 8 मधील स्टार्ट बटण सोडण्याची कल्पना वापरकर्त्यांना आकर्षित करत नाही. Windows 10 च्या रिलीझने विंडो 8 मध्ये काढलेल्या अर्ध्या गोष्टी परत आणल्या.

आणखी काय, Windows तुम्हाला Windows 95 साठी 20 वर्षांपूर्वी लिहिलेले किंवा MS DOS 3.0 साठी 30 वर्षांपूर्वी लिहिलेले प्रोग्राम चालवू देते — ते कार्य करतील. विंडोज लोकप्रिय राहण्याचे हे एक कारण आहे.

आणि जावा त्याच्या विकसकांनी सुसंगततेची काळजी घेतली नाही तर ती तितकी लोकप्रिय होणार नाही. जावा मशीनची नवीन आवृत्ती, SDK ची नवीन आवृत्ती किंवा वर्गांमध्ये मोठे बदल केव्हाही, जानेवारी 1996 पासून लिहिलेले सर्व Java कोड कार्य करत राहतात.

हे सहसा काहीही न काढता केवळ नवीन पद्धती, वर्ग आणि पॅकेजेस जोडून साध्य केले जाते. या दृष्टिकोनाचे त्याचे फायदे आणि तोटे आहेत.

एकीकडे, Java जुन्या, सबऑप्टिमल आणि अनावश्यक कोडच्या रूपात सामानाच्या गुच्छभोवती खेचते. दुसरीकडे, Java 11 मध्ये लिहिलेला तुमचा प्रकल्प नेहमी Java 8 मध्‍ये लिहिलेली लायब्ररी वापरू शकतो जी Java 5 आणि Java 2 मध्ये लिहिलेली लायब्ररी वापरते. कोडचा हा हॉजपॉज अगदी ठीक काम करेल.

C++ भाषेसह, 32-बिट आणि 64-बिट प्लॅटफॉर्मसाठी संकलित केलेली लायब्ररी एकाच प्रकल्पात वापरली जाऊ शकत नाही. charआणि एका लायब्ररीमध्ये वापरलेला प्रकार एक बाइट वापरतो, तर दुसरा दोन बाइट वापरतो हे तुम्हाला अचानक आढळल्यास तुम्हाला मोठी डोकेदुखी होईल .


10. नापसंत

म्हणून, जावाच्या निर्मात्यांनी काहीही न काढण्याचा निर्णय घेतला, परंतु केवळ नवीन वर्ग आणि पॅकेजेस जोडण्याचा निर्णय घेतला. परंतु विद्यमान सबऑप्टिमल सोल्यूशनसाठी एक नवीन योग्य पर्याय आहे हे ते प्रोग्रामरना कसे कळवतील?

हे करण्यासाठी, ते @Deprecatedभाष्य घेऊन आले.

काही पद्धत किंवा वर्ग बहिष्कृत असल्यास, ही भाष्य त्याच्या घोषणेच्या पुढे जोडली जाते. याचा अर्थ प्रोग्रामरना कोड वापरण्यापासून परावृत्त केले जाते.

तुम्ही अजूनही नापसंत वर्ग किंवा पद्धत वापरू शकता, परंतु त्याची शिफारस केलेली नाही.

आणि लोक किती वेळा अशा गोष्टी करतात ज्यांची शिफारस केलेली नाही? जवळजवळ नेहमीच 🙂

अनेक वर्ग 20 वर्षांपासून नापसंत केले गेले आहेत — ते वापरले गेले आहेत आणि अजूनही वापरले जात आहेत. लोक त्यांच्याशी परिचित आहेत किंवा ते फक्त सोयीस्कर आहेत. परंतु एक धोका आहे की ते कधीतरी काढून टाकले जातील, म्हणून त्यांचा वापर न करणे चांगले.

IntelliJ IDEA सह सर्व आधुनिक IDE, @Deprecatedभाष्य हाताळू शकतात. नापसंत वर्ग आणि पद्धतींची नावे स्ट्राइकथ्रू स्वरूपन वापरून प्रदर्शित केली जातात. यासारखेच काहीसे:

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

कालबाह्य वर्ग खूप लोकप्रिय आहेत आणि बर्याचदा कोडमध्ये आढळतात, म्हणून आम्ही लवकरच त्यापैकी काही पाहू.