web-dev-qa-db-ja.com

Java 7の新機能

Java 7のどの新機能が実装される予定ですか?そして、今何をしていますか?

84
Serik

Java SE 7 機能と拡張機能 JDK 7リリースノート

これは、Java 7 OpenJDK 7の機能ページ)からの7つの新機能の概要

 vm JSR 292:動的に型指定された言語のサポート(InvokeDynamic)
厳密なクラスファイルチェック
 lang JSR 334:小さな言語の機能強化(Project Coin)
 coreクラスローダーアーキテクチャのアップグレード
 URLClassLoaderを閉じるメソッド
同時実行性およびコレクションの更新(jsr166y)
 i18n Unicode 6.0 
ロケールの強化
個別のユーザーロケールおよびユーザーインターフェイスロケール
 ionet JSR 203:Javaプラットフォーム(NIO.2)
 NIO.2ファイルシステムプロバイダー用の新しいI/O API/jar archives 
 SCTP(Stream Control Transmission Protocol)
 SDP(Sockets Direct Protocol)
 Windows Vista IPv6スタックを使用
 TLS 1.2 
 sec楕円曲線暗号化(ECC)
 jdbc JDBC 4.1 
クライアントXRenderパイプラインJava 2D 
 6u10グラフィック機能用の新しいプラットフォームAPIを作成します。 ____。]ニンバスSwing 
 Swing JLayerコンポーネントのルックアンドフィール
 Gervillサウンドシンセサイザー[新規] 
 web XMLスタックの更新
 mgmt Enhanced 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);
    }
}
197
didxga

Java Standard Editionの新機能(JSE 7)

  1. JLayerクラスを使用したコンポーネントの装飾:

    JLayerクラスは、Swingコンポーネント用の柔軟で強力なデコレーターです。 Java SE 7のJLayerクラスは、Java.netのJxLayerプロジェクトプロジェクトと精神的に似ています。 JLayerクラスは当初JXLayerプロジェクトに基づいていましたが、そのAPIは個別に進化しました。

  2. switchステートメントの文字列

    JDK 7では、switchステートメントの式でStringオブジェクトを使用できます。 Javaコンパイラは、一般に、チェーン化されたif-then-elseステートメントよりも、Stringオブジェクトを使用するswitchステートメントからより効率的なバイトコードを生成します。

  3. 汎用インスタンスの型推論:

    コンパイラがコンテキストから型引数を推測できる限り、ジェネリッククラスのコンストラクターを呼び出すために必要な型引数を型パラメーターの空のセット(<>)に置き換えることができます。この山括弧のペアは、略してダイヤモンドと呼ばれます。 Java SE 7は、汎用インスタンス作成のための限定型推論をサポートしています。型推論は、コンストラクターのパラメーター化された型がコンテキストから明らかな場合にのみ使用できます。たとえば、次の例はコンパイルされません。

    List<String> l = new ArrayList<>();
    l.add("A");
    l.addAll(new ArrayList<>());
    

    比較すると、次の例はコンパイルします。

    List<? extends String> list2 = new ArrayList<>();
    l.addAll(list2);
    
  4. 複数の例外タイプをキャッチし、タイプチェックを改善して例外を再スローする:

    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節は、ブロックが処理できる例外のタイプを指定し、各例外タイプは縦棒(|)で区切られます。

  5. Java.nio.fileパッケージ

    Java.nio.fileパッケージとその関連パッケージであるJava.nio.file.attributeは、ファイルI/Oおよびファイルシステムへのアクセスの包括的なサポートを提供します。 JDK 7ではZipファイルシステムプロバイダーも利用できます。

ソース: http://ohmjavaclasses.blogspot.com/

13
apresh
5
Premraj

ジョン・スキートが言ったことに加えて、ここに Java 7プロジェクトの概要 があります。これには機能のリストと説明が含まれています。

注:JDK 7は2011年7月28日にリリースされたため、公式の Java SEサイト にアクセスする必要があります。

3
David G

言語の変更

-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の新しく追加された機能を説明するリンクを示します。説明は、各機能の考えられる小さな例とともに非常に明確です。

http://radar.oreilly.com/2011/09/Java7-features.html

1
Coral

汎用インスタンスの作成にDiamond(<>)演算子を使用する

Map<String, List<Trade>> trades = new TreeMap <> ();

Switchステートメントで文字列を使用する

String status=  “something”;
   switch(statue){
     case1: 
     case2: 
     default:
    }

数値リテラルの下線

int val 12_15; long phoneNo = 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」のバイナリリテラル

0
Amit