Які нові функції в 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 (Sockets Direct Protocol) Використовуйте стек IPv6 для Windows Vista TLS 1.2 сек Криптографія з еліптичною кривою (ECC) jdbc JDBC 4.1 клієнтський конвеєр XRender для Java 2D Створіть нові API платформи для графічних функцій 6u10 Німб поглядом на Свінг Гойдалка JLayer компонент Синтезатор звуку Gervill [НОВЕ] Інтернет Оновіть стек XML mgmt Розширені 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 розвивався окремо.
Рядки в операторі комутатора :
У JDK 7 ми можемо використовувати об'єкт String у виразі оператора switch. Компілятор Java генерує, як правило, більш ефективний байт-код з операторів перемикання, які використовують об'єкти 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
Офіційне посилання
Офіційне посилання з посиланням на
wiki 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 <> ();
Використання рядків у операторах перемикання
String status= “something”;
switch(statue){
case1:
case2:
default:
}
Підкреслення в числових літералах
int val 12_15; довгий телефонNo = 01917_999_720L;
Використання одного оператора catch для створення кількох винятків за допомогою "|" оператора
catch(IOException | NullPointerException ex){
ex.printStackTrace();
}
Не потрібно закривати () ресурси, оскільки 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