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