JavaRush /Java Blog /Random-JA /2022 年の Java トレンド: JDK 18 および 19、Project Loom、Data Mesh

2022 年の Java トレンド: JDK 18 および 19、Project Loom、Data Mesh

Random-JA グループに公開済み
さて、2022年が始まりました。ほとんどの人はまだシャンパンとオリヴィエで年末年始休暇を過ごしていますが、私たちはジャワの世界のトレンドについて話します。おそらくこれは、自分のキャリアを分析したり、新しいテクノロジーを学習したり、来年の開発計画を立てたりするのに役立つでしょう。 2022 年の Java トレンド: JDK 18 および 19、Project Loom および Data Mesh - 1Java 言語の専門家で講師の Andrey Rodionov 氏、EPAM のソリューション アーキテクトで Devoxx ウクライナ プログラム委員会の責任者である Oleg Tsal-Tsalko 氏が、2022 年と近い将来の Java に何が待ち受けているかについて語りました。

2022 年の Java の見通しは何ですか?

2022 年の Java トレンド: JDK 18 および 19、Project Loom、Data Mesh - 2今年は、次の 2 つのバージョン、JDK 18 (3 月) と JDK 19 (9 月) のリリースが予定されています。JDK 18 では、ほとんどの Java 開発者にとって興味深い可能性のあるものが次のとおりです。
  • サーブレット コンテナをサポートしない組み込みのシンプル Web サーバー。Python、Ruby、PHP の同様のミニ Web サーバーと同様に、ラピッド プロトタイピングとテストに使用できます。
  • パターンマッチングは引き続き改善されています。
JDK 19 に関しては、早期アクセス ビルドがすでに存在していますが、それに何が含まれる予定であるかについての正式なリストはまだありません。JDK 19 には、少なくとも Project Loom の最初の安定したプロトタイプが含まれると信じたいと思います。最近草案仕様が公開され、最新のビルドは JDK 19 に基づいています。Project Loom については、以下でさらに詳しく説明します。

Java が依然として唯一のソリューションであるのはどの分野ですか?また、Java が望ましいのはどの分野ですか?

アンドレイ・ロディオノフ:

幸いなことに、どの分野においても Java の代替手段がないとは言えませんが、エンタープライズ アプリケーション、バックエンド、マイクロサービスを開発するための一種の黄金律として Java について話すことはできます。また、Amazon、Microsoft、Alibaba、Red Hat、Bellsoft (サンクトペテルブルクの Oracle 開発センターの人々によって設立) などのさまざまなベンダー (Oracle を除く) からのさまざまな JDK ディストリビューションの数が増加していることにも注目してください。ディストリビューションの完全なセットはここから入手できます。 2022 年の Java トレンド: JDK 18 および 19、Project Loom および Data Mesh - 3代替手段は常にありますが、Java はエンタープライズ開発のバックエンドで最も活用されます。ほとんどの大企業は、大規模で複雑なシステムのために Java を選択します。理由は同じです。市場の開発者の数と専門知識、巨大なエコシステム、強力な JVM プラットフォームです。

Java と比較して、他の jvm 言語、特に Kotlin にはどのような見通しがありますか?

アンドレイ・ロディオノフ:

どの JVM 言語が人気があるかを理解するには、Spring、Micronaut、Vert.x のドキュメントを開いて、コード例がどの言語で提供されているかを確認してください。Java と Kotlin が一般的です。プロジェクトが Kotlin に大規模に移行しているとは言えませんが、バックエンドとしての Kotlin の人気は高まり続けており、多くのフレームワークが Kotlin をエコシステムに含めようとしています。Scala に関しては、新しいバージョンがリリースされており、ML、データ処理、および関数型プログラミング パラダイムがより便利な用途でさらに積極的に使用されています。

オレグ・ツァル・ツァルコ:

他の JVM 言語も非常に魅力的で、現在ではプロジェクトで複数のプログラミング言語を使用するのがごく普通のことです。新しい JVM 言語が Java に取って代わることができない理由は次のとおりだと思われます。
  • 誰もがすぐに乗り換えてしまうほどクールなものではありません。
  • これらは Java と同じセグメントで使用されます。
  • Java は少しずつ他の言語から良いところを取り入れて改良されていきます。

リリース間隔が短くなることで Java の品質は低下しますか?

オレグ・ツァル・ツァルコ:

私は違うと思います。少なくとも今では、頻繁なリリースからよりポジティブなものを特定できるようになりました。新しい優れた機能がはるかに頻繁に登場することがわかります。今では、その言語に新しいものが登場するまで 5 年も待つ必要はありません。もちろん、今では機能が小規模な反復で登場するため、Java 8 のような壮大なリリースを期待すべきではありません。

Java の新しいバージョンには、開発者にとって特に重要な機能はありますか?

オレグ・ツァル・ツァルコ:

Java の最近のバージョンでは、パターン マッチング、シールされたクラス、レコードなどの興味深い機能がいくつか導入されています。彼らの能力を調べてみることをお勧めします。もちろん、最も本格的で期待される機能は Project Loom と Project Valhalla 内で計画されていますが、これらのプロジェクト内の機能も徐々にリリースされると思います。

Spring Framework: 多様なニーズに合わせてエコシステムを拡張し続けるのでしょうか?

アンドレイ・ロディオノフ:

Spring Framework に関しては、その開発は Spring Cloud のさまざまな機能のサポートと、Spring Boot をネイティブ バイナリにコンパイルする機能 (将来 Spring Core の一部となる予定の Spring Native プロジェクト) に焦点を当ててきました。この点で、Spring はリフレクションと動的コード生成を積極的に使用しているため、Micronaut や Quarkus に遅れをとっています。Spring Framework 6 については、 「Spring 6 以降の Spring Framework 6 の新機能」レポートを参照することをお勧めします。ジョーカー会議より(オレグ・ドクカとアレクセイ・ネステロフより)。主なものは、JDK 17 への移行、XML 構成とセッターを介した Autowire の廃止、Kotlin サポートのさらなる開発、Spring Fu プロジェクトです。

オレグ・ツァル・ツァルコ:

Spring は、現在最も人気のある Java FW として、その地位を譲りたくないのです。開発チームは Spring の開発に全力を注いでくれると思います。春はますます多くのニッチを埋めます。たとえば、Spring は Project Reactor を使用して、リアクティブ ストリーム/リアクティブ プログラミングの分野で多くのことを行ってきました。現在、彼らは RSoket プロトコルを推進していますが、これも有望そうです。

Loom プロジェクトについて教えてください。これは何のために、どのような問題を解決しますか?

アンドレイ・ロディオノフ:

Project Loom はおそらく最も興味深いイノベーションであり、JVM プラットフォーム全体と JVM 上のすべての言語にとって新たな地殻変動となる可能性があります。Project Loom は、一般の開発者にはそれほど影響を与えないかもしれませんが、エコシステム全体、ライブラリ、フレームワーク、およびマルチスレッドを使用する他の JVM 言語には間違いなく影響を及ぼします。Project Loom では、新しいスレッド抽象化である仮想スレッド (コルーチンに類似) が導入されています。以前に Java スレッドがオペレーティング システム (OS) スレッドに直接関連付けられており、Java での新しいスレッドの作成によって新しい OS スレッドが作成された場合、仮想スレッドではこの 1 対 1 の関係は壊れます。新しい仮想スレッドを作成する場合、新しい OS スレッドは作成されず、いわゆるキャリア スレッド (OS スレッド プールのある種の類似物) の 1 つが直接計算を実行するために再利用されます。したがって、複数の仮想スレッドが 1 つの OS スレッド上で実行できます。コンピューティング タスクの場合、仮想スレッドのこのモデルは何の利点も提供せず、むしろ計算速度を低下させますが、HTTP リクエストの処理、データベースまたはマイクロサービスからの応答の待機などの操作をブロックする場合、このモデルは大きな利点。実際、現在のスレッド モデルでは、Java スレッドのブロック/待機により OS スレッドがアイドル状態になります。これはリソースの無駄であり、さらに多くの OS スレッドを作成する必要がありました。仮想スレッド モデルでは、仮想スレッドをブロック/待機すると、その仮想スレッドが実行されていたキャリア スレッドが解放され、別の仮想スレッドがその上で実行されます。こうすることで、OS スレッドがより最適に使用され、同様のタスクを実行するために必要なスレッドが少なくなります。したがって、ライブラリ、フレームワーク、および JVM 言語のメーカーは、コードを仮想スレッドに適応させる必要があります。したがって、大規模な書き換えが行われる予定です:) 仮想スレッド モデルに加えて、スレッド オーケストレーション、いわゆる構造化同時実行を簡素化するための新しい API の導入も計画されています。たとえば現在、構造化同時実行性は Kotlin コルーチンや Scala ZIO で積極的に使用されています。残念ながら、JDK のバージョンや Project Loom のリリース年さえもまだ不明です。Java プラットフォームのチーフアーキテクトである Brian Goetz は、リリース日について尋ねられると、「いつになったら準備が整います。」と哲学的な言葉で答えます。したがって、私たちはProject Loom の実験的ビルドを試すことができるのを待っています。

オレグ・ツァル・ツァルコ:

Loom は大規模な包括プロジェクトであり、その中で OpenJDK と Oracle チームは Java と JVM の同時実行イノベーション (仮想スレッド、ファイバー、継続) に取り組んでいます。おそらく、これらの機能のリリースは段階的に行われるでしょう。現時点では、仮想スレッドをサポートするのは早期アクセス ビルドのみです。特に仮想スレッドについて言えば、その主な目標は、通常のプラットフォーム スレッドと同じセマンティクスを持つ数百万の軽量スレッドを使用することで、Java のマルチスレッド開発モデルを簡素化することです。内部的には、これらのスレッドは ForkJoinPool 内で管理され、プラットフォーム スレッドによって再利用されます。

マイクロサービス、クラウド アーキテクチャ、ブロックチェーン、AI などの世界的なトレンドの世界で Java の開発はどのように予測されますか?

アンドレイ・ロディオノフ:

世界的な傾向について言えば、大きな変化はありません。以前と同様、主なトレンドは引き続き Kubernetes と、サービス メッシュの形式でのその周りのインフラストラクチャです。データ メッシュは、分散データ ソースとストレージを管理するための一種の抽象化として も人気が高まっています。
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION