2016-01-14 7 views
12

वर्तमान में मेरे पास जावा 7 जेडीके स्थापित है। यह थोड़ी देर के लिए ऐसा ही रहा है। हालांकि, हाल ही में, मेरा प्रोफेसर क्लास को जावा जेडीके 7 को अनइंस्टॉल करने और होमवर्क पर काम करने में सक्षम होने के बजाय जावा जेडीके 8 स्थापित करने का निर्देश दे रहा है।क्या मैं अब एंड्रॉइड डेवलपमेंट के साथ जावा 8 का उपयोग कर सकता हूं?

मैं बिना किसी समस्या के एंड्रॉइड ऐप्स लिखने और तैनात करने के लिए जावा जेडीके 7 का उपयोग कर रहा हूं, इसलिए मुझे आश्चर्य है कि अब जेडीके 8 को अपग्रेड करना सुरक्षित है या नहीं? मुझे लगता है कि मुझे अपने एंड्रॉइड विकास में किसी भी जावा 8 विशिष्ट तरीकों या कार्यों की आवश्यकता नहीं होगी। तो अगर मैं उससे दूर रहूं, तो क्या मेरा एंड्रॉइड विकास प्रभावित होगा?

एक तरफ ध्यान दें, मुझे कोई भी आधिकारिक दस्तावेज नहीं मिला है जो बताता है कि जावा जेडीके 8 सुरक्षित है या नहीं या इसे सुरक्षित कैसे किया जाए। किसी भी तरह से, मुझे जल्द ही जावा 8 में अपग्रेड करना होगा ...

+2

एंड्रॉयड जावा 8 की नई सुविधाओं का सबसे समर्थन नहीं करता। –

+0

तो अगर मैं उन नई सुविधाओं का उपयोग नहीं करता, तो भी मैं अपना कोड संकलित और चलाने में सक्षम हूं? – wayway

+1

भले ही आप जेडीके 8 स्थापित करते हैं, आप संगतता को 1.7 (या जो भी आवश्यक हो) पर सेट कर सकते हैं ... – Codebender

उत्तर

3

यदि आप एंड्रॉइड ऐप्स को तैनात करने के लिए जावा 7 का उपयोग कर रहे हैं तो यह निश्चित है कि इस बिंदु तक, आपने जावा 8 फीचर्स का उपयोग नहीं किया है, इसलिए मुझे नहीं लगता कि इससे कोई फर्क नहीं पड़ता।

अपने प्रशिक्षक के निर्देशों का पालन करें और जब आप स्कूल के लिए असाइनमेंट करते हैं तो परियोजना संरचना में या तो जेडीके या भाषा स्तर का चयन करें।

CTRL + एएलटी + एस, चयन Project

आप जावा 8 एसडीके के लिए डिफ़ॉल्ट लेकिन अपने Android एप्लिकेशन के लिए जावा 7 की सुविधाओं तक सीमित कर सकते हैं। या आप बस अपनी होमवर्क परियोजनाओं को जावा 8 एसडीके में सेट कर सकते हैं।

एंड्रॉइड स्टूडियो को इंटेलिज की मूल सेटिंग्स में शामिल होने पर एक अंग पर बाहर जाना।

2

मुझे लगता है कि आपको इसे आज़माएं। एक तरफ ध्यान दें: आप आसानी से जेडीके 7 और जेडीके 8 तरफ चला सकते हैं। मुझे एंड्रॉइड स्टूडियो के बारे में पता नहीं है, लेकिन ग्रहण में आप बिल्ड पथ को कॉन्फ़िगर कर सकते हैं।

इसके बावजूद: क्या आप अपने होमवर्क के लिए जावा 8 विशिष्ट विशेषताओं का उपयोग कर रहे हैं? यदि आप लैम्ब्डा या जावाएफएक्स 8 का उपयोग नहीं करते हैं, तो मुझे नहीं लगता कि आपको जेडीके 8 की आवश्यकता होगी 8. आपके प्रोफेसर की तरह लगता है कि जावा के नवीनतम संस्करण (अपनी पहली वाक्य से निर्णय लेना) का उपयोग करना चाहता है।

+0

मेरे प्रोफेसर ने अभी तक कई अन्य विवरण नहीं दिए हैं यह ध्यान देने से कि वह पसंद करते हैं कि भविष्य में "संभावित मुद्दों" से बचने के लिए हमारे पास जावा 8 है। – wayway

3

यदि आप जावा 8 सुविधाओं का उपयोग नहीं करते हैं तो यह सुरक्षित है।

हालांकि आप रेट्रोलैम्ब्डा और संग्रह के साथ जावा 8 पर उत्सुक हो सकते हैं। https://github.com/evant/gradle-retrolambda और https://bitbucket.org/mart_bogdan/collectionsquery/src

यह आप निम्नलिखित की तरह कुछ करने के लिए अपने कोड लिखने के लिए अनुमति देगा: -

mButton.setOnClickListener(v-> doClickEvent()); 

mView.postDelayed(() -> someMethodToRun() , 1000); 

Queryable.from(listOfObject).forEachR(r -> doProcess(r)); 

रूप retrolambda साथ जावा 8 उपयोग करने के लिए भद्दा

mButton.setOnClickListener(new View.OnClickListener(){ 
    @Override 
     public void onClick(View v) { 
     doClickEvent(); 
     } 
}); 

करने का विरोध सिर्फ gradle फ़ाइल में जोड़ें।

apply plugin: 'com.android.application' 
apply plugin: 'me.tatarka.retrolambda' 

android { 

    // : 
    // Snips the rest of configuration. 
    // : 
    compileOptions { 
     encoding "UTF-8" 
     sourceCompatibility JavaVersion.VERSION_1_8 
     targetCompatibility JavaVersion.VERSION_1_8 
    } 
} 

dependencies { 

    compile fileTree(dir: 'libs', include: ['*.jar']) 
    testCompile 'junit:junit:4.12' 

    compile 'com.android.support:appcompat-v7:23.1.1' 

    compile 'com.innahema:collections-query:0.2.9' 
} 

और प्रोजेक्ट gradle.build फ़ाइल में निम्नलिखित जोड़ें ...

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:1.5.0' 

     classpath 'me.tatarka:gradle-retrolambda:3.2.3' 
     classpath 'me.tatarka.retrolambda.projectlombok:lombok.ast:0.2.3.a2' //fix lint issue 

     // NOTE: Do not place your application dependencies here; they belong 
     // in the individual module build.gradle files 
    } 
} 
12

Google I/O 2016 में, उन्होंने घोषणा की कि एंड्रॉइड अब जावा 8 की कुछ विशेषताओं का समर्थन करता है, लेकिन सभी सुविधाएं नहीं।

विशेषताएं

  • डिफ़ॉल्ट और स्थिर इंटरफ़ेस तरीकों की तरह
  • लैम्ब्डा भाव (भी एपीआई स्तर 23 पर कम से उपलब्ध है और)
  • Repeatable एनोटेशन
  • विधि संदर्भ (भी एपीआई स्तर 23 पर उपलब्ध है और निचला)
  • एनोटेशन टाइप करें (एपीआई स्तर 23 और निचले स्तर पर भी उपलब्ध)

इसके अतिरिक्त, निम्नलिखित जावा 8 भाषा एपीआई भी उपलब्ध हैं:

  • परावर्तन और भाषा संबंधी एपीआई
    • java.lang.FunctionalInterface
    • java.lang.annotation.Repeatable
    • java.lang.reflect.Method.isDefault()
    • और प्रतिबिंब repeatable के साथ जुड़े एपीआई एनोटेशन, जैसे AnnotatedElement.getAnnotationsByType(Class)
  • उपयोगिता एपीआई
    • java.util.function
    • java.util.stream

सभी आपको क्या करना चाहिए नई जैक संकलक उपयोग करने के लिए, इस तुम सिर्फ करने के लिए इस जोड़ने के लिए क्या करना है अपने ग्रेडल फ़ाइल build.gradle (Module: app):

android { 
    ... 
    defaultConfig { 
    ... 
    jackOptions { 
     enabled true 
    } 
    } 
    compileOptions { 
    sourceCompatibility JavaVersion.VERSION_1_8 
    targetCompatibility JavaVersion.VERSION_1_8 
    } 
} 

संदर्भ:

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

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