2013-02-11 14 views
56

मैं समझता हूं कि एक दल्विक वीएम में "जावा" एपीआई और आर्किटेक्चर इत्यादि के मामले में जावा से अलग है लेकिन वाक्यविन्यास हमेशा एक जैसा रहा है। (अगर मैं गलत हूं तो कृपया मुझे सही करें)जावा 8 में एंड्रॉइड जावा समर्थन लैम्ब्डा अभिव्यक्ति करेगा?

अब lambda expression in java 8 का समर्थन जारी होने वाला है, एंड्रॉइड जावा इसका अनुसरण करेगा? क्या जावा या एओएस ने जावा से संगत दल्विक बनाने पर वादा किया था?

अद्यतन: अब एंड्रॉइड 4.4 किट कैट (एपीआई 1 9) में, जावा 7 सिंटैक्स को औपचारिक रूप से समर्थित किया गया है। Source from android.com

+0

कैविट। मुझे नहीं पता - लेकिन क्या वीएम को बदलने की जरूरत है? जैसा कि मैं इसे समझता हूं, लैम्ब्डा केवल संकलक के लिए जाना जाता है। कवर के तहत, यह एक अज्ञात विधि व्यक्त करने का एक तरीका है - मुझे लगता है ... इसे आज़माएं - http://www.lambdafaq.org/ बड़ा परिवर्तन सभी जेनेरिकों को समर्थन जोड़ना है। – Simon

+16

ऐसा क्यों है कि एसओ पर मुझे लगभग हर सवाल दिलचस्प लगता है? क्या अधिकतम संख्या में प्रश्नों को बंद करने के लिए कुछ प्रकार की विचित्र प्रतिस्पर्धा है? –

+1

@RossJudson - समस्या यह है कि अधिकांश "दिलचस्प" प्रश्न वे हैं जिनके लिए कोई वास्तविक उद्देश्य उत्तर नहीं है। एसओ का उद्देश्य उद्देश्य जवाब प्रदान करना है ... * "बहस, बहस, मतदान, या विस्तारित चर्चा मांगना" * नहीं। और नहीं, एक प्रतियोगिता नहीं है। और नहीं ... करीबी प्रश्नों को वोट करने से आपकी प्रतिष्ठा में वृद्धि नहीं होती है। –

उत्तर

32

एंड्रॉइड ओरेकल के जावा एसई संस्करणों, it's based on parts of the Apache Harmony project का उपयोग नहीं करता है, इसलिए यह जावा 7 का समर्थन भी नहीं करता है। सद्भाव सक्रिय रूप से विकसित नहीं होता है और 1.7 का समर्थन नहीं करेगा।

जब तक कि Google एक नए जावा संस्करण में हार्मनी और एंड्रॉइड एसडीके को अपग्रेड करने का निर्णय नहीं लेता है, तब तक एंड्रॉइड में कोई जावा 7 या जावा 8 फीचर्स नहीं होगी - भले ही नई विशेषताएं सिंटैक्टिकल हों। वे ओपनजेडीके जैसे वैकल्पिक कार्यान्वयन का उपयोग कर सकते हैं, हालांकि मुझे इसके लिए कोई योजना नहीं है। कुछ लोग सोचते हैं कि ओपनजेडीके का उपयोग Google और ओरेकल के बीच मुकदमे की वजह से असंभव है।


Some features of Java 7, सबसे उल्लेखनीय: हीरा ऑपरेटरों, बहु पकड़, स्ट्रिंग स्विच और एंड्रॉयड एन में भी some Java 8 features लैम्ब्डा भाव की तरह एंड्रॉयड में लागू किया गया है के बाद से इस सवाल का जवाब लिखा गया था। (टिप्पणियों में इसका उल्लेख करने के लिए Ross और Stefan पर धन्यवाद)।

Google को उन सुविधाओं को अपने प्रयासों से लागू करना है और ऐसा लगता है कि अधिकतर लोकप्रिय सुविधाओं के लिए ऐसा करना चुनना है।

+5

हाल के एंड्रॉइड एसडीके ने इस जवाब को गलत बताया है। जावा 7 वाक्यविन्यास समर्थित है। –

+3

कुछ जावा 7 विशेषताएं अब उपलब्ध हैं। मुख्य बिंदु अभी भी खड़ा है: Google कुछ महान प्रयास किए बिना जावा 8 पर स्विच नहीं कर सकता है और इन सुविधाओं को अपने आप लागू करने की आवश्यकता है। उन्होंने जावा 7 के कुछ हिस्सों के लिए ऐसा करने का फैसला किया लेकिन ऐसा लगता है कि वे अभी भी जावा 8 का समर्थन करने के लिए किसी भी योजना को वास्तव में संवाद नहीं करते हैं। इस विषय पर एक उत्कृष्ट प्रश्न के साथ एक और सवाल है: http://stackoverflow.com/q/16921337/897024 – Kapep

+4

एंड्रॉइड एन ओपनजेडीके में जा रहा है। java.util.function पैकेज आज एओएसपी लिबकोर मास्टर में विलय कर दिया गया है। इसमें इंटरफ़ेस डिफ़ॉल्ट विधियां और लैम्ब्डा अभिव्यक्तियों का उपयोग शामिल है। इस एओएसपी टूलचेन/जैक प्रतिबद्धता पर एक त्वरित नज़र डालने से पता चलता है कि नया "जैक" कंपाइलर वास्तव में लैम्ब्डा अभिव्यक्तियों को फिर से लिख सकता है: http: // bit।ly/1KUvqm6 मेरे ज्ञान के लिए, गिट मास्टर में संग्रह कोड अभी भी OpenJDK 7 पर आधारित है। इसलिए, स्ट्रीम एपीआई के अभी तक कोई संकेत नहीं है। –

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