




В дополнение к тому, что сказал Джон Скит, вот обзор проекта Java 7. Он включает в себя список и описание функций.
Примечание. JDK 7 был выпущен 28 июля 2011 г., поэтому теперь вам следует перейти к официальному сайт Java SE.
К вашему сведению, это хорошая презентация, но довольно старая и несколько устаревшая.
Когда я попробовал эту ссылку, у меня появилась страница с ошибкой на иврите - есть ли где-нибудь более свежая копия?
Это сводка новых возможностей Java 7 из Страница возможностей OpenJDK 7:
vm JSR 292: Support for dynamically-typed languages (InvokeDynamic)
Strict class-file checking
lang JSR 334: Small language enhancements (Project Coin)
core Upgrade class-loader architecture
Method to close a URLClassLoader
Concurrency and collections updates (jsr166y)
i18n Unicode 6.0
Locale enhancement
Separate user locale and user-interface locale
ionet JSR 203: More new I/O APIs for the Java platform (NIO.2)
NIO.2 filesystem provider for zip/jar archives
SCTP (Stream Control Transmission Protocol)
SDP (Sockets Direct Protocol)
Use the Windows Vista IPv6 stack
TLS 1.2
sec Elliptic-curve cryptography (ECC)
jdbc JDBC 4.1
client XRender pipeline for Java 2D
Create new platform APIs for 6u10 graphics features
Nimbus look-and-feel for Swing
Swing JLayer component
Gervill sound synthesizer [NEW]
web Update the XML stack
mgmt Enhanced MBeans [UPDATED]
это:
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;
}
это:
@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);
}
}
+1 Код для труднодоступных примеров кода. Вы можете добавить еще?
Улучшенный вывод типа кажется грустной копией из C# со странным изменением, когда ссылка вводится, а объект - нет ?? Какая комедия!
@Zasz, да, конечно, он постоянно совершенствуется
Итак, вопрос к OP, каково ваше мнение? Являются ли эти улучшения только производительностью или они действительно могут улучшить производительность программ? Если байт-код не меняется, можно ли использовать новые языковые улучшения с байт-кодом, помеченным как 1.5?
Несмотря на то, что это не улучшение языка, есть новый класс Objects со статическими методами, чтобы избежать необходимости проверять нулевые ссылки. Пример: if (obj != null && obj.equals(anotherObj)) становится if (Objects.equals(obj, anotherObj))
действительно оценил усилия, +1
В следующем списке содержатся ссылки на страницы расширений в 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
Вы должны дать более короткие описания или примеры вместо того списка, который мы также можем найти на официальной странице Java.
Украсьте компоненты классом JLayer:
Класс JLayer - это гибкий и мощный декоратор для компонентов Swing. Класс JLayer в Java SE 7 по духу похож на проект проекта JxLayer на java.net. Класс JLayer изначально был основан на проекте JXLayer, но его API развивался отдельно.
Строки в операторе switch:
В JDK 7 мы можем использовать объект String в выражении оператора switch. Компилятор Java обычно генерирует более эффективный байт-код из операторов switch, использующих объекты String, чем из связанных операторов if-then-else.
Вывод типа для универсального экземпляра:
Мы можем заменить аргументы типа, необходимые для вызова конструктора универсального класса, пустым набором параметров типа (<>), если компилятор может вывести аргументы типа из контекста. Эта пара угловых скобок неофициально называется ромбом. Java SE 7 поддерживает вывод ограниченного типа для создания универсального экземпляра; вы можете использовать вывод типа только в том случае, если параметризованный тип конструктора очевиден из контекста. Например, следующий пример не компилируется:
List<String> l = new ArrayList<>();
l.add("A");
l.addAll(new ArrayList<>());
Для сравнения компилируется следующий пример:
List<? extends String> list2 = new ArrayList<>();
l.addAll(list2);
Выявление нескольких типов исключений и повторное отображение исключений с улучшенной проверкой типов:
В Java SE 7 и более поздних версиях один блок catch может обрабатывать более одного типа исключений. Эта функция может уменьшить дублирование кода. Рассмотрим следующий код, который содержит повторяющийся код в каждом из блоков catch:
catch (IOException e) {
logger.log(e);
throw e;
}
catch (SQLException e) {
logger.log(e);
throw e;
}
В версиях, предшествующих Java SE 7, сложно создать общий метод для устранения дублированного кода, поскольку переменная e имеет разные типы. В следующем примере, который действителен в Java SE 7 и более поздних версиях, дублированный код устраняется:
catch (IOException|SQLException e) {
logger.log(e);
throw e;
}
Предложение catch определяет типы исключений, которые может обрабатывать блок, и каждый тип исключения отделяется вертикальной чертой (|).
Пакет java.nio.file
Пакет java.nio.file и связанный с ним пакет java.nio.file.attribute обеспечивают всестороннюю поддержку файлового ввода-вывода и доступа к файловой системе. Поставщик файловой системы zip также доступен в JDK 7.
Источник: http://ohmjavaclasses.blogspot.com/
Изменения языка:
-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, объяснение кристально ясное с возможными небольшими примерами для каждой функции:
Усовершенствования языка программирования Java @ Java7
Официальная ссылка
Официальная ссылка с java8
вики-ссылка
К точке! Первая десятка результатов поиска Google по запросу "Возможности Java" возвращает (бесполезный) список: Simple, Object-Oriented, Portable, Platform independent, Secured...
Using Diamond(<>) operator for generic instance creation
Map<String, List<Trade>> trades = new TreeMap <> ();
Using strings in switch statements
String status= “something”;
switch(statue){
case1:
case2:
default:
}
Underscore in numeric literals
int val 12_15; длинный phoneNo = 01917_999_720L;
Using single catch statement for throwing multiple exception by using “|” operator
catch(IOException | NullPointerException ex){
ex.printStackTrace();
}
No need to close() resources because Java 7 provides try-with-resources statement
try(FileOutputStream fos = new FileOutputStream("movies.txt");
DataOutputStream dos = new DataOutputStream(fos)) {
dos.writeUTF("Java 7 Block Buster");
} catch(IOException e) {
// log the exception
}
binary literals with prefix “0b” or “0B”
Я думаю, что ForkJoinPool и связанное с ним усовершенствование Executor Framework является важным дополнением в Java 7.