जावा के लिए LINQ प्यारा होगा, लेकिन समस्या भाषा एकीकरण है।
जावा में लैम्ब्डा अभिव्यक्तियों के रूप में संक्षिप्त रूप में कुछ भी नहीं है, और वे LINQ के आधारों में से एक हैं। मुझे लगता है कि वे कर सकते थे लैम्ब्डा अभिव्यक्तियों के बिना सामान्य जावा के शीर्ष पर क्वेरी अभिव्यक्ति समर्थन को परत करें, विस्तार को अज्ञात आंतरिक वर्ग बनाकर - लेकिन यह बहुत ही भयानक होगा। यदि आप LINQ से SQL जैसा कुछ करना चाहते हैं तो आपको अभिव्यक्ति वृक्षों की भी आवश्यकता होगी।
जाँचे गए अपवाद हो सकता है रास्ते में आओ, लेकिन हमें देखना होगा। IQueryable के समतुल्य को किसी प्रकार के सामान्य जाँच अपवाद की आवश्यकता होगी - या संभवतः यह तत्व प्रकार और अपवाद प्रकार दोनों में सामान्य हो सकता है...
वैसे भी, यह सब पाई-इन-द-स्काई है - जावा समुदाय को बंद होने के साथ होने वाली परेशानियों को देखते हुए, मुझे लगता है कि 2012 से पहले जावा में LINQ जैसी किसी भी चीज़ की अपेक्षा करना मूर्खतापूर्ण होगा। बेशक, यह कहना नहीं है यह "जावा जैसी" भाषा में संभव नहीं होगा। उदाहरण के लिए, ग्रूवी के कुछ उपयोगी पहलू पहले से ही हैं।
पुस्तकालय पक्ष के लिए, हाइबरनेट पहले से ही LINQ से SQL की कई विशेषताओं का "गैर-एकीकृत" संस्करण प्रदान करता है। LINQ to Objects के लिए, आपको Google Java Collections API देखना चाहिए - यह एक ही तरह की बहुत सी चीज है (फ़िल्टरिंग, प्रोजेक्टिंग इत्यादि)। लैम्ब्डा के बिना, निश्चित रूप से इसका उपयोग करना बहुत आसान है - लेकिन यह अभी भी वास्तव में वास्तव में आसान है। (मैं काम पर हर समय Google संग्रह कोड का उपयोग करता हूं, और मुझे "वेनिला" जावा संग्रह पर वापस जाने से नफरत है।)