回答:
これは、OpenJDK 7機能ページからのJava 7新機能の要約です。
vm JSR 292:動的に型付けされた言語のサポート(InvokeDynamic) 厳格なクラスファイルチェック lang JSR 334:小さな言語の機能強化(Project Coin) コアアップグレードクラスローダーアーキテクチャ URLClassLoaderを閉じるメソッド 並行性とコレクションの更新(jsr166y) i18n Unicode 6.0 ロケールの強化 個別のユーザーロケールとユーザーインターフェイスロケール ionet JSR 203:Javaプラットフォーム向けの新しいI / O API(NIO.2) zip / jarアーカイブ用のNIO.2ファイルシステムプロバイダー SCTP(ストリーム制御伝送プロトコル) SDP(Sockets Direct Protocol) Windows Vista IPv6スタックを使用する TLS 1.2 sec楕円曲線暗号(ECC) jdbc JDBC 4.1 Java 2DのクライアントXRenderパイプライン 6u10グラフィック機能用の新しいプラットフォームAPIを作成する SwingのNimbusルックアンドフィール Swing JLayerコンポーネント Gervillサウンドシンセサイザー[NEW] XMLスタックを更新する mgmt拡張MBean [更新]
この:
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
クラスがあり、null参照をチェックする必要がないように静的メソッドが用意されています。例:にif (obj != null && obj.equals(anotherObj))
なるif (Objects.equals(obj, anotherObj))
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ファイルシステムプロバイダーも利用できます。
Simple, Object-Oriented, Portable, Platform independent, Secured...
John Skeetの発言に加えて、Java 7プロジェクトの概要を以下に示します。機能のリストと説明が含まれています。
注:JDK 7は2011年7月28日にリリースされたため、公式の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; 長い電話番号= 01917_999_720L;
「|」を使用して複数の例外をスローするための単一のcatchステートメントの使用 オペレーター
catch(IOException | NullPointerException ex){
ex.printStackTrace();
}
Java 7ではtry-with-resourcesステートメントが提供されているため、リソースをclose()する必要はありません
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