मेरे पास एक सर्वर-क्लाइंट एप्लिकेशन है जो जावा 1.3 पर चलता है; मैं जावा 1.6 कदम से कदम बदलना चाहता हूं, जिसका मतलब है कि कुछ ग्राहकों और अंततः सर्वर के मुकाबले पहले कुछ ग्राहक ... मैं सोच रहा था कि क्या आप मुझे कुछ सामान्य समस्याओं के बारे में बता सकते हैं जो मुझे साथ आ सकते हैं और मुझे क्या देखना चाहिए?जावा संस्करण बदलना
उत्तर
सूर्य, पश्चगामी-संगतता के एक उच्च स्तर बनाए रखने के लिए तो आप संभवतः बस नए JVM स्थापित है और इसके साथ अपने आवेदन पुनः आरंभ कर सकते कोशिश करता है।
जावा 1.6 से पिछली संस्करण के साथ पिछली-असंगतताओं का वर्णन करने वाला दस्तावेज़ here है। यह दस्तावेज़ Java 1.5 और Java 1.4 के लिए संगतता-दस्तावेज़ों को भी लिंक करता है। संभावित नुकसान के बारे में जानने के लिए आप शायद इस दस्तावेज़ को पढ़ना चाहते हैं।
जावा 1.5 और Java 1.6 ने नए क्लास-फ़ाइल-स्वरूपों को पेश किया। जेवीएम पुरानी कक्षा-फाइलों को भी चलाएगा, लेकिन आपके कोड को पुन: संकलित करेगा - खासकर जेडीके 1.6 के साथ - आपके आवेदन को तेज़ी से बनाने के लिए कुछ बदलावों का लाभ उठाने के लिए नए जेवीएम की मदद करेगा। तो आप recompiling पर विचार कर सकते हैं।
इसके अतिरिक्त कुछ नए कीवर्ड पेश किए गए, अर्थात् जोर से (1.4 में) और enum (1.5 में) (जैसे युवाल पहले से ही उल्लेख किया गया है)। यदि आप इन शब्दों को पहचानकर्ता के रूप में उपयोग करते हैं, तो एक पुनर्मूल्यांकन विफल हो जाएगा, लेकिन पुरानी कक्षा-फ़ाइलें काम करेगी। आप इसे संकलित करने के लिए -source
स्विच को जावैक प्रदान कर सकते हैं: 'javac -source 1.3
' बिना किसी कीवर्ड के और enum पर कोड संकलित करेगा।
मेरे सिर के शीर्ष पर, enum
और assert
नाम फ़ील्ड और स्थानीय चर में देखें ... ये शब्द जावा 1.4 और 5 में कीवर्ड बन गए हैं। जावा 6 कंपाइलर उन्हें संकलन त्रुटियों के रूप में चिह्नित करेगा यदि यह देखता है उन्हें।
युवाल = 8)
जब मैं एक छोटी सी एप्लेट मैं पर काम किया पर 1.5 1.4.2 से ले जाया गया, चीजों के बहुत सारे तोड़ दिया: स्क्रीन रिफ्रेश सभी wonky मिला, तत्वों को स्थानांतरित, आदि
सूर्य की JRE के लिए पश्चगामी संगतता प्रबंधित नहीं करता है सब कुछ। कभी-कभी जब आइटम बहिष्कृत होते हैं, तो वे बहुत कम समय के बाद पूरी तरह से चले जाते हैं।
हमने सूर्य के पुस्तकालयों का उपयोग करके "स्टॉक" जावा के साथ सबकुछ लिखा था।
मैंने शुद्ध जावा में लिखे गए कई एप्लिकेशन भी देखे हैं जो जेआरई के एक ही संस्करण में एक या दो प्लेटफ़ॉर्म पर ठीक काम करते हैं, उस संस्करण के साथ अन्य लोगों पर असफल रहता है (जिस उत्पाद के साथ मैं काम करता हूं वह अब विंडोज पर बहुत अच्छा काम करता है, ठीक है मैक ओएस एक्स, लिनक्स पर सभ्य है, लेकिन सोलारिस पर विफल रहता है - सभी एक ही जेआरई के साथ)।
मूविंग संस्करण एक आसान कदम नहीं है, जब तक कि एप्लिकेशन वास्तव में छोटा न हो।
सूर्य जावा की प्रत्येक नए संस्करण के साथ असंगतताओं की एक सूची रखता है।
- Java SE 6 Release Notes: Compatibility
- Incompatibilities in J2SE 5.0 (since 1.4.2)
- Java 2 Platform, Standard Edition Version 1.4.2 Compatibility with Previous Releases
1.4.2 के लिए पिछले दस्तावेज़ लिंक करने के लिए अनुकूलता वापस JDK 1.0 के लिए नोट है।
मेरा अनुभव यह है कि संगतता काफी अधिक है। मुझे केवल एक ऐप मिला है कि मैं वर्तमान संस्करण पर नहीं चल सका। किसी भी कारण से (स्रोत नहीं है, इसलिए मैंने इसमें खोद नहीं लिया) कि एक ऐप 1.4.2 के अलावा किसी अन्य चीज़ पर नहीं चलेगा। बाकी सब कुछ मैंने कभी निपटाया है (उनमें से कुछ काफी बड़े हैं) 1.6 तक ठीक हैं। कोई संशोधन आवश्यक है।
निश्चित रूप से YMMV, ताकि आप इसे कोशिश करते हैं और देखने के लिए होगा ...
आम तौर पर, सूर्य की JVMs की पश्च संगतता बहुत अच्छा है, लेकिन सही नहीं है। मैंने तीन बहुत बड़े अनुप्रयोगों को 1.3 से 1.5 तक माइग्रेट किया है और केवल थोड़ी सी समस्याओं का सामना करना पड़ता है, जिनमें से सबसे बड़ा एक स्विंग मास्क एक अंतहीन ईवेंट हैंडलिंग लूप में जा रहा है और 1.4
सर्वर के तहत ऐप को फ्रीज कर रहा था भाग में समस्याएं पैदा होने की संभावना नहीं है, लेकिन स्विंग में विशेष रूप से 1.3 और 1.4 के बीच बहुत बड़े पैमाने पर परिवर्तन हुए हैं - उदाहरण के लिए फोकस सबसिस्टम पूरी तरह से लिखा गया था।
यह अभी भी संभव है कि ऐप बिना किसी समस्या के चलाएगा, लेकिन आपको निश्चित रूप से व्यापक परीक्षण करना चाहिए।
- 1. जावा संस्करण के आंकड़े
- 2. गलत जावा संस्करण
- 3. जावा ईई डेवलपर्स संस्करण
- 4. JAVA_HOME और जावा -संस्करण
- 5. जावा - JRE संस्करण
- 6. फ़ाइलों का नाम बदलना: विजुअल स्टूडियो बनाम संस्करण नियंत्रण
- 7. क्या मैनिफेस्ट फ़ाइल में असेंबली संस्करण की संस्करण विशेषता को बदलना आवश्यक है?
- 8. जेडीके, जेआरई, जावा: संस्करण भ्रम!
- 9. एंड्रॉइड का जावा संस्करण जावा एसई संस्करण से कैसे संबंधित है?
- 10. एक्शनबार छुपा एनीमेशन बदलना?
- 11. जावा में सीरियल संस्करण आईडी क्या है?
- 12. जावा-वर्जन पुराने संस्करण क्यों देता है?
- 13. जावा मानक संस्करण में कितने वर्ग हैं?
- 14. मैक ओएस जावा संस्करण अलग है
- 15. जावा संस्करण में ईए क्या है?
- 16. जावा संस्करण प्रवास पदावनत तारीख तरीकों
- 17. जावा फ़ाइल में मेवेन संस्करण संख्या
- 18. मेवेन रिलीज प्लगइन: जावा कंपाइलर संस्करण
- 19. लिनक्स पर जावा बिट संस्करण कैसे जांचें?
- 20. एंड्रॉयड चलाता है क्या जावा SDK संस्करण
- 21. जावा एप्लिकेशन सर्वर का नाम और संस्करण
- 22. जावा स्टैकट्रेस त्रुटि असमर्थित MAJOR.MINOR संस्करण 51,0
- 23. परम जावा संस्करण तालिका (J2EE, जावा ईई, सर्वलेट, JSP, JSTL)
- 24. ग्रहण डॉक आइकन बदलना
- 25. कुंजीपटल बदलना
- 26. नाम बदलने के बिना फ़ाइल का नाम बदलना() - जावा
- 27. जावा में समय बदलने के बिना टाइमज़ोन बदलना
- 28. जावा विशिष्ट स्ट्रिंग के साथ स्ट्रिंग का हिस्सा बदलना
- 29. मुझे serialVersionUID कब बदलना है?
- 30. संस्करण संख्या
मेरे अनुभव में, स्क्रीन आमतौर पर स्विंग एपीआई के दुरुपयोग से उत्पन्न होने वाले संस्करणों के बीच मुद्दों को रीफ्रेश करते हैं जिन्हें कभी काम करने की गारंटी नहीं थी। हालांकि, उस अनुभव के लिए निश्चित रूप से अपवाद हैं। :) – jsight
मैंने कभी भी हटाए गए एक बहिष्कृत विधि के बारे में कभी नहीं सुना है। 1.0.x से कुछ बहिष्कृत विधियां अभी भी जावा 6 में हैं। क्या आप कोई उदाहरण दे सकते हैं? इस बिंदु पर –
, मेरे सिर के ऊपर से नहीं - मैंने 1.4.2 के बाद से जावा को छुआ नहीं है, लेकिन 1.4.2 में 1.2-युग कॉल का उपयोग करने के प्रयास में निश्चित रूप से कुछ समस्याएं थीं। – warren