Какие новые функции в java 7 будут реализованы? И что они сейчас делают?
Ответы:
Это сводка новых возможностей Java 7 со страницы возможностей OpenJDK 7 :
vm JSR 292: Поддержка языков с динамической типизацией (InvokeDynamic) Строгая проверка файла класса lang JSR 334: небольшие языковые улучшения (Project Coin) ядро Обновить архитектуру загрузчика классов Метод закрытия URLClassLoader Обновления параллелизма и коллекций (jsr166y) i18n Unicode 6.0 Улучшение локали Отдельные языковой стандарт пользователя и языковой стандарт пользовательского интерфейса ionet JSR 203: больше новых API ввода-вывода для платформы Java (NIO.2) Поставщик файловой системы NIO.2 для архивов zip / jar SCTP (протокол передачи управления потоком) SDP (Прямой протокол сокетов) Используйте стек IPv6 Windows Vista TLS 1.2 sec Криптография на основе эллиптических кривых (ECC) jdbc JDBC 4.1 клиентский конвейер XRender для Java 2D Создание новых API-интерфейсов платформы для графических функций 6u10 Внешний вид Nimbus для Swing Компонент Swing JLayer Звуковой синтезатор Gervill [НОВИНКА] web Обновить стек XML mgmt Enhanced MBeans [ОБНОВЛЕНО]
этот:
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);
}
}
Objects
класс со статическими методами, чтобы избежать необходимости проверять нулевые ссылки. Пример: if (obj != null && obj.equals(anotherObj))
становитсяif (Objects.equals(obj, anotherObj))
Украсьте компоненты классом 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/
Улучшения языка программирования Java @ Java7
Официальная ссылка
Официальная ссылка со ссылкой на java8
wiki
Simple, Object-Oriented, Portable, Platform independent, Secured...
В дополнение к тому, что сказал Джон Скит, вот обзор проекта Java 7 . Он включает в себя список и описание функций.
Примечание. JDK 7 был выпущен 28 июля 2011 г., поэтому теперь вам следует перейти на официальный сайт java SE .
Изменения языка :
-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, объяснение кристально ясное с возможными небольшими примерами для каждой функции:
Использование оператора Diamond (<>) для создания универсального экземпляра
Map<String, List<Trade>> trades = new TreeMap <> ();
Использование строк в операторах switch
String status= “something”;
switch(statue){
case1:
case2:
default:
}
Подчеркивание в числовых литералах
int val 12_15; длинный phoneNo = 01917_999_720L;
Использование одного оператора catch для генерации нескольких исключений с помощью символа «|» оператор
catch(IOException | NullPointerException ex){
ex.printStackTrace();
}
Нет необходимости close () resources, потому что Java 7 предоставляет оператор try-with-resources
try(FileOutputStream fos = new FileOutputStream("movies.txt");
DataOutputStream dos = new DataOutputStream(fos)) {
dos.writeUTF("Java 7 Block Buster");
} catch(IOException e) {
// log the exception
}
двоичные литералы с префиксом «0b» или «0B»
В следующем списке содержатся ссылки на страницы расширений в 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