2011-01-29 13 views
5

ऐसा लगता है कि मैं शामिल होने वाली हर जावा परियोजना या हमेशा एक कॉमन-लैंग पर निर्भरता के रूप में शुरू होता हूं - और अच्छे कारण के लिए। कॉमन्स-लैंग में कई वर्ग और उपयोगिता विधियां हैं जो अन्य भाषाओं में सबसे मानक एपीआई के साथ सुंदर मानक मेले हैं। सन/ओरेकल/जेसीपी ने मानक एपीआई में कॉमन्स-लैंग में कुछ चीजों को क्यों नहीं अपनाया है?जावा मानक एपीआई में कॉमन्स-लैंग क्यों नहीं है?

+5

मैं यकीन है कि * कॉमन्स-लैंग के कुछ * जावा 7. –

+4

करने के लिए इसे बनाया है मैं इसे नहीं जेनरिक, क्या बजाय अमरूद का उपयोग कर के बारे में उपयोग करता देख रहा हूँ? – maaartinus

+0

वास्तव में, अमरूद परियोजना के इरादे का हिस्सा जेडीके 7 में शामिल किया जाना था। डुनो अगर यह वास्तविकता होगी या नहीं। – jtahlborn

उत्तर

5

के रूप में पहले ही बताया, कॉमन्स एपीआई में कुछ सुविधाओं जावा में बना दिया है, अक्सर (IMHO) बेहतर की तुलना में वे कॉमन्स पुस्तकालय में मूल रूप से थे लागू किया। Enums क्लासिक उदाहरण है।

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

और हमेशा की तरह इन बातों के साथ, बड़ा बिंदु क्या कॉमन्स-लैंग से शामिल किया जाना चाहिए है। कुछ लोग संभवतः MutableXXX कक्षाओं को जोड़ना चाहते हैं, अन्य XXX XXX वर्गों के साथ, अन्य समय पैकेज ... वास्तव में आम सहमति नहीं है।

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

इसके लायक होने के लिए हालांकि मुझे लगता है कि कॉमन्स-लैंग में अधिक कार्यक्षमता को शायद शामिल किया जाना चाहिए। मैं कम से कम कुछ हिस्सों में कारण देख सकता हूं, ऐसा क्यों नहीं है।

1

ऐतिहासिक अपाचे कॉमन्स सुविधाओं है कि बाद में इस तरह के enums और टिप्पणी के रूप में जावा 5 में शुरू किए गए थे, में से कुछ को लागू किया। एकीकरण को मुश्किल बनाने के लिए उनका कार्यान्वयन पर्याप्त रूप से अलग था।

संबंधित मुद्दे