Oto podsumowanie nowych funkcji Java 7 ze strony funkcji OpenJDK 7 :
vm JSR 292: Obsługa języków dynamicznie wpisywanych (InvokeDynamic)
Ścisłe sprawdzanie plików klas
lang JSR 334: Drobne ulepszenia językowe (monety projektu)
podstawowa architektura modułu ładującego klasy aktualizacji
Metoda zamykania URLClassLoader
Aktualizacje współbieżności i kolekcji (jsr166y)
i18n Unicode 6.0
Poprawa lokalizacji
Oddzielne ustawienia regionalne użytkownika i ustawienia regionalne interfejsu użytkownika
ionet JSR 203: Więcej nowych interfejsów API we / wy dla platformy Java (NIO.2)
Dostawca systemu plików NIO.2 dla archiwów zip / jar
SCTP (Stream Control Transmission Protocol)
SDP (Sockets Direct Protocol)
Użyj stosu IPv6 systemu Windows Vista
TLS 1.2
sec Kryptografia krzywej eliptycznej (ECC)
jdbc JDBC 4.1
klient XRender potok dla Java 2D
Utwórz nowe interfejsy API platformy dla funkcji graficznych 6u10
Wygląd i styl Nimbus dla Swing
Swing JLayer
Syntezator dźwięku Gervill [NOWOŚĆ]
web Zaktualizuj stos XML
mgmt Enhanced MBean [AKTUALIZACJA]
Kod +1 dla trudnych do znalezienia przykładów kodu. Czy możesz dodać więcej?
Zasz
3
Udoskonalone wnioskowanie o typie wydaje się być smutną kopią z C # z dziwną zmianą, w której wpisywane jest odwołanie, ale obiekt nie jest? Co za komedia!
Zasz
1
@Zasz, tak jasne, jest w ciągłej poprawie
didxga
Więc pytanie do OP, jaka jest twoja opinia? Czy te ulepszenia dotyczą tylko produktywności, czy też mogą naprawdę poprawić wydajność programów? Jeśli kod bajtowy nie ulegnie zmianie, czy można używać nowych rozszerzeń języka z kodem bajtowym oznaczonym jako 1.5?
Dmitriy R
Chociaż nie jest to ulepszenie języka, istnieje nowa Objectsklasa z metodami statycznymi, aby uniknąć konieczności sprawdzania referencji zerowych. Przykład: if (obj != null && obj.equals(anotherObj))if (Objects.equals(obj, anotherObj))
zmienia
13
Nowa funkcja Java Standard Edition (JSE 7)
Udekoruj komponenty klasą JLayer:
Klasa JLayer to elastyczny i potężny dekorator dla komponentów Swing. Klasa JLayer w Javie SE 7 jest podobna w duchu do projektu JxLayer w java.net. Klasa JLayer była początkowo oparta na projekcie JXLayer, ale jej API ewoluowało osobno.
Ciągi w instrukcji przełącznika :
W JDK 7 możemy użyć obiektu String w wyrażeniu instrukcji switch. Kompilator Java generuje generalnie bardziej efektywny kod bajtowy z instrukcji switch, które używają obiektów String, niż z połączonych instrukcji if-then-else.
Wnioskowanie o typie dla wystąpienia ogólnego:
Możemy zastąpić argumenty typu wymagane do wywołania konstruktora klasy ogólnej pustym zestawem parametrów typu (<>), o ile kompilator może wywnioskować argumenty typu z kontekstu. Ta para nawiasów kątowych jest nieformalnie nazywana diamentem. Java SE 7 obsługuje ograniczone wnioskowanie o typie podczas tworzenia instancji ogólnych; można używać tylko wnioskowania o typie, jeśli sparametryzowany typ konstruktora jest oczywisty z kontekstu. Na przykład poniższy przykład nie jest kompilowany:
List<String> l = new ArrayList<>();
l.add("A");
l.addAll(new ArrayList<>());
Dla porównania, kompiluje się następujący przykład:
List<? extends String> list2 = new ArrayList<>();
l.addAll(list2);
Przechwytywanie wielu typów wyjątków i ponowne generowanie wyjątków dzięki ulepszonemu sprawdzaniu typów:
W Javie SE 7 i nowszych wersjach pojedynczy blok catch może obsłużyć więcej niż jeden typ wyjątku. Ta funkcja może zmniejszyć powielanie kodu. Rozważmy następujący kod, który zawiera zduplikowany kod w każdym z bloków catch:
W wersjach wcześniejszych niż Java SE 7 trudno jest utworzyć wspólną metodę eliminacji powielonego kodu, ponieważ zmienna e ma różne typy. Poniższy przykład, poprawny w Javie SE 7 i nowszych, eliminuje zduplikowany kod:
Klauzula catch określa typy wyjątków, które blok może obsługiwać, a każdy typ wyjątku jest oddzielony pionową kreską (|).
Pakiet java.nio.file
java.nio.filePakiet i jego opakowanie związane, java.nio.file.attribute, zapewniają kompleksowe wsparcie dla plików I / O i dla dostępu do systemu plików. W JDK 7 dostępny jest również dostawca systemu plików zip.
Do momentu! Dziesięć najlepszych wyników wyszukiwania Google dla „ Funkcje Java ” zwraca listę (bezużytecznych):Simple, Object-Oriented, Portable, Platform independent, Secured...
Marinos An
3
Oprócz tego, co powiedział John Skeet, oto przegląd projektu Java 7 . Zawiera listę i opis funkcji.
Uwaga: JDK 7 został wydany 28 lipca 2011 r., Więc powinieneś teraz przejść do oficjalnej strony java SE .
FYI, to dobra prezentacja, ale dość stara i nieco nieaktualna.
Alex Miller
Kiedy próbowałem tego linku, wyświetlała się strona błędu w języku hebrajskim - czy jest gdzieś bardziej aktualna kopia?
Simon Nickerson
1
Zmiany językowe :
-Project Coin(small changes)
-switch on Strings
-try-with-resources
-diamond operator
Zmiany w bibliotece :
-new abstracted file-system API(NIO.2)(with support for virtual filesystems)
-improved concurrency libraries
-elliptic curve encryption
-more incremental upgrades
Zmiany platformy :
-support for dynamic languages
Poniżej znajduje się link wyjaśniający nowo dodane funkcje JAVA 7, wyjaśnienie jest krystalicznie jasne z możliwymi małymi przykładami dla każdej funkcji:
Poniższa lista zawiera odsyłacze do stron ulepszeń w języku Java SE 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
Odpowiedzi:
Funkcje i udoskonalenia Java SE 7 z JDK 7 Release Notes
Oto podsumowanie nowych funkcji Java 7 ze strony funkcji OpenJDK 7 :
Przykłady kodu dla nowych funkcji w Javie 1.7
Instrukcja Try-with-Resources
to:
BufferedReader br = new BufferedReader(new FileReader(path)); try { return br.readLine(); } finally { br.close(); }
staje się:
try (BufferedReader br = new BufferedReader(new FileReader(path)) { return br.readLine(); }
Możesz zadeklarować więcej niż jeden zasób do zamknięcia:
try ( InputStream in = new FileInputStream(src); OutputStream out = new FileOutputStream(dest)) { // code }
Podkreślenia w literałach numerycznych
int one_million = 1_000_000;
Ciągi w przełączniku
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; }
Literały binarne
int binary = 0b1001_1001;
Udoskonalone wnioskowanie o typach podczas tworzenia instancji ogólnej
Map<String, List<String>> anagrams = new HashMap<String, List<String>>();
staje się:
Map<String, List<String>> anagrams = new HashMap<>();
Wiele wyjątków
to:
} catch (FirstException ex) { logger.error(ex); throw ex; } catch (SecondException ex) { logger.error(ex); throw ex; }
staje się:
} catch (FirstException | SecondException ex) { logger.error(ex); throw ex; }
SafeVarargs
to:
@SuppressWarnings({"unchecked", "varargs"}) public static void printAll(List<String>... lists){ for(List<String> list : lists){ System.out.println(list); } }
staje się:
@SafeVarargs public static void printAll(List<String>... lists){ for(List<String> list : lists){ System.out.println(list); } }
źródło
Objects
klasa z metodami statycznymi, aby uniknąć konieczności sprawdzania referencji zerowych. Przykład:if (obj != null && obj.equals(anotherObj))
if (Objects.equals(obj, anotherObj))
Nowa funkcja Java Standard Edition (JSE 7)
Udekoruj komponenty klasą JLayer:
Klasa JLayer to elastyczny i potężny dekorator dla komponentów Swing. Klasa JLayer w Javie SE 7 jest podobna w duchu do projektu JxLayer w java.net. Klasa JLayer była początkowo oparta na projekcie JXLayer, ale jej API ewoluowało osobno.
Ciągi w instrukcji przełącznika :
W JDK 7 możemy użyć obiektu String w wyrażeniu instrukcji switch. Kompilator Java generuje generalnie bardziej efektywny kod bajtowy z instrukcji switch, które używają obiektów String, niż z połączonych instrukcji if-then-else.
Wnioskowanie o typie dla wystąpienia ogólnego:
Możemy zastąpić argumenty typu wymagane do wywołania konstruktora klasy ogólnej pustym zestawem parametrów typu (<>), o ile kompilator może wywnioskować argumenty typu z kontekstu. Ta para nawiasów kątowych jest nieformalnie nazywana diamentem. Java SE 7 obsługuje ograniczone wnioskowanie o typie podczas tworzenia instancji ogólnych; można używać tylko wnioskowania o typie, jeśli sparametryzowany typ konstruktora jest oczywisty z kontekstu. Na przykład poniższy przykład nie jest kompilowany:
List<String> l = new ArrayList<>(); l.add("A"); l.addAll(new ArrayList<>());
Dla porównania, kompiluje się następujący przykład:
List<? extends String> list2 = new ArrayList<>(); l.addAll(list2);
Przechwytywanie wielu typów wyjątków i ponowne generowanie wyjątków dzięki ulepszonemu sprawdzaniu typów:
W Javie SE 7 i nowszych wersjach pojedynczy blok catch może obsłużyć więcej niż jeden typ wyjątku. Ta funkcja może zmniejszyć powielanie kodu. Rozważmy następujący kod, który zawiera zduplikowany kod w każdym z bloków catch:
catch (IOException e) { logger.log(e); throw e; } catch (SQLException e) { logger.log(e); throw e; }
W wersjach wcześniejszych niż Java SE 7 trudno jest utworzyć wspólną metodę eliminacji powielonego kodu, ponieważ zmienna e ma różne typy. Poniższy przykład, poprawny w Javie SE 7 i nowszych, eliminuje zduplikowany kod:
catch (IOException|SQLException e) { logger.log(e); throw e; }
Klauzula catch określa typy wyjątków, które blok może obsługiwać, a każdy typ wyjątku jest oddzielony pionową kreską (|).
Pakiet java.nio.file
java.nio.file
Pakiet i jego opakowanie związane, java.nio.file.attribute, zapewniają kompleksowe wsparcie dla plików I / O i dla dostępu do systemu plików. W JDK 7 dostępny jest również dostawca systemu plików zip.Źródło: http://ohmjavaclasses.blogspot.com/
źródło
Rozszerzenia języka programowania Java @ Java7
Oficjalne odniesienie
Oficjalne odniesienie z odniesieniem do wiki java8
źródło
Simple, Object-Oriented, Portable, Platform independent, Secured...
Oprócz tego, co powiedział John Skeet, oto przegląd projektu Java 7 . Zawiera listę i opis funkcji.
Uwaga: JDK 7 został wydany 28 lipca 2011 r., Więc powinieneś teraz przejść do oficjalnej strony java SE .
źródło
Zmiany językowe :
-Project Coin (small changes) -switch on Strings -try-with-resources -diamond operator
Zmiany w bibliotece :
-new abstracted file-system API (NIO.2) (with support for virtual filesystems) -improved concurrency libraries -elliptic curve encryption -more incremental upgrades
Zmiany platformy :
-support for dynamic languages
Poniżej znajduje się link wyjaśniający nowo dodane funkcje JAVA 7, wyjaśnienie jest krystalicznie jasne z możliwymi małymi przykładami dla każdej funkcji:
http://radar.oreilly.com/2011/09/java7-features.html
źródło
Map<String, List<Trade>> trades = new TreeMap <> ();
String status= “something”; switch(statue){ case1: case2: default: }
int val 12_15; long phoneNo = 01917_999_720L;
catch(IOException | NullPointerException ex){ ex.printStackTrace(); }
try(FileOutputStream fos = new FileOutputStream("movies.txt"); DataOutputStream dos = new DataOutputStream(fos)) { dos.writeUTF("Java 7 Block Buster"); } catch(IOException e) { // log the exception }
źródło
Myślę, że ForkJoinPool i powiązane ulepszenie Executor Framework to ważny dodatek w Javie 7.
źródło
Poniższa lista zawiera odsyłacze do stron ulepszeń w języku Java SE 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
Odniesienie 1 Odniesienie 2
źródło