Java12に関するすべて–新機能、セキュリティ、およびSwitch式ステートメント(例)

公開: 2019-04-07

Java12-すべての新しいもの-Crunchifyによる詳細

19th March 2019にJava12がリリースされました。 Java12は急速リリースの一部であったことを知っているので、Java11リリースからわずか6か月でリリースされました。

このチュートリアルでは、Java12に関するすべての変更と新機能について説明します。

個人的には、すべての開発でJava12に切り替えましたが、本番サイクルでは時期尚早です。 すべての本番プロジェクトでJava12に切り替える場合は、このチュートリアルをブックマークしておいてください。

Java12の新機能Java12の新機能:

Java12には、変更された内部およびユーザーワークフロー関連の機能がかなりあります。 Java12の内部を見てみましょう。

変更-1)並行クラスのアンロード

通常のガベージコレクターは通常、GCサイクル中に未使用の変数をアンロードし、通常、処理中に停止/一時停止が発生するか、その間にCPUが増加します。 通常、私たちはそれに気づいていません。

ZGC (Zガベージコレクター)を使用–Java12はクラスの同時アンロードもサポートします。 これは通常のGCサイクル中に発生するため、一時停止はなく、メモリの余分な使用もありません。

デフォルトでは、ZGCはJava12で有効になっています。 これ以上のアクションは必要ありません

ZGCを無効にする方法は?

  • JVMコマンドライン引数-XX:-ClassUnloading

変更-2)JVMクラッシュの詳細を取得する

OOM(メモリ不足)エラーが発生した場合、またはJVMがクラッシュした場合、通常、Javaはすべての詳細を含むダンプファイルを作成します。

このJVMパラメータを使用すると、OOMエラー時に/tmp/crunchify/フォルダの下にダンプファイルが作成されます。

Java12で追加されたもう1つのオプションがあります。

新しいログファイルがhs_err<pid>.logという名前で作成され、JVMのクラッシュに関するすべての詳細が示されます。 これは、頻繁にクラッシュが発生し、さらにデバッグしたい場合に、実稼働環境で非常に役立ちます。

デフォルトでは無効になっていますが、上記のJVMコマンドラインパラメーターを追加することで、広範なクラッシュレポートを有効にできます。

変更-3)コンパクトな数値フォーマット

java.textは、コンパクトな数値形式のサポートを追加します。 100o1Kとして言及でき、 100000100Kとして言及できます。

結果:

変更-4)Javaセキュリティの強化

security-libs/java.security変更:

  • java.security.managerのオプションを禁止および許可する
    • disallow場合は、システム。 setSecurityManagerを使用してセキュリティマネージャーを設定することはできません。
  • -keytoolキーペア生成に追加されたgroupnameオプション
    • ユーザーは、キーペアを生成するときに名前付きグループを指定できます。
  • PKCS12 keystore生成のカスタマイズ
    • のアルゴリズムとパラメータが含まれています
      • キー保護
      • 証明書の保護
      • MacData
  • 新しいJFRセキュリティイベント
    • JFR(Java Flight Recorder)とは
    • 4つの新しいJFRイベントが追加されました
      • jdk.X509Certificate
      • jdk.X509Validation
      • jdk.TLSHandshake
      • jdk.SecurityPropertyModification

変更-5)JEP 325:式の切り替え

CrunchifyによるJEP325Switch式のチュートリアル

拡張Switch statementがJava12でサポートされるようになりました。

  • Java12ベースcase L -> syntax操作。 ここでは休憩は必要ありません。
  • スイッチ式の使用
    • これは簡略化されたswitchステートメントです
    • ラベルが一致した場合、矢印ラベルの右側の式のみが実行されます。
    • ブレークステートメントは必要ありません。

CrunchifyJava12SwitchExample.java

IntelliJ IDEA結果:

Java 12Switchステートメントのチュートリアル結果-Crunchify

変更-6)JVM定数API

java.lang.invoke.constant :ご存知かもしれませんが、Javaクラスには、実行時にすべてのオペランドを格納する定数プールがあります。

Java12は、実行時に定数を呼び出すためのAPIを追加します。

Java12から削除された機能:

Java12から削除された機能-Crunchifyのヒント

Java12の非推奨機能:

Java12の非推奨機能-Crunchifyのヒント

ここに含めたいJava12の便利なチュートリアルがあれば教えてください。