Java 7 でどのような新機能が実装される予定ですか? そして、彼らは今何をしていますか?
8 に答える
JDK 7 リリースノートからのJava SE 7の機能と拡張機能
これは、 OpenJDK 7 機能ページの Java 7 新機能の概要です。
vm JSR 292: 動的型付け言語 (InvokeDynamic) のサポート クラスファイルの厳密なチェック lang JSR 334: 小規模な言語拡張 (Project Coin) core クラスローダ アーキテクチャのアップグレード URLClassLoader を閉じるメソッド 並行性とコレクションの更新 (jsr166y) i18n ユニコード 6.0 ロケールの強化 ユーザー ロケールとユーザー インターフェイス ロケールを分離する ionet JSR 203: Java プラットフォーム用の新しい I/O API (NIO.2) zip/jar アーカイブ用の NIO.2 ファイルシステム プロバイダー SCTP (ストリーム制御伝送プロトコル) SDP (ソケット ダイレクト プロトコル) Windows Vista IPv6 スタックを使用する TLS1.2 秒 楕円曲線暗号 (ECC) jdbc JDBC 4.1 Java 2D 用のクライアント XRender パイプライン 6u10 グラフィック機能用の新しいプラットフォーム API を作成する Swing の Nimbus ルック アンド フィール Swing JLayer コンポーネント ガービルサウンドシンセサイザー【NEW】 web XML スタックを更新する mgmt 拡張 MBeans [更新]
Java 1.7 の新機能のコード例
Try-with-resources ステートメント
これ:
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);
}
}
Java Standard Edition (JSE 7) の新機能
JLayer クラスを使用してコンポーネントを装飾します。
JLayer クラスは、Swing コンポーネント用の柔軟で強力なデコレーターです。Java SE 7 の JLayer クラスは、java.net の JxLayer プロジェクト プロジェクトと精神的に似ています。JLayer クラスは当初、JXLayer プロジェクトに基づいていましたが、その API は個別に進化しました。
switch ステートメントの文字列:
JDK 7 では、switch ステートメントの式で String オブジェクトを使用できます。一般に、Java コンパイラは、連結された if-then-else ステートメントからよりも、String オブジェクトを使用する switch ステートメントからより効率的なバイトコードを生成します。
ジェネリック インスタンスの型推論:
コンパイラがコンテキストから型引数を推測できる限り、ジェネリック クラスのコンストラクターを呼び出すために必要な型引数を空の型パラメーターのセット (<>) に置き換えることができます。この山かっこのペアは、非公式にダイヤモンドと呼ばれます。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 以降では、1 つの 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 は、ファイル I/O とファイル システムへのアクセスを包括的にサポートします。JDK 7 では、zip ファイル システム プロバイダも利用できます。
John Skeetが言ったことに加えて、Java7プロジェクトの概要を以下に示します。機能のリストと説明が含まれています。
注:JDK 7は2011年7月28日にリリースされたため、公式のjavaSEサイトにアクセスする必要があります。
言語の変更:
-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 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