java - सूर्य की मालिकाना जावा कक्षाओं का उपयोग करना एक बुरा अभ्यास है?




sun (5)

एक गैर-सूर्य JVM के साथ अपना कोड चलाने का प्रयास करें और देखें कि क्या होता है ...

(आपका कोड क्लास नॉटफाउंड अपवाद के साथ विफल हो जाएगा)

यदि आप सूर्य की मालिकाना जावा कक्षाओं का उपयोग करते हैं तो संकलक डिस्प्ले चेतावनी देता है। मेरा मानना ​​है कि इन वर्गों का उपयोग करना आम तौर पर एक बुरा विचार है। मैंने इसे कहीं पढ़ा। हालांकि, चेतावनियों के अलावा वहां कोई मौलिक कारण हैं कि आपको उनका उपयोग क्यों नहीं करना चाहिए?



मेरे पास हाल ही में एक ऐसा मामला था जिसने आप इन कक्षाओं का उपयोग करते समय एक वास्तविक दुनिया की समस्या को दिखाया: हमारे पास कोड था जो संकलित नहीं करेगा क्योंकि यह एक सूर्य पर उपयोग कर रहा था। * कक्षा बस उबंटू पर ओपनजेडीके में मौजूद नहीं थी। तो मुझे लगता है कि इन कक्षाओं का उपयोग करते समय आप अब 'जावा 5 के साथ काम करता है' जैसी चीजें नहीं कह सकते हैं, क्योंकि यह केवल एक निश्चित जावा कार्यान्वयन पर काम करेगा।


सूर्य की मालिकाना जावा कक्षाएं उनके जावा कार्यान्वयन का हिस्सा हैं, जावा एपीआई का हिस्सा नहीं, उनका उपयोग अनियंत्रित और असमर्थित है। चूंकि वे आंतरिक हैं, इसलिए किसी भी समय किसी भी कारण से सूर्य JVM का कार्य करने वाली टीम निर्णय ले सकती है।

इसके अलावा सूर्य का जावा कार्यान्वयन केवल बाहर नहीं है! आपका कोड ओरेकल / बीईए और आईबीएम जैसे अन्य विक्रेताओं से जेवीएम को पोर्टेबल नहीं कर पाएगा।


जेडीके 6 दस्तावेज़ीकरण में sun.* बारे में नोट शीर्षक वाला एक लिंक शामिल है sun.* पैकेज । यह जावा 1.2 डॉक्स से एक दस्तावेज़ है, इसलिए sun.* संदर्भ sun.* जैसे इलाज किया जाना चाहिए com.sun.*

इससे सबसे महत्वपूर्ण बिंदु हैं:

जावा 2 एसडीके, मानक संस्करण के साथ सूर्य में शामिल वर्ग, पैकेज समूह java.* में आते हैं java.* , javax.* , org.* और sun.*sun.* सभी sun.* पैकेज जावा प्लेटफार्म का एक मानक हिस्सा हैं और भविष्य में समर्थित होंगे। सामान्य रूप से, जावा प्लेटफ़ॉर्म के बाहर sun.* जैसे sun.* , ओएस प्लेटफॉर्म (सोलारिस, विंडोज, लिनक्स, मैकिंतोश इत्यादि) में अलग-अलग हो सकते हैं और एसडीके संस्करणों (1.2, 1.2.1, 1.2.3, आदि)। कार्यक्रम जिनमें sun.* को सीधे कॉल शामिल sun.* पैकेज 100% शुद्ध जावा नहीं हैं।

तथा

जावा प्लेटफ़ॉर्म लागू करने वाली प्रत्येक कंपनी अपने निजी तरीके से ऐसा करेगी। sun.* में कक्षाएं sun.* जावा प्लेटफ़ॉर्म के सूर्य कार्यान्वयन का समर्थन करने के लिए एसडीके में मौजूद हैं: sun.* कक्षाएं जावा प्लेटफार्म कक्षाएं सूर्य जावा 2 एसडीके के लिए "कवर के तहत" काम करती हैं। ये कक्षाएं आम तौर पर किसी अन्य विक्रेता के जावा प्लेटफ़ॉर्म पर मौजूद नहीं होंगी। यदि आपका जावा प्रोग्राम नाम से "sun.package.Foo" वर्ग के लिए पूछता है, तो यह ClassNotFoundError के साथ विफल हो सकता है, और आप जावा में विकास का एक बड़ा फायदा खो देंगे।







sun