धन्यवाद। यहां सभी प्रासंगिक उत्तरों और मेरे स्वयं के शोध का सारांश दिया गया है। Retros
यह "retro"-tools द्वारा किया जाता है:
प्रो: आप पूरी तरह से जावा 5 में विकसित कर सकते हैं, मॉड्यूल और सभी प्रकार के जेएआर बना सकते हैं। अंत में आप सभी वर्गों को जावा 1.4 में बदल दें और अपना ईएआर पैकेज करें। यह आसानी से रेट्रोट्रांसलेटर के मेवेन एकीकरण (org.codehaus.mojo:retrotranslator-maven-plugin
) के साथ किया जाता है।
कॉन: कंज़र्वेटिव वातावरण बाइटकोड को तैनात करने की अनुमति नहीं देता है। रेट्रो-चरण का परिणाम किसी भी कोडर को दिखाई नहीं देता है और इसे अनुमोदित नहीं किया जा सकता है। दूसरी समस्या डर है: कुछ गुप्त उत्पादन समस्या हो सकती है और रेट्रो-कोड एक और कदम है जिसे इसके लिए दोषी ठहराया जा सकता है। ऐप-सर्वर विक्रेताओं बदले बाइटकोड के कारण मदद से इनकार कर सकते हैं। इसलिए कोई भी उत्पादन में इसका इस्तेमाल करने की ज़िम्मेदारी नहीं लेना चाहता। चूंकि यह तकनीकी समस्या की तुलना में एक पुलिसगत है, इसलिए मुझे कोई समाधान नहीं दिख रहा है। यह हमारे लिए हुआ है, तो मैं जावा 1.4 :-(
संकलन Java5 आगे के विकल्प की तलाश में गया था:। Jsr14
वहाँ एक असमर्थित विकल्प, javac -source 1.5 and -target jsr14
जो वैध जावा 1.4 बाईटकोड को Java5 स्रोत संकलित है अधिकांश varargs जैसी सुविधाओं या पाश के लिए बढ़ा दिया वैसे भी संकलक द्वारा अनुवाद किया जाता है। जेनेरिक्स और एनोटेशन हटा दिए जाते हैं। Enums समर्थित नहीं हैं और मैं autoboxing के बारे में पता नहीं है, के रूप में valueOf
तरीकों ज्यादातर Java5 में पेश किए गए।
कोन : केवल बाइट कोड का अनुवाद किया जाता है, लाइब्रेरी उपयोग नहीं बदला जाता है। इसलिए आपको सावधान रहना होगा जावा 5 विशिष्ट एपीआई का उपयोग करने के लिए टी (लेकिन बैकपोर्ट का उपयोग कर सकते हैं)। आगे आपको एक ही समय में सभी मॉड्यूल बनाना होगा, क्योंकि विकास के समय के लिए आप जेनेरिक और एनोटेशन जानकारी के साथ जावा 5 कोड चाहते हैं। तो आपको जावा 1.4 उत्पादन के लिए पूरी परियोजना को स्क्रैच से बनाना होगा।
बदलने वापस जावा 1.4 स्रोत: Declawer
एक related question में दिए हैं, वहाँ Declawer, एक संकलक विस्तार, कि जेनरिक के लिए काम करता है और varargs, लेकिन नहीं पाश या autoboxing के लिए बढ़ाया है। उत्पन्न स्रोत "थोड़ा फंकी है, लेकिन बहुत बुरा नहीं है"।
प्रो: जेनरेट किया गया स्रोत उपलब्ध है और इसकी समीक्षा की जा सकती है। इस स्रोत में सबसे खराब मामले में फिक्स किया जा सकता है। कोई "जादू" नहीं है, क्योंकि स्रोत मान्य जावा है। जावा 1.4 स्रोत फिर से प्राप्त करने के लिए कुछ लोग जेएडी (जावा डिकंपेलर) का भी उपयोग करते हैं। यदि आप डीबग जानकारी डीबग के साथ संकलित करते हैं और आंतरिक कक्षाओं का उपयोग नहीं करते हैं तो जेड पठनीय के आउटपुट को पढ़ने योग्य है।
कॉन: -target jsr14
के समान, आपको तैनाती में एक अतिरिक्त कदम की आवश्यकता है। पुस्तकालयों के साथ भी वही समस्याएं।
स्रोत बदलने वापस जावा 1.4 करने के लिए: हाथ से
कई जवाब हाथ से यह कर का सुझाव दिया। एक स्वचालित, दोहराने वाली निर्माण प्रक्रिया के लिए यह निश्चित रूप से उपयोगी नहीं है, लेकिन एक बार के लिए यह उचित है। बस क्या संभव है स्वचालित करें। शायद घर से उगाए गए रूपांतरण उपकरण बनाने के लिए एंट्लर को देखें।
बैकपोर्टेड पुस्तकालय:
समस्या है, कि Java5 भी जहाजों नई पुस्तकालयों, कि पुराने JREs में उपलब्ध नहीं हैं, related question देखते हैं। सौभाग्य से कई बैकपोर्टेड लाइब्रेरीज़ हैं जो आपको जावा 5 की कुछ कार्यक्षमता देते हैं, लेकिन जेनरिक जैसी भाषा सुविधाओं को अनुकरण नहीं कर सकते हैं।
नकल Java5 जावा 1.4 कोड में विशेषताएं:
मैं कुछ चीजें आप अपने जीवन को आसान और अभी भी जावा 1.4 के साथ रहने बनाने के लिए कर सकता है के बारे में सोच रहा था। सबसे महत्वपूर्ण सुविधाओं typesafe संग्रह, यहाँ कुछ विचार कर रहे हैं:
इसके बजाय जेनरिक का उपयोग कर आप कुछ टेम्पलेट के साथ अपने स्वयं typesafe कंटेनर बना सकते हैं की
- ।
- एक टाइपएफ़ इटरेटर जोड़ें (जो अब कोई इटरेटर नहीं है)।
asList
विधियां जोड़ें जो 1,2,...,n
तर्क और उनमें से एक सरणी (varargs अनुकरण करने के लिए) की अनुमति देता है।
- varargs के लिए तरीके (
1,...,n
arrays के लिए तर्क) और valueOf
कुछ सहायक वर्ग में रखा जा सकता है।
वास्तव में picky होने के लिए ... जावा 4 कभी नहीं था, यह जावा 2 रिलीज 1.4 था। –
हाँ क्योंकि सूर्य के विपणन नाम तार्किक हैं। –
टैग संपादित करने के लिए धन्यवाद। मैंने एसओ की खोज की लेकिन संबंधित प्रश्न नहीं मिला: - http://stackoverflow.com/questions/603828/java-5-to-java-1-4-source-code-backporting-tool - http: // stackoverflow.com/questions/547872/converting-java-1-5- स्रोत-into-1-1- स्रोत - http://stackoverflow.com/questions/17993/easy-way-to-backport-java-6 -code-to-java-5 –