2008-11-04 7 views
7

मेरे पास एक सर्वर-क्लाइंट एप्लिकेशन है जो जावा 1.3 पर चलता है; मैं जावा 1.6 कदम से कदम बदलना चाहता हूं, जिसका मतलब है कि कुछ ग्राहकों और अंततः सर्वर के मुकाबले पहले कुछ ग्राहक ... मैं सोच रहा था कि क्या आप मुझे कुछ सामान्य समस्याओं के बारे में बता सकते हैं जो मुझे साथ आ सकते हैं और मुझे क्या देखना चाहिए?जावा संस्करण बदलना

उत्तर

11

सूर्य, पश्चगामी-संगतता के एक उच्च स्तर बनाए रखने के लिए तो आप संभवतः बस नए 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 पर कोड संकलित करेगा।

4

मेरे सिर के शीर्ष पर, enum और assert नाम फ़ील्ड और स्थानीय चर में देखें ... ये शब्द जावा 1.4 और 5 में कीवर्ड बन गए हैं। जावा 6 कंपाइलर उन्हें संकलन त्रुटियों के रूप में चिह्नित करेगा यदि यह देखता है उन्हें।

युवाल = 8)

2

जब मैं एक छोटी सी एप्लेट मैं पर काम किया पर 1.5 1.4.2 से ले जाया गया, चीजों के बहुत सारे तोड़ दिया: स्क्रीन रिफ्रेश सभी wonky मिला, तत्वों को स्थानांतरित, आदि

सूर्य की JRE के लिए पश्चगामी संगतता प्रबंधित नहीं करता है सब कुछ। कभी-कभी जब आइटम बहिष्कृत होते हैं, तो वे बहुत कम समय के बाद पूरी तरह से चले जाते हैं।

हमने सूर्य के पुस्तकालयों का उपयोग करके "स्टॉक" जावा के साथ सबकुछ लिखा था।

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

मूविंग संस्करण एक आसान कदम नहीं है, जब तक कि एप्लिकेशन वास्तव में छोटा न हो।

+3

मेरे अनुभव में, स्क्रीन आमतौर पर स्विंग एपीआई के दुरुपयोग से उत्पन्न होने वाले संस्करणों के बीच मुद्दों को रीफ्रेश करते हैं जिन्हें कभी काम करने की गारंटी नहीं थी। हालांकि, उस अनुभव के लिए निश्चित रूप से अपवाद हैं। :) – jsight

+3

मैंने कभी भी हटाए गए एक बहिष्कृत विधि के बारे में कभी नहीं सुना है। 1.0.x से कुछ बहिष्कृत विधियां अभी भी जावा 6 में हैं। क्या आप कोई उदाहरण दे सकते हैं? इस बिंदु पर –

+0

, मेरे सिर के ऊपर से नहीं - मैंने 1.4.2 के बाद से जावा को छुआ नहीं है, लेकिन 1.4.2 में 1.2-युग कॉल का उपयोग करने के प्रयास में निश्चित रूप से कुछ समस्याएं थीं। – warren

4

सूर्य जावा की प्रत्येक नए संस्करण के साथ असंगतताओं की एक सूची रखता है।

1.4.2 के लिए पिछले दस्तावेज़ लिंक करने के लिए अनुकूलता वापस JDK 1.0 के लिए नोट है।

0

मेरा अनुभव यह है कि संगतता काफी अधिक है। मुझे केवल एक ऐप मिला है कि मैं वर्तमान संस्करण पर नहीं चल सका। किसी भी कारण से (स्रोत नहीं है, इसलिए मैंने इसमें खोद नहीं लिया) कि एक ऐप 1.4.2 के अलावा किसी अन्य चीज़ पर नहीं चलेगा। बाकी सब कुछ मैंने कभी निपटाया है (उनमें से कुछ काफी बड़े हैं) 1.6 तक ठीक हैं। कोई संशोधन आवश्यक है।

निश्चित रूप से YMMV, ताकि आप इसे कोशिश करते हैं और देखने के लिए होगा ...

3

आम तौर पर, सूर्य की JVMs की पश्च संगतता बहुत अच्छा है, लेकिन सही नहीं है। मैंने तीन बहुत बड़े अनुप्रयोगों को 1.3 से 1.5 तक माइग्रेट किया है और केवल थोड़ी सी समस्याओं का सामना करना पड़ता है, जिनमें से सबसे बड़ा एक स्विंग मास्क एक अंतहीन ईवेंट हैंडलिंग लूप में जा रहा है और 1.4

सर्वर के तहत ऐप को फ्रीज कर रहा था भाग में समस्याएं पैदा होने की संभावना नहीं है, लेकिन स्विंग में विशेष रूप से 1.3 और 1.4 के बीच बहुत बड़े पैमाने पर परिवर्तन हुए हैं - उदाहरण के लिए फोकस सबसिस्टम पूरी तरह से लिखा गया था।

यह अभी भी संभव है कि ऐप बिना किसी समस्या के चलाएगा, लेकिन आपको निश्चित रूप से व्यापक परीक्षण करना चाहिए।

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