オラクル社は火曜日、Java SE プラットフォーム向け Java 16 仕様の Big Red 実装である Oracle JDK 16 をリリースする予定であり、17 の個別の機能強化を盛り込んでいる。
Java 開発者リレーションの副社長である Chad Arimura 氏にとって、これはプログラミング言語の永続的な人気と Oracle の安定した管理を祝う機会です。
「Javaが市場に登場してから25年が経ち、Javaはまさに現代の最も重要な技術革新の1つだ」と、同氏は先週The Register紙とのインタビューで語った。
「そして、統計をどう分析するかによって、他の言語がトップの座を争っていると主張するかもしれないが、結局のところ、Javaは世界中で非常に普及しているため、これに近づくことさえ難しいのだ。」
OracleはJava SEサブスクリプションに、Javaを大幅に高速化すると言われる無料の「GraalVM」ランタイムを少し追加した。
続きを読む
有村氏は、Java が依然として花形であるという見解を裏付けるために、さまざまなデータポイントを挙げた。調査対象となった開発者の 69% が Java でプログラミングしており、アクティブな JVM は 500 億個以上あるという。
「彼らがどうやってその統計を導き出したのかはよく分からないが、彼らは本当に一生懸命に取り組んだので、ある程度の正当性があることは分かっている」と彼は付け加えた。
しかし、有村氏は別の数字の根拠も示した。フォーチュン100企業の98%がJava開発者の求人を出しているというのだ。彼はこの指標を得るために、企業の求人サイトを個人的に精査したという。
Java の人気を追跡している他の組織も、この言語をかなり高く評価しています。Redmonk は 1 月に、Java を現時点で 3 番目に人気のあるプログラミング言語と評価しました。Tiobe は今月、Java を 2 番目に人気のあるプログラミング言語と評価しましたが、1 年前の 1 位からは下がっています。
4年前、Javaは数年ごとの大規模リリースから、より管理しやすい6ヶ月ごとのアップデートへと移行しました。リリースサイクルの加速は、より短いリリースサイクルを求める他の言語やブラウザなどのソフトウェアプロジェクトに追いつくために必要でした。
「市場では、6ヶ月ごとのリリースサイクルは速すぎて、人々がついていけないのではないかという懸念がありました」と有村氏は語る。「依存関係やフレームワークがサポートされなければ、どうやってリリースサイクルを維持できるというのでしょうか?」
しかし、Java 開発者たちはこの課題に立ち向かい、現在ではリリース日の前にプロジェクトの言語アップデートを認定していると彼は述べた。
Java 16には17のJava Enhancement Proposal(JEP)が含まれています。これらは、言語の動作に実質的な変更を加えるものです。
338: | ベクターAPI(インキュベーター) |
347: | C++14言語機能を有効にする |
357: | Mercurial から Git への移行 |
369: | GitHubへの移行 |
376: | ZGC: 同時スレッドスタック処理 |
380: | Unixドメインソケットチャネル |
386: | Alpine Linux ポート |
387: | 弾性メタスペース |
388: | Windows/AArch64 ポート |
389: | 外部リンカーAPI(インキュベーター) |
390: | 値ベースクラスに関する警告 |
392: | 梱包ツール |
393: | 外部メモリアクセス API (第 3 インキュベータ) |
394: | instanceofのパターンマッチング |
395: | 記録 |
396: | デフォルトで JDK 内部を強力にカプセル化 |
397: | シールドクラス(第2弾プレビュー) |
「私たちのチームの多くのメンバーのように言語オタクなら、instanceof のパターン マッチングは非常に魅力的です。なぜなら、形式的な記述や定型句が減り、オブジェクトのテストとオブジェクトの代入を数行ではなく 1 行で実行できるようになり、オブジェクトを変数にキャストする必要がなくなるからです」と Arimura 氏は語りました。
彼は、不必要に冗長なコードを削減するもう 1 つのメカニズムとして、Recordsについても同様に熱心に語りました。
「 Recordsはデータそのものを表す、というのが私たちの言い方です」と有村氏は説明した。「開発者は、データベースに保存したいデータを表すクラスを何百、何千と抱えていることがよくあります。そして、それらはすべて定型的なコードで構成されているのですが… これらはすべてJVMによって自動的に作成され、置き換えられる可能性があり、大量の定型コードをたった1行のRecordsクラスにまで削減できるのです。」
プログラミングトレンドの新たな視点:JavaScriptの束ではないものは何だと思いますか?開発者はJavaScriptよりも先にPythonとJavaを学んでいます
続きを読む
JVMの改善点の中で、有村氏はJEP 376「ZGC:同時スレッドスタック処理」を注目すべき変更点として挙げました。有村氏によると、Zガベージコレクタ(ZGC)は、ヒープサイズが大きく、応答時間を10ミリ秒以下に抑えたい場合の選択肢となるとのことです。ZGC同時スレッドスタック処理は、スレッド処理を並列化することで、停止時間を1ミリ秒未満に短縮する手段を提供します。
また、新しいパッケージングツールも追加され、自己完結型のJavaアプリケーションをパッケージ化できるようになりました。有村氏によると、これはAppleのApp Storeに代表される配信モデルへの移行であり、システムにJavaをインストールし、コードをデプロイし、アプリケーションを実行するという従来のJavaの実行方法から脱却するものだということです。
「パッケージングツールは、Javaアプリのコードとその依存関係、そしてランタイムをまとめてパッケージ化し、ネイティブシステムで実行可能なネイティブアーティファクトを作成します」と彼は述べた。「例えば、Windows.exe
ファイルを作成し、それをダブルクリックするだけでJavaアプリケーションを実行できます。」
Javaのリリースサイクルは加速しているものの、Java開発者が探求し、検討すべきことはまだ多く残されています。有村氏は、Java業界は概ね適応していると述べました。
「最初に変更を発表した時は、懐疑的な意見もありました」と彼は語った。「多くの人が懐疑的だったと思います。私は『誰もついて行けないだろう』と言いました。そして『これはJavaを台無しにするだろう』とも言いました。何かを変えようとすると、たいていそういう意見が出るものですから」
しかし、過去数年間、オラクルはメッセージングとリリースのタイミングに一貫性を保ってきたため、Java 指向の企業は大方賛同してきたとアリムラ氏は語り、まだやるべきことはたくさんあると付け加えた。
「Javaは非常に普及しているため、こうした機能の導入には時間がかかります。教育分野への投資を継続していきたい点が数多くあります」と彼は述べた。「リリースサイクルの認知度向上に投資し、バージョンアップが怖いという認識を払拭したいと考えています。実際はそうではありませんから。」®