Gleyzer両氏によって共同開発されました。2019で、同言語の発表を行いました。InfoQはPurdy氏に言語と、氏らが解決を目指した問題について聞きました。設計/アーキテクチャアジャイルマニュフェスト:ソフトウェアアーキテクトの視点ソフトウェアアーキテクトの役割と責任はアジャイルソフトウェア開発のためのマニフェストの価値と矛盾していると見えますが、優れたアーキテクトはアジャイル開発チームをサポートするテクニックを見つけています。Streamingは、ストリーミングデータのためのSQLライクなインターフェースを提供します。Streamsによって、Redisがストリーミングデータを複数のプロデューサとコンシューマの間で消費、保持、配信することができるようになります。ソフトウェア開発のマニフェストたゆまず息もつかずに市場に突進することで、会社を静かに消滅の崖っぷちへと追い込みます。それは設計してコードを書く方法を再考する時です。簡単さへの投資は、速さへの投資です。簡単さは知的財産の主鉱脈でもあります。競争上の優位性は、一度失ったら、もう一度手に入れることはほとんど不可能です。Buytaerts氏が過去10年間にわたって、企業がDevOps採用のハイプサイクルをくぐり抜け、変革に対する誤解を解消する過程を支援してきた経験について語ります。12の新機能に関するブログ投稿を公開した。12と13、最近Azulに起きたさまざまな事について話を聞いた。InfoQ:Azulのプロダクトの話から始めましょう。OpenJDKディストリビューションのZuluと、高性能のプロプライエタリJVMであるZingという、2つのJDKを別々に提供していますね。ZingはコマーシャルなVMで、低レイテンシと高スループットを必要とするJavaアプリケーションのパフォーマンスを最適化するために設計されています。マーケットとするのは、非決定的な性質を持ったガベージコレクションでは対処できないような、厳しいワークロードを抱えたユーザです。トレーディングシステムやWebページ広告インジェクションといったアプリケーションでは、ヒープサイズに比例するGC一時停止時間は許容されません。従って、異なるアプローチが必要なのです。Zingは完全にポーズレスのコレクタです。JDKの代替品を望む人たちを対象としています。11になって、Oracleは、ディストリビューションのライセンスを変更しました。これにより、無償アップデートを頼ってきた多くの人たちが、Oracleにお金を払うか、別のディストリビューションを使用するか、という選択を迫られています。Editionは、アップデートが利用可能になった時のSLAを含むフルサポートを、極めてリーズナブルな価格で提供することによって、サポートのない無償バージョンがニーズに適さないユーザにアピールします。Zuluには2つのバージョンがあります。Editionは、当社のWebサイトから無料でダウンロードして、好きな場所で使用できます。Editionは、アップデートの可用性に関するSLAと、問題解決のためのサポートチャネルが用意された、商用サポート付きのバージョンです。Embeddedはプロダクトラインの第3の部分にあたるもので、スマートメータ、車内インフォテインメントといった本当の組み込みシステムや、インストールを簡素化するためにアプリケーションコードにJDKをバンドルしたいユーザのための製品ラインです。基本的には、JVMに関わるパフォーマンスの問題を解消するために、新たな方法を常に模索しています。マネージランタイム環境であることは、開発やデプロイメントを簡素化する上では有利なのですが、GCによる停止や、JITコンパイラ動作時のアプリケーションのウォームアップ時間といった欠点があります。Collector)の開発によるGC問題の解決でした。その後何年かの間にいくつか変更がありましたが、(負荷値バリアやLVBを使用するという)基本的なアプローチは変わっていません。ShenandoahはC4とは異なるアプローチを採用していて、現時点では単一世代のヒープのみを使用しています。ZGCはアプローチの点ではZingによく似ていますが、完全なポーズレスではありません。これらのコレクタはいずれも実験段階ですので、多くのユーザ、特に要求の厳しいSLAを探しているユーザが近い将来、本番環境に導入するとは思いません。他社がどのような動きをするのか、興味を持って見ています。JITへのリプレースを行いました。これによって、特にベクトル処理をよりよい方法で活用するような領域では、優れたパフォーマンスが得られるようになります。ウォームアップ時間を短縮する目的では、ReadyNow!を開発しました。実行中のアプリケーションのスナップショットを取得し、クラスのロードと初期化にこれを使用することで、メインエントリポイントに達する前にメソッドをコンパイルするものです。Stashingです。これは、アプリケーション実行からコンパイルコードを保存し、キャッシュとして効果的に使用することで、ReadNow!を使用する時に必要なコンパイルの量を低減するものです。JVMの仕様は、起動時に実行可能なことと可能でないことを極めて詳細に定めているので、新たなアイデアを思いついた時には、TCK(当社が実施しています)をパスするのに苦労しています。これは有償の製品なので、オープンソースライセンス下でコードを利用できるようにはしていません。私は多くのカンファレンスで講演していますが、誰がどのJDKバージョンを実運用で使用しているか、参加者に必ず投票してもらうようにしています。11へ移行する人は増えていますが、実際に移行した割合は、挙手による確認では、まだ10~15パーセントといったところです。いった非公式の調査で見る限り、非LTSバージョンを使用している人はほとんどいません。12、特に新しいswitch式機能について話を聞かせてください。Javaのラフな部分をひとつ排除するという意味で、便利な機能だと思います。Javaの構文の多くはCに基づいているので、開発作業を簡単にするためには、switchのように、別の方法で行うことのできる部分に対処していかなくてはなりません。個々のcase文を分離しなければならないことと、breakがなければ次のcaseに流れ落ちてしまうことは、常に面倒の元になっていました。文と同じように式をスイッチできるようにすれば、割当を1回だけ行えばよく、潜在的なエラーの原因を排除できるため、非常によい方法です。ラムダ式やストリームの時のように、この機能を絶賛している人は、これまで見たことがありません。12でしか利用できない(しかもプレビューとしてのみ)ので、次のLTSリリースに到達するまでは限定的な使用になると思います。うまく機能していると思います。switch式はプレビューとして追加された最初の機能ですが、この方法のメリットがすでに確認できています。12バージョンでは、古いスタイルのルックアンドフィールを維持するために、値を付けた`break`を使用します。数値をラベルとして使用することはできませんが、ループからラベルへの抜け出しを行うコードがある場合、このswitch式は混乱を招く可能性があります。354)を使用する、という決定が下されました。SEの言語仕様に含まれていたと思われるので、このような方法で変更することはできなかったかも知れません。(インキュベータモジュール)がAPIに適用されて、もう一方(プレビュー機能)が言語構文を対象にしていることを除けば、事実上は同じです。いずれも仕様を修正せずに、新機能を追加することができます。その後、仕様を変更するか、あるいはフィードバックによって仕様変更が不要であることが正当化されれば、完全に削除される場合もあります。Javaのようなプラットフォームを十分な検討の下で進化させるには、これらのアプローチは極めて理にかなっています。個人的には、これがもっと前に導入されていれば、いくつかの問題を回避できていたのではないか、と思っています。13は間もなくフィーチャーフリーズされます。13は、多くの機能を含まないリリースのひとつになるでしょう。含まれる予定のJEPはたった5つです。開発者がこのリリースに慌てて移行するとは考えられません。新しいリリースケイデンスの考え方は、以前のリリーススケジュールで使用していたのと同じ程度の(あるいはもっと速い)更新ペースを提供可能な、新機能の安定した流れにあります。現在進行中の大きなプロジェクトがいくつかあります(Valhalla、Loom、Panamaなどはその好例です)ので、これらがデリバリされれば、何回かのリリースにわたって、たくさんの新機能が提供されることになるでしょう。重要なのは、Javaが進化し続けること、停滞しないことです。小さい機能が、最も議論を必要としているようなのは面白いことです。shedding)が何度もありました。1.01の頃からプログラミングをしてきた私でさえ、そのような必要があったことは片手で数えるほどしかありません。OpenJDKイメージに関する領域と、Debianプロジェクトがソースを取得して自分たちのバイナリをリリースする方法に関して、活発な議論が行われています。meat)JDK"と呼んでいるもので、JDKバイナリのバージョン文字列の誤用が関わっています。公開されているバイナリの一部にリリース前の、次期アップデート用のアップデート番号があった、というものです。8u212と呼ばれているものに、本当にそのアップデートからの変更が含まれているのか、という点に関する信頼性の問題なのです。JDKバイナリには多くのソースがありますから、ユーザとしては、自分が手にしているものが間違いなく自分の思っているものである、という確信が必要です。この問題が解決されたと確信するためには、今後のアップデートにおいて、これがどのように機能するかを確認する必要があるでしょう。8がOracleによって管理されなくなったことで、現在可能な取り組みのひとつとしてあるのが、機能やパッチのバックポートです。これはOracleが引き受けたくなかった作業です。8へのバックポートです。バックポートが重要である理由と、それにAzulがどのように関与したのか、パッチの現在の状況について説明してください。Recorderは、JVMとアプリケーションのパフォーマンスに関する詳細なメトリックを収集するために、JVMに組み込む必要のある一連の機能です。Controlアプリケーションによって使用されます。Recorderがあります。当時はまだコマーシャル機能であったため、実運用環境で使用するには有償のライセンスが必要でした。8ビルドに移行しています。8バイナリに含めています。現在はこれをOpenJDKソースの一部にすべく、他のOpenJDKコントリビュータと協力しているところです。Azulは、Javaエコシステムのあらゆる側面に深く関わっています。Groupに、それぞれ参加しています。Hints)などでOpenJDKプロジェクトへの貢献を続けています。JUGへの参画やAdoptOpenJDKのスポンサといった活動を通じて、OpenJDKや、より広範なJavaコミュニティをこれからもサポートします。毎週火曜日に前週のまとめコンテンツがお送りいたします。25万人ものシニアデベロッパーのコミュニティーにぜひご参加ください。サンプルを見るあなたのメールアドレスはこちら国を選んでください。プライバシーポリシーに従って私の個人情報を扱うことに同意します。登録するとさまざまなことができます。アカウント登録をしてInfoQをお楽しみください。あなたの意見をお聞かせください。毎週火曜日に前週のまとめコンテンツがお送りいたします。25万人ものシニアデベロッパーのコミュニティーにぜひご参加ください。サンプルを見る様々なイノベーターとアーリーアダプターがお送りするテクノロジーの概要を見る。自分がまだ知らないことに気づいていないと知るあなたが興味のあるトピックスをいつでも最新な情報に。あなたのメールアドレスはこちら国を選んでください。プライバシーポリシーに従って私の個人情報を扱うことに同意します。よい世界へ私たちが暮らす世界を大切に思い、よりよいものにしたいと考えています。人のためのソフトウェア開発を加速し私たちのミッションを実現することで、この思いを成し遂げようとしています。私たちは利益の1%をさまざまな慈善団体に寄付しています。会社として、また従業員��して、そうしたことの価値を強く信じているからです。with.プライバシーBTあなたのプロファイルは最新ですか?プロフィールを確認してアップデートしてください。アドレス*Eメールを変更すると確認のメールが配信されます。会社名:現在の会社名をご入力ください。Other組織規模:現在の組織規模をご入力ください。2,501+国:現在の国を設定してください。Zimbabwe都道府県:現在の都道府県に設定してください。次の都道府県にアップデートする:ニュースレターを購読しますか?インダストリーメールを購読しますか?本Eメールに登録すると、以前より関心のあったトピックの関連情報をお送りする場合がございます。詳細はこちらのプライバシーポリシーをご覧ください。newsletter?新しいメールアドレスに確認用のメールを送信します。このポップアップ画面は自動的に閉じられます。