यह एक जावा डिजाइन निर्णय था, और एक कि कुछ एक गलती मानते हैं। कंटेनर चाहते हैं कि ऑब्जेक्ट और प्राइमिटिव ऑब्जेक्ट से न निकले।
यह एक जगह है जो .NET डिजाइनरों ने जेवीएम से सीखी और मूल्य प्रकार और जेनेरिक को लागू किया जैसे कि कई मामलों में बॉक्सिंग को समाप्त कर दिया जाता है। सीएलआर में, सामान्य कंटेनर अंतर्निहित कंटेनर संरचना के भाग के रूप में मूल्य प्रकारों को संग्रहीत कर सकते हैं।
जावा ने जेवीएम के समर्थन के बिना कंपाइलर में सामान्य समर्थन 100% जोड़ने का विकल्प चुना। जेवीएम वह है जो "गैर-वस्तु" ऑब्जेक्ट का समर्थन नहीं करता है। जावा जेनरिक आपको दिखावा करने की अनुमति देता है कि कोई आवरण नहीं है, लेकिन आप अभी भी मुक्केबाजी के प्रदर्शन मूल्य का भुगतान करते हैं। कार्यक्रमों के कुछ वर्गों के लिए यह महत्वपूर्ण है।
मुक्केबाजी एक तकनीकी समझौता है, और मुझे लगता है कि यह भाषा में लीक हो रहा कार्यान्वयन विस्तार है। ऑटोबॉक्सिंग अच्छा सिंटैक्टिक शुगर है, लेकिन अभी भी एक प्रदर्शन दंड है। अगर कुछ भी हो, तो मुझे ऑटोबॉक्स होने पर मुझे चेतावनी देने के लिए कंपाइलर चाहिए। (सभी के लिए मुझे पता है, यह अब हो सकता है, मैंने यह जवाब 2010 में लिखा था)।
बॉक्सिंग के बारे में SO पर एक अच्छी व्याख्या: कुछ भाषाओं को बॉक्सिंग और अनबॉक्सिंग की आवश्यकता क्यों है?
और जावा जेनरिक की आलोचना: कुछ लोग क्यों दावा करते हैं कि जावा का जेनेरिक कार्यान्वयन खराब है?
जावा के बचाव में, पीछे की ओर देखना और आलोचना करना आसान है। जेवीएम ने समय की कसौटी पर कस दिया है, और कई मामलों में एक अच्छा डिज़ाइन है।