2020年3月17日JDK14公式リリースバージョンは、すぐにダウンロード経験の何かを言っていない生産環境を使用しています。しかし、このバージョンでは、長期的なバージョンではないと述べたが、でも、それはこれに基づいて、新しいバージョンをリリースしています。
また、私はまた、2020.1バージョンとして、インストールするアイデアjava14の必要性をサポートし、Java14はまだJDKのインストールに加えて、いくつかの準備作業が必要に体験してみたいです。もちろん、このバージョンを使用するには、チーム全体場合は、そうでない場合はIDEの低いバージョンを正しく識別できない、IDEをアップグレードする必要があります。
java14新機能
JDK14 16内に以下の新機能が追加されています:
- 305:instanceofのパターンマッチング(プレビュー)
- 343:パッケージングツール(インキュベーター)
- 345:NUMAメモリ割り当て最適化G1
- 349:JFRのイベントフロー
- 352:非アトミックバイトのバッファ・マッピング
- 358:ヌルポインタ例外フレンドリー
- 359:レコード(プレビュー)
- 361:スイッチ式(標準)
- 362:SolarisとSPARCポートを放棄
- 363:CMS(並行マークスイープ)ガベージコレクタを削除します
- 364:MacOSのシステム上ZGC
- 365:WindowsシステムでZGC
- 366:非推奨ParallelScavenge + SerialOld GC組成
- 367:Pack200のツールやAPIを削除します
- 368:テキストブロック(プレビュー2)
- 370:外部メモリAPI(インキュベーター)
上記の新機能を通じて、我々は363364365366はガベージコレクタの上にあるかを確認することができます。そのうち363は、明示的にCMSのガベージコレクタを放棄してきました。
そして、ここで目に見える機能の開発プロセスは、次のとおりです。instanceofはパターンマッチング、スイッチ式、テキストブロックなどを。ここでは、構文は、プログラミングを形成するために使用することができる体験して来ます。
instanceofはパターンマッチング
通常、我々はタイプに合わせて、鋳造することができるならば、クラスのinstanceof実数型を検出するために使用します。
次のようにJava14前に、我々は通常、言葉遣い:
Object obj = "程序新视界";
if(obj instanceof String){
String str = (String) obj;
System.out.println("关注公众号:" + str);
}
次のようにjava14新機能によって、我々は簡素化することができます:
Object obj = "程序新视界";
if(obj instanceof String str){
System.out.println("关注公众号:" + str);
}
我々は、パターンマッチングによって簡潔オブジェクトを発現し、様々な文及び表現は、それをテストすることを可能にすることができます。
スイッチ式
通常、我々は、フォームの構文によってスイッチを使用します。
switch (day) {
case MONDAY:
case FRIDAY:
case SUNDAY:
System.out.println(6);
break;
case TUESDAY:
System.out.println(7);
break;
case THURSDAY:
case SATURDAY:
System.out.println(8);
break;
case WEDNESDAY:
System.out.println(9);
break;
}
一致した場合に新発売ラベルスイッチ「ケースL->」java14形態は、コードラベルを実行するための唯一の権利を示しています。タグは、スイッチコンマがそれぞれの場合に、リスト定数を分離可能にします。
switch (day) {
case MONDAY, FRIDAY, SUNDAY -> System.out.println(6);
case TUESDAY -> System.out.println(7);
case THURSDAY, SATURDAY -> System.out.println(8);
case WEDNESDAY -> System.out.println(9);
}
明確かつ簡単なの多くではありません。
レコードのタイプ(レコードタイプ)が導入され、
Javaの記録タイプ14(レコードタイプ)は、プレビュー機能として導入されます。Recordオブジェクトは、宣言クラスのコンパクトな構文の使用を可能にし、列挙型、レコードを制限されたフォームは、クラスです。
アイデア2020.1で、直接作成時に対応するタイプを選択することができ、クラスや列挙を作成してレコードを作成します。
次のようにレコードには、タイプを定義します。
public record Point(int x, int y) {
}
使用の記録は次のとおりです。
Point point = new Point(1,3);
System.out.println(point.x());
System.out.println(point.y());
レコードのクラスは、我々は次のように表示されますコンパイルします
public final class Point extends java.lang.Record {
private final int x;
private final int y;
public Point(int x, int y) { /* compiled code */ }
public java.lang.String toString() { /* compiled code */ }
public final int hashCode() { /* compiled code */ }
public final boolean equals(java.lang.Object o) { /* compiled code */ }
public int x() { /* compiled code */ }
public int y() { /* compiled code */ }
}
ロンボク島の潜在的な代替品はありますか?
プレビューテキストブロックとして維持するプロパティ
長い形式は以下を用いて調製することができるならば、一般的に、我々は、文字列を定義します。
String html = "<html>\n" +
" <body>\n" +
" <p>Hello, world</p>\n" +
" </body>\n" +
"</html>\n";
次のような新機能を使用してJava14のテキストブロックを書き換えることができます。
String html = """
<html>
<body>
<p>Hello, world</p>
</body>
</html>
""";
テキストブロックは、それが表現し、あまり複雑にする高い能力を持って、任意の文字列を表現するために使用することができる、新しいJava言語の構文です。
テキストブロックの先頭に区切り文字は、ゼロ個以上の空白が続くシーケンスは、最初の区切り回線終端からのコンテンツとの最後の行終端後、からなる3二重引用符(「」「)で構成されています最初の文字。
終了デリミタは、3つの二重引用符文字のシーケンスです。最初の二重引用符の区切り文字の終了前の最後の文字の最後に内容。
テキストブロックの内容と異なるテキスト文字列は、直接二重引用符に含めることができます。「テキストブロックで許可されますが、必須ではありませんか、推奨されません。
テキスト文字列異なるコンテンツは、直接回線終端装置を含むことができます。テキストブロック内の\ n個の使用を可能にしますが、必ずしもかをお勧めしません。
パッケージングツール(インキュベーター)
JPackageのパッケージングツールJavaアプリケーションは、このパッケージは、すべての必要な依存関係が含まれている、特定のプラットフォーム用のインストールパッケージとしてパッケージ化することができます。アプリケーションは、通常の方法のセットにJARファイルまたはモジュールのセットを提供することができます。パッケージフォーマットを分けることができます:
- Linuxの場合:DEBおよびRPM
- MacOSの:PKGとDMG
- Windowsの場合:MSIおよびEXE
概要
もちろん、java14なガベージコレクタParallelScavenge + SerialOldの廃止などというように、他の多くの最適化機能は、あります。しかし、すべての後に、注意する、または必要性を使用する前に、多くの機能だけでプレビュー機能として表示されます。
サプリメント
後でjava14新機能を試してみたい場合は、以下の設定を変更するためにに、注意を払うのアイデアの最新バージョンをダウンロードしてください: