Java8とJava9

Java8 Vs Java9



Java8とJava9:知っておく必要のあるJava9の改善点

多くの開発者は、アプリケーションを作成するためにJavaに目を向けます。ご存知のとおり、Javaは非常に用途が広く、使いやすく、安全で、信頼性が高く、何よりもプラットフォームに依存しません。 Javaには、世界中で650万人を超える開発者がいます。このように、参考資料も豊富であるため、使用するのに最適な言語です。

それにもかかわらず、Javaは何年にもわたって成長と進化を続けてきました。 1995年にSunMicrosystemsによって作成されました 、Javaはその信頼性を証明し続けています。 2014年3月18日から使用されているJavaの以前のビルドはJavaSE 8でした。それが発表されたとき、批評家はそれが芸術作品であり、APIの変更のストリームのリリースであると言いました。今、ブロックに新しい子供がいます。新たに作成されたJava9がついに登場しました。 2017年9月21日に発表 、Java SE 9は、私たちのやり方や開発者がアプリケーションを作成する方法を揺るがすことが期待されています。







Java 8の驚異的な敏捷性と多様性により、企業はヘルスケア、フィンテック、その他の主要セクターなどの業界向けに驚異的なソリューションを生み出しました。一方、Java 9は、その上に構築し、まったく新しい機能を開発者に提供することを約束します。



それでは、Java9の新機能を見てみましょう。



プロジェクトジグソー

これはJava9のハイライトの1つです。基本的に、プロジェクトジグソーはに与えられた名前です。 モジュール化 Javaの。ジグソーパズルのピースが1つずつ組み合わされて、1つの大きな画像が作成されると、Java 9のモジュール性も高まります。これは、実行するタスクまたは機能によって、コードがパーツ(モジュール)に分割されることを意味します。モジュール化によりコードの再利用がはるかに快適になるだけでなく、管理とデバッグも簡単になるため、これは大きな前進です。このため、開発者は、他の以前のビルドよりもJava9を使用してアプリケーションを作成する方が簡単であることがわかります。





モジュール化のもう1つの利点は、開発者が軽量でスケーラブルなアプリケーションを作成できることです。特にモノのインターネットが成長し続けるにつれて、Javaで記述されたそのようなアプリが増えるでしょう。

JEP 222: jshell :Javaシェル

Java 9は、新しいread-eval-print loop(REPL)ツールを備えています。下の開発段階に入った後 プロジェクト権 この機能はついに一般公開されました。この新機能は、Javaで記述された式、ステートメント、および宣言をテストするために使用される対話型ツールです。 JShell APIとツールの主な目標は、開発者に上記の機能をシェル状態でテストする機会を与えることです。これは主に高速なコーディングと調査であり、式とステートメントはメソッド内にある必要はなく、メソッドはクラス内にある必要もありません。このようにして、開発者はコードの断片をすばやく分析し、それらが目的の効果をもたらすかどうかを確認できます。



jshellツールには、次の機能を備えたコマンドラインインターフェイスがあります。

  • 構成可能な事前定義された定義とインポート。
  • 編集機能のある歴史
  • 必要なターミナルセミコロンの自動追加

コンパイラの改善

アプリケーションの実行速度を上げるために、Java 9は事前(AoT)コンパイルと呼ばれる新しいテクノロジーを採用しています。このテクノロジーは、実験段階ではありますが、仮想マシンで起動する前でも、Javaクラスをネイティブコードにコンパイルすることができます。これの可能性は無限大です。ただし、このテクノロジーをより迅速に使用することで、ピークパフォーマンスを妨げることなく、大小のアプリの起動時間を改善できます。

振り返ってみると、Java 8はジャストインタイム(JIT)コンパイラーを使用しています。これらのコンパイラは高速ですが、ウォームアップするまでに少し時間がかかります。コンパイルするコードが少ないため、小規模なプログラムやアプリでは重要ではない可能性があります。ただし、大規模なアプリの場合、説明はまったく異なります。ジャストインタイムコンパイラが必要とするウォームアップは、一部のメソッドがコンパイルされないため、アプリのパフォーマンスが低下することを意味します。

スマートコンパイルデプロイメントの第2フェーズは、Javacツールの移植性と安定性の向上です。このツールを拡張すると、デフォルト設定としてJVM(Java仮想マシン)で直接使用できるようになります。それとは別に、このツールは、開発者がJDK環境の外でも使用できるように一般化されています。 Javaは、互換性を気にせずに簡単に対応できる大規模なプロジェクトで使用できるため、開発者にとってこれは大きな問題です。もう1つの重要な更新は、Java 9を使用して作成されたアプリとプログラムをコンパイルして古いバージョンのJavaでも実行できるようにすることを唯一の機能とする、Javacコンパイラの下位互換性です。

より良いJavaScriptバッキング

JavaScriptが勢いを増し、多くの人に愛されるようになるにつれ、JDK9はJavaScriptをJavaアプリに埋め込むことを可能にしました。これはすべての助けを借りて行われます プロジェクトサイ その主な目標は、Javaで高性能でありながら軽量のJavaScriptランタイムを作成することでした。もちろん、これはJDKバージョン8でJavaScriptエンジンを提供したときに提供されました。バージョン9には、NashornのECMAScript構文順序をターゲットとするパーサーAPIがあります。このAPIが行うことは、Project Nashornの内部実装クラスに依存することなく、サーバー側のフレームワークとIDEによるECMAScriptコードの分析を可能にすることです。

ガベージコレクターとしてのG1

一般に信じられていることとは反対に、Javaには1つではなく、4つのガベージコレクターがあります。これらのガベージコレクターは同じように作成されていないため、間違ったコレクターを選択すると、アプリケーションでパフォーマンスの問題が発生します。 Java 8では、デフォルトのガベージコレクターはParallel / ThroughputCollectorでした。このガベージコレクターは、その前身であるガベージファーストコレクター(G1)に置き換えられました。 G1コレクターは、4GBを超えるヒープを効率的にサポートするように設計されているため、小規模および大規模アプリケーションの両方に最適なガベージコレクターです。

APIの更新

この新しいバージョンのJava開発キットでは、APIにいくつかの更新が加えられており、最も注目すべき点について説明します。

最初のものは、Java.util.concurrent.FlowとCompletableFutureを持つJava9同時実行更新です。背圧という問題の解決を目指しました。フローは、Javaによる Reactive Streams API これは本質的に背圧の問題を解決することを目的としています。バックプレッシャは、着信要求のレートがアプリケーションの処理能力よりも大きい場合に発生するデータの蓄積です。長期的には、アプリケーションが未処理のデータのバッファで終わるため、これは問題になります。この更新により、タイムアウト、遅延、およびサブクラス化の処理が改善されます。

セキュリティはJavaのコアアイデンティティの一部です。そのため、新しく承認されたサポート HTTP 2.0 RFCは大きなプラスです。 HTTP 2.0 RFCは、その上に構築されました GoogleのSPDYアルゴリズム これは、以前のHTTP 1.1から11.81%から47.7%の範囲で速度が向上し、すでに実を結び始めています。このクライアントAPIは、コアHTTPプロトコルとHttpURLConnection APIのアップグレードであり、HTTP 1より前に作成されたため、控えめに言っても問題があります。

コードキャッシングは、長年にわたってアプリケーションをより高速かつスムーズにするために使用される戦略でした。ただし、制限がないわけではなく、これは見過ごされていません。 Java 9のアップデートでは、JDK 9がキャッシュされたコードをより小さな部分に分割し、全体的なパフォーマンスを向上させていることが明確に示されています。 JDK 9は、特別なイテレータを使用して非メソッドコードをスキップします。プロファイルされたコード、プロファイルされていないコード、およびメソッド以外のコードを分離する。実行時間のベンチマークを改善します。

Java9の利点

多くのビジネスオーナーにとって、Java 8と9の間に違いはありません。しかし、開発者にとっては、違いの世界があります。これらは、Java SE9が以前のバージョンよりも優れている点です。

  • モジュールのシステムのおかげで、開発の速度が大幅に向上します。モジュールのシステムは、管理とデバッグが簡単であるだけでなく、再利用可能であるため、コード全体を最初から作成する必要がありません。
  • 開発者はJRE全体ではなく必要なモジュールのみを使用するため、モジュール化によるアプリケーションのリソース効率の向上と、リソースのプルがより簡単になります。
  • 次のようなコードスニペットのリアルタイム分析 マイクロベンチマーク 小さなコードのパフォーマンスを調べるために使用されます。

ソース

http://openjdk.java.net/jeps/251
https://www.romexsoft.com/blog/java-8-vs-java-9/
https://blogs.oracle.com/java/features-in-java-8-and-9
https://dzone.com/articles/5-features-in-java-9-that-will-change-how-you-deve

EclipseJavaチュートリアル