सामान्य तौर पर, प्रोग्रामर पर चीजों को आसान बनाने के लिए काफी व्यापक परिवर्तन होते हैं। आपका प्रबंधक ऐसी चीज़ों के बारे में बहुत अधिक परवाह नहीं कर सकता है, लेकिन प्रोग्रामर बॉयलर टाइम कोड के बारे में सोचने में कम समय बिताते हैं, और इस प्रकार उनके पास अपने लागू होने के वास्तविक लक्ष्य के बारे में सोचने के लिए अधिक समय होता है, उन्हें दक्षता में वृद्धि करनी चाहिए, कीड़े कम करना चाहिए, आदि। जो एक बहुत शक्तिशाली तर्क हो सकता है । ओरेकल में परिवर्तनों की एक व्यापक सूची है , लेकिन यह बहुत लंबा है, इसलिए मैं जितना संभव हो उतना संक्षेप में बताऊंगा।
भाषा सुविधाओं में शामिल हैं:
- जेनरिक पर कम बॉयलरप्लेट। कोड
Map<String, String> myMap = new HashMap<String, String>();
को कम किया जा सकता है Map<String, String> myMap = new HashMap<>()
। कंपाइलर बाईं ओर से दाईं ओर आवश्यक जेनेरिक प्रकारों का अनुमान लगा सकता है, इसलिए आपका कोड पढ़ने में थोड़ा छोटा और तेज हो जाता है।
- स्ट्रिंग्स अब स्विच स्टेटमेंट में काम करते हैं ,
.equals()
विधि के शब्दार्थ का उपयोग करते हुए ==
।
- स्वत: संसाधन प्रबंधन के साथ-साथ संसाधनों का उपयोग करना। यह कोड क्लीनर बनाता है, लेकिन पुरानी शैली की कोशिश / अंत में आधारित कोड पर भी एक फायदा है। यदि प्रयास वक्तव्य में एक अपवाद को फेंक दिया जाता है, और फिर बंद करते समय एक और फेंक दिया जाता है, तो कोड जो पारंपरिक कोशिश / अंत में बयान का उपयोग करता है, पूरी तरह से मूल अपवाद को खो देगा, और केवल उसी को पास करेगा जिसे अंततः ब्लॉक में फेंक दिया गया था। एक कोशिश के साथ संसाधनों के बयान में, रनटाइम अपवाद को दबा देगा कि बंद () कॉल को फेंक दिया जाता है, और मूल अपवाद को स्टैक तक बुलबुला कर देता है, इस धारणा के तहत कि यह मूल अपवाद वह है जो पहले सभी समस्याओं का कारण बना था। स्थान। इसके अतिरिक्त, कचरा कलेक्टर को अन्य अपवाद को छोड़ने के बजाय, यह दमन करीब-करीब अपवादों का उपयोग करके पुनर्प्राप्त करने की अनुमति देता है
Throwable.getSuppressed
।
- न्यूमेरिक लिटरल को पढ़ना आसान बनाया जा सकता है। सभी संख्यात्मक शाब्दिक अंडरस्कोर की अनुमति देते हैं , इसलिए चीजों
int n = 1000000000
को बहुत अधिक पठनीय बनाया जा सकता है int n = 1_000_000_000
, जो एक अरब होने के रूप में पार्स करना बहुत आसान है, और बिना नोटिस के गलत तरीके से टाइप करना कठिन है। इसके अलावा, द्विआधारी शाब्दिक रूप में अनुमति दी जाती है 0b10110101
, जिससे कोड तैयार होता है जो पढ़ने के लिए थोड़ा-सा क्षेत्र के साथ काम करता है।
- एक ही कैच स्टेटमेंट को कई अपवाद प्रकारों से हैंडल करना , डुप्लिकेटिंग कोड को कम करना और बाद में रिफ्लेक्टर को आसान बनाना संभव है।
इन परिवर्तनों में से हर एक ऐसी चीज है जिसके बारे में आपका प्रबंधक सीधे ध्यान नहीं दे सकता है, लेकिन वे बिना किसी प्रयास और विचार के सही कोड लिखना थोड़ा आसान कर देते हैं, अपने दिमाग को उस वास्तविक तर्क पर केंद्रित करने के लिए स्वतंत्र होते हैं जिसे आप आजमा रहे हैं। लागू करने के लिए, और वे कोड को बाद में पढ़ना थोड़ा आसान बना देते हैं, जिससे डिबगिंग थोड़ी तेज़ हो जाती है।
एपीआई की ओर, कई एपीआई अद्यतन भी हुए हैं:
- सुरक्षा-वार , कई एन्क्रिप्शन विधियों को जोड़ा / हटा दिया गया है, क्योंकि क्रिप्टो कभी आगे बढ़ता है।
- फ़ाइल IO को बदल दिया गया है, ( यह एक बेहतर लिंक हो सकता है, हालांकि ) कई स्थानों पर कुछ बेहतर अमूर्तता को जोड़ता है। मैंने व्यक्तिगत रूप से नए IO सामान में डुबकी नहीं लगाई है, लेकिन यह एक बहुत ही उपयोगी ओवरहाल की तरह दिखता है, जिससे फाइलसिस्टम के साथ काम करना काफी आसान हो जाता है बिना दर्द के।
- यूनिकोड का समर्थन यूनिकोड 6.0 तक है, साथ ही कई अन्य अंतर्राष्ट्रीयकरण संवर्द्धन भी हैं।
- Java2D , जिसका आपने अपने प्रश्न में उल्लेख किया है, को बेहतर बनाया गया है। बेहतर लिनक्स फ़ॉन्ट समर्थन, आधुनिक मशीनों पर बेहतर X11 प्रतिपादन, और तिब्बती लिपियों का संचालन।