Какие новые функции в java 7 будут реализованы? И что они делают сейчас?
Новые функции в java 7
Ответ 1
Java SE 7 Возможности и улучшения из примечаний к выпуску JDK 7
Это резюме новых функций 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]
Примеры кода для новых функций в Java 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);
}
}
Ответ 2
Новая функция стандартной версии Java (JSE 7)
-
Украсить компоненты классом 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/
Ответ 3
В дополнение к тому, что сказал Джон Скит, здесь обзор проекта Java 7. Он включает в себя список и описание функций.
Примечание. JDK 7 был выпущен 28 июля 2011 года, поэтому теперь вы должны перейти на официальный сайт java SE.
Ответ 4
Расширения языка Java программирования @Java7
- Бинарные литералы
- Строки в инструкции switch
- Попробуйте с ресурсами или ARM (Автоматическое управление ресурсами)
- Обработка нескольких исключений
- Подавленные исключения
- подчеркивание в литералах
- Тип вывода для создания общего экземпляра с использованием синтаксиса Diamond
- Улучшенные предупреждения и ошибки компилятора при использовании невосстанавливаемых формальных параметров с помощью методов Varargs
Официальная ссылка
Официальная ссылка с java8
ссылка на wiki
Ответ 5
Изменения языка:
-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, объяснение кристально чистое с возможными небольшими примерами для каждой функции:
Ответ 6
Следующий список содержит ссылки на страницы улучшений в 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