जावा 7 में नई सुविधाएँ


जवाबों:


211

जावा SE 7 JDK 7 रिलीज़ नोट्स से सुविधाएँ और संवर्द्धन

यह OpenJDK 7 सुविधाओं पृष्ठ से जावा 7 नई सुविधाओं का सारांश है :

vm JSR 292: गतिशील रूप से टाइप की जाने वाली भाषाओं के लिए समर्थन (InvokeDynamic)
        सख्त वर्ग-फ़ाइल जाँच
लैंग जेएसआर 334: लघु भाषा संवर्द्धन (प्रोजेक्ट सिक्का)
कोर अपग्रेड क्लास-लोडर आर्किटेक्चर
        URLClassLoader को बंद करने की विधि
        संगामिति और संग्रह अपडेट (jsr166y)
i18n यूनिकोड 6.0
        लोकल एन्हांसमेंट
        अलग-अलग उपयोगकर्ता लोकेल और उपयोगकर्ता-इंटरफ़ेस लोकेल
आयनसेट JSR 203: जावा प्लेटफॉर्म के लिए अधिक नए I / O API (NIO.2)
        ज़िप / जार अभिलेखागार के लिए NIO.2 फाइल सिस्टम प्रदाता
        SCTP (स्ट्रीम कंट्रोल ट्रांसमिशन प्रोटोकॉल)
        एसडीपी (सॉकेट्स डायरेक्ट प्रोटोकॉल)
        Windows Vista IPv6 स्टैक का उपयोग करें
        टीएलएस 1.2
अण्डाकार-वक्र क्रिप्टोग्राफी (ECC)
jdbc JDBC 4.1
जावा 2 डी के लिए क्लाइंट एक्सेंडर पाइप लाइन
        6u10 ग्राफिक्स सुविधाओं के लिए नया प्लेटफ़ॉर्म एपीआई बनाएं
        निंबस घुमाओ के लिए देखो और महसूस करो
        स्विंग JLayer घटक
        ग्रीविल ध्वनि सिंथेसाइज़र [NEW]
वेब XML स्टैक अपडेट करें
mgmt बढ़ी एमबीन्स [अद्यतन]

जावा 1.7 में नई सुविधाओं के लिए कोड उदाहरण

संसाधनों के साथ प्रयास करें

यह:

BufferedReader br = new BufferedReader(new FileReader(path));
try {
   return br.readLine();
} finally {
   br.close();
}

हो जाता है:

try (BufferedReader br = new BufferedReader(new FileReader(path)) {
   return br.readLine();
}

आप एक से अधिक संसाधन बंद करने की घोषणा कर सकते हैं:

try (
   InputStream in = new FileInputStream(src);
   OutputStream out = new FileOutputStream(dest))
{
 // code
}

संख्यात्मक शाब्दिक में अंडरस्कोर

int one_million = 1_000_000;

स्विच में तार

String s = ...
switch(s) {
 case "quux":
    processQuux(s);
    // fall-through

  case "foo":
  case "bar":
    processFooOrBar(s);
    break;

  case "baz":
     processBaz(s);
    // fall-through

  default:
    processDefault(s);
    break;
}

द्विआधारी शाब्दिक

int binary = 0b1001_1001;

जेनेरिक इंस्टेंस क्रिएशन के लिए बेहतर टाइप इंट्रेंस

Map<String, List<String>> anagrams = new HashMap<String, List<String>>();

हो जाता है:

Map<String, List<String>> anagrams = new HashMap<>();

एकाधिक अपवाद पकड़ने

यह:

} catch (FirstException ex) {
     logger.error(ex);
     throw ex;
} catch (SecondException ex) {
     logger.error(ex);
     throw ex;
}

हो जाता है:

} catch (FirstException | SecondException ex) {
     logger.error(ex);
    throw ex;
}

SafeVarargs

यह:

@SuppressWarnings({"unchecked", "varargs"})
public static void printAll(List<String>... lists){
    for(List<String> list : lists){
        System.out.println(list);
    }
}

हो जाता है:

@SafeVarargs
public static void printAll(List<String>... lists){
    for(List<String> list : lists){
        System.out.println(list);
    }
}

4
कोड उदाहरण खोजने के लिए कठिन कोड के लिए +1 कोड। क्या आप और जोड़ सकते हैं?
ज़ाज़

3
बेहतर प्रकार का अनुमान सी # से एक अजीब बदलाव के साथ एक उदास प्रति प्रतीत होता है जहां एक संदर्भ टाइप किया जाता है, लेकिन वस्तु नहीं है ?? क्या कॉमेडी है!
ज़ाज़

1
@Zasz, हाँ, निश्चित रूप से, यह निरंतर सुधार में है
दिक्सेगा

तो सवाल ओपी का है, आपकी क्या राय है? क्या ये वृद्धि सिर्फ उत्पादकता की तरफ है, या वे वास्तव में कार्यक्रमों के प्रदर्शन में सुधार कर सकते हैं? यदि कोई बाइटकोड नहीं बदलता है, तो क्या 1.5 के रूप में चिह्नित बाइटकोड के साथ नई भाषा संवर्द्धन का उपयोग किया जा सकता है?
दिमित्रि आर

यद्यपि भाषा सुधार नहीं है, फिर भी नया Objectsवर्ग है, जिसमें शून्य रेफ़रल्स की जाँच करने से बचने के लिए स्थिर तरीके हैं। उदाहरण: if (obj != null && obj.equals(anotherObj))बन जाता हैif (Objects.equals(obj, anotherObj))
कार्मेकेनो

13

जावा मानक संस्करण की नई विशेषता (JSE 7)

  1. JLayer वर्ग के साथ सजाने के घटक:

    JLayer वर्ग स्विंग घटकों के लिए एक लचीला और शक्तिशाली डेकोरेटर है। जावा SE 7 में JLayer क्लास java.net पर JxLayer प्रोजेक्ट प्रोजेक्ट की भावना के समान है। JLayer क्लास शुरू में JXLayer प्रोजेक्ट पर आधारित थी, लेकिन इसका API अलग से विकसित हुआ।

  2. स्विच स्टेटमेंट में स्ट्रिंग्स :

    जेडीके 7 में, हम एक स्विच स्टेटमेंट की अभिव्यक्ति में स्ट्रिंग ऑब्जेक्ट का उपयोग कर सकते हैं। जावा कंपाइलर स्विच स्टेटमेंट से आम तौर पर अधिक कुशल बायटेकोड उत्पन्न करता है जो स्ट्रिंग की वस्तुओं का उपयोग करता है यदि जंजीर से तत्कालीन बयानों की तुलना में।

  3. जेनेरिक इंस्टेंस के लिए टाइप करें

    जब तक कंपाइलर संदर्भ से प्रकार के तर्कों का अनुमान लगा सकता है, तब तक हम एक सामान्य श्रेणी के कंस्ट्रक्टर को टाइप पैरामीटर (<>) के खाली सेट के साथ संलग्न करने के लिए आवश्यक प्रकार के तर्कों को प्रतिस्थापित कर सकते हैं। कोण कोष्ठक की इस जोड़ी को अनौपचारिक रूप से हीरा कहा जाता है। जावा एसई 7 सामान्य उदाहरण निर्माण के लिए सीमित प्रकार के अनुमान का समर्थन करता है; आप केवल संदर्भ का उपयोग कर सकते हैं यदि संदर्भ से पैरामीटर का प्रकार स्पष्ट है। उदाहरण के लिए, निम्नलिखित उदाहरण संकलित नहीं करता है:

    List<String> l = new ArrayList<>();
    l.add("A");
    l.addAll(new ArrayList<>());

    तुलना में, निम्नलिखित उदाहरण संकलित करता है:

    List<? extends String> list2 = new ArrayList<>();
    l.addAll(list2);
  4. बेहतर प्रकार की जाँच के साथ कई अपवाद प्रकार और रीथ्रोइंग अपवाद को पकड़ना:

    जावा एसई 7 और बाद में, एक एकल कैच ब्लॉक एक से अधिक प्रकार के अपवाद को संभाल सकता है। यह सुविधा कोड दोहराव को कम कर सकती है। निम्नलिखित कोड पर विचार करें, जिसमें प्रत्येक कैच ब्लॉक में डुप्लिकेट कोड है:

    catch (IOException e) {
        logger.log(e);
        throw e;
    }
    catch (SQLException e) {
        logger.log(e);
        throw e;
    }

    जावा एसई 7 से पहले रिलीज में, डुप्लिकेट किए गए कोड को खत्म करने के लिए एक सामान्य विधि बनाना मुश्किल है क्योंकि चर ई के विभिन्न प्रकार हैं। निम्नलिखित उदाहरण, जो जावा एसई 7 में मान्य है और बाद में, डुप्लिकेट कोड को समाप्त करता है:

    catch (IOException|SQLException e) {
        logger.log(e);
        throw e;
    }

    कैच क्लॉज अपवादों के प्रकारों को निर्दिष्ट करता है जिन्हें ब्लॉक संभाल सकता है, और प्रत्येक अपवाद प्रकार को एक ऊर्ध्वाधर बार (()) के साथ अलग किया जाता है।

  5. Java.nio.file पैकेज

    java.nio.fileपैकेज और इससे संबंधित पैकेज, java.nio.file.attribute, फ़ाइल आई / ओ के लिए और फाइल सिस्टम तक पहुँचने के लिए व्यापक समर्थन प्रदान करते हैं। एक जिप फाइल सिस्टम प्रोवाइडर JDK 7 में भी उपलब्ध है।

स्रोत: http://ohmjavaclasses.blogspot.com/


6

मुद्दे पर! " जावा सुविधाओं " के लिए शीर्ष दस Google खोज परिणाम (बेकार) सूची देता है:Simple, Object-Oriented, Portable, Platform independent, Secured...
Marinos

3

जॉन स्कीट ने जो कहा उसके अलावा, यहां जावा 7 परियोजना का अवलोकन किया गया है । इसमें एक सूची और सुविधाओं का वर्णन शामिल है।

नोट: JDK 7 को 28 जुलाई 2011 को जारी किया गया था, इसलिए अब आपको आधिकारिक जावा एसई साइट पर जाना चाहिए ।


FYI करें, यह एक अच्छी प्रस्तुति है, लेकिन बहुत पुरानी और कुछ हद तक पुरानी है।
एलेक्स मिलर

जब मैंने इस लिंक की कोशिश की तो मुझे हिब्रू में एक त्रुटि पृष्ठ मिला - क्या कहीं और कॉपी कॉपी है?
साइमन निकर्सन

1

भाषा परिवर्तन :

-Project Coin (small changes)
-switch on Strings
-try-with-resources
-diamond operator

पुस्तकालय परिवर्तन :

-new abstracted file-system API (NIO.2) (with support for virtual filesystems)
-improved concurrency libraries
-elliptic curve encryption
-more incremental upgrades

प्लेटफ़ॉर्म परिवर्तन :

-support for dynamic languages

नीचे JAVA 7 की नई जोड़ी गई विशेषताओं की व्याख्या करने वाला लिंक दिया गया है, यह व्याख्या प्रत्येक सुविधाओं के लिए संभावित छोटे उदाहरणों के साथ स्पष्ट है:

http://radar.oreilly.com/2011/09/java7-features.html


0

सामान्य उदाहरण निर्माण के लिए डायमंड (<>) ऑपरेटर का उपयोग करना

Map<String, List<Trade>> trades = new TreeMap <> ();

स्विच स्टेटमेंट में स्ट्रिंग्स का उपयोग करना

String status=  something”;
   switch(statue){
     case1: 
     case2: 
     default:
    }

संख्यात्मक शाब्दिकों में अंडरस्कोर

int वैल 12_15; लंबे फोनन = 01917_999_720L;

"का उपयोग करके कई अपवाद फेंकने के लिए एकल कैच स्टेटमेंट का उपयोग करना" | ऑपरेटर

catch(IOException | NullPointerException ex){
          ex.printStackTrace();   
    }

बंद करने () संसाधनों की आवश्यकता नहीं है क्योंकि जावा 7 प्रयास-साथ-संसाधन विवरण प्रदान करता है

try(FileOutputStream fos = new FileOutputStream("movies.txt");
      DataOutputStream dos = new DataOutputStream(fos)) {
              dos.writeUTF("Java 7 Block Buster");
  } catch(IOException e) {
        // log the exception
  }

उपसर्ग "0 बी" या "0 बी" के साथ द्विआधारी शब्द


0

मुझे लगता है कि ForkJoinPool और Executor Framework से संबंधित वृद्धि जावा 7 में एक महत्वपूर्ण अतिरिक्त है।


-2

निम्नलिखित सूची में जावा एसई 7 में एन्हांसमेंट पेजों के लिंक शामिल हैं।

Swing
IO and New IO
Networking
Security
Concurrency Utilities
Rich Internet Applications (RIA)/Deployment
    Requesting and Customizing Applet Decoration in Dragg able Applets
    Embedding JNLP File in Applet Tag
    Deploying without Codebase
    Handling Applet Initialization Status with Event Handlers
Java 2D
Java XML  JAXP, JAXB, and JAX-WS
Internationalization
java.lang Package
    Multithreaded Custom Class Loaders in Java SE 7
Java Programming Language
    Binary Literals
    Strings in switch Statements
    The try-with-resources Statement
    Catching Multiple Exception Types and Rethrowing Exceptions with Improved Type Checking
    Underscores in Numeric Literals
    Type Inference for Generic Instance Creation
    Improved Compiler Warnings and Errors When Using Non-Reifiable Formal Parameters with Varargs Methods
Java Virtual Machine (JVM)
    Java Virtual Machine Support for Non-Java Languages
    Garbage-First Collector
    Java HotSpot Virtual Machine Performance Enhancements
JDBC

संदर्भ 1 संदर्भ 2


1
आपको उस सूची के बजाय अधिक संक्षिप्त विवरण या उदाहरण देना चाहिए जिसे हम जावा आधिकारिक पृष्ठ में भी जान सकते हैं।
केन ब्लॉक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.