2016-06-02 31 views
18

के लिए जेएसआर -305 एनोटेशन प्रतिस्थापन अब तक हम फाइंडबग्स जेएसआर -305 एनोटेशन (com.google.code.findbugs: jsr305) का उपयोग कर रहे हैं और टूल सपोर्ट (सोनार, एक्लिप्स, फाइंडबग, ...) सहित सबकुछ किया गया है अच्छा कर रहा है।जावा 9

हालांकि यह हमारी समझ है कि जावा 9 में आरा जेएसआर -305 एनोटेशन को तोड़ने जा रहा है (दो मॉड्यूल में एक पैकेज की अनुमति नहीं है)। जावाऑन 2015 में इसकी पुष्टि हुई थी। ओरेकल का तर्क जेएसआर -305 कभी नहीं हुआ और जेएसआर -250 को इन एनोटेशन का समर्थन करना होगा।

हम जेएसआर -305 एनोटेशन के लिए प्रतिस्थापन की तलाश में हैं जो जावा 8 और जावा 9 दोनों में काम करते हैं। यदि इतिहास कोई गाइड है तो जावा 9 जीए और जावा 8 ईओएल के बीच का समय छोटा होगा और हम ठीक करना चाहते हैं अग्रिम में हमारे कोड में कोई असंगतताएं। सिद्धांत रूप में हम जेडीके के एनोटेशन मॉड्यूल को अपग्रेड कर सकते हैं लेकिन हमारे टूलचेन में ऐसा करने से बहुत सारे काम मिलते हैं।

+0

मैंने हाल ही में एक ही दिशा में जाने के लिए एक प्रश्न पूछा ([भविष्यरोधक @ नॉननुल एनोटेशन] (http://stackoverflow.com/questions/35892063/which-nonnull-java-annotation-to-use) हालांकि सवाल उठ गया जल्दी बंद कर दिया। मुझे अभी भी विश्वास है कि लोग जवाब में रूचि रखते हैं। – Lonzak

उत्तर

22

यह सच है कि दो मॉड्यूल सामान्य रूप से उसी पैकेज में प्रकार परिभाषित नहीं कर सकते हैं। अभी हाल तक, एक JDK   9 निर्माण के वर्ग पथ पर jsr305.jar डाल कोई असर नहीं होगा: यह JAR फ़ाइल प्रकारों को परिभाषित करता है javax.annotation पैकेज में लेकिन यह है कि पैकेज में परिभाषित किया गया है मंच के अंतर्निहित java.annotations.common मॉड्यूल, और बाद लेता है पूर्वता।

के व्यापक उपयोग के भाग में कारण jsr305.jar, तथापि, और भी करने के लिए इसे मौजूदा अनुप्रयोग सर्वर JDK   9, में माइग्रेट करने के लिए आसान बनाने के हम हाल ही में जड़ मॉड्यूल के डिफ़ॉल्ट सेट एनोटेशन मॉड्यूल बाहर करने के लिए बदल गया , दूसरों के बीच में। जेडीके कक्षा पथ पर jsr305.jar डालने से अब क्लास पथ आउट-ऑफ-द-बॉक्स काम करता है। विवरण JEP 261 में उपलब्ध हैं।

+0

धन्यवाद, यह नया है। –

+2

क्या इसका मतलब है कि मैं उसी प्रोजेक्ट में '@ नॉननुल' और 'पोस्ट पोस्टस्ट्रक्चर' का उपयोग नहीं कर सकता? – jkschneider

+0

मुझे लगता है कि यदि ऐसी आवश्यकता उत्पन्न होती है तो आप दोनों 'java.annotations.common' और 'jsr305.jar' एनोटेशन के साथ एक कस्टम मॉड्यूल तैयार कर सकते हैं। –

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