Java19 よりバーチャルスレッドがプレビュー API としてリリースされました。
バーチャルスレッドは既存のスレッドに比べると遥かに軽量で、
高スループットの並行アプリケーションを容易に書けるようになります。
このセッションでは仕様書、OpenJDK のコード、サンプルプログラムを通じて、
バーチャルスレッドの動作を明らかにしていこうと思います。
以下は本セッションの理解には欠かせないものの、扱う時間がないため、事前に学習されることをおすすめします。
VirtualThread
の意義
Thread
への回帰VirtualThread
VirtualThread
にふれる
Thread.Builder
APIExecutorService
APICarrierThread
と ForkJoinPool
VirtualThread
を使うのが適切なアプリケーションの条件ThreadGroup
/Thread
の変更・非互換1.トーク概要
2.自己紹介
3.応募の動機
1.トーク概要
「最近マイクロサービスの話題を見かけるけれども、マイクロサービスのセキュリティはどうなっているんだっけ?」
というプログラマーの方々を対象に、MicroProfile JWTの概要を、簡単なデモも含めてお話したいと思います。
マイクロサービスにセキュリティをかけるには、MicroProfile JWTという、トークンを使用した認証、認可の仕組みが用意されています。
MicroProfile JWTを使うと、クライアント側からサービスへ、また、サービスから別のサービスへ、と安全にアクセスすることが可能です。
このトークでは、はじめにMicroProfile JWT (https://microprofile.io/)と、JWTまたはJSON Web Tokenと呼ばれるトークンの概要をご紹介します。
続いて、2つのマイクロサービスを実際に立ち上げて、サービス同士が、JSON Web Tokenを介して通信するように設定します。
この簡単なデモを通して、MicroProfile JWTの仕組みを、実際に見ていきたいと思います。デモのマイクロサービスは、片方をOpenLibertyで、もう片方をQuarkusで動かしてみようと思っています。
どうぞよろしくお願いします!
2.自己紹介
高宮 裕子(たかみや ひろこ)
アメリカ ノースカロライナ州 在住
米IBMにて、WebSphereとOpenLibertyのセキュリティ開発部門に13年目になります。
3.応募の動機
同僚や友人に、デベロッパー・コミュニティに参加している人が多いので。
日本のJavaコミュニティに参加できたら、とてもうれしいので。
JJUGの着物姿のロゴも可愛いです
プログラムは書いたら終わりではありません。本番稼働する前に、決められた仕様どおりに動作するかをしっかりテストする必要があります。
それに加え、テストはプログラムで書くことが重要です。これにより、テストを短時間かつ繰り返し実行できるようになります。
このセッションでは、テスト項目を洗い出す方法、そしてJUnitを使ってテストをプログラムで書く方法を解説します。
KubernetesクラスターでSpring Bootアプリケーションを稼働させる上でのクラスターの
これまで1年以上KubernetesクラスターにおけるDevOpsパイプラインの構築やSpring Bootアプリケーションの開発を行ってきました。本セッションでは実際にKubernetesクラスターのIaCで苦労したことや、GitOpsによる継続的デプロイの手法、そしてSpring BootにおけるKubernetesアプリケーション稼働の手法についてしくじり話やナレッジについてご紹介します。
■ 登場する言語・サービスなど
Dockerなどのコンテナ環境で動作させるプログラムは、通常OS上での動作とは違った考慮(例えば、CPUやメモリリソースの扱い)が必要となる場合があります。JavaVMやJavaコアライブラリでも、これまで長年にわたりコンテナ環境に対応するための修正が数十以上も行われてきました。しかし、コンテナ環境でJavaを使う際には、まだまだ注意が必要なことがあります。特に、コンテナ上のovelayfsなどのファイルシステムは今後も対応が必要な領域であり、通常OS上で動作するJavaアプリケーションがコンテナ上でそのままでは動作しない場合があります。本セッションでは、これまでのJavaVMやJavaコアライブラリにおけるコンテナ対応の内容を振り返るとともに、今後も継続して検討していく必要のある点、またJavaアプリケーション作成時・ビルド時・運用時の注意点について紹介します。
また、コンテナの特徴として軽量で起動時間の短いことから、コンテナ利用時の期待として、システム全体の起動高速化があります。最近では、OpenJDKコミュニティでも、Javaランタイムの起動性能向上を目指した「Leydenプロジェクト」が立ち上がろうとしており、Javaの起動高速化は今後の着目技術となっています。本セッションでは、Leydenの紹介をしつつ、一方でGraalVMなどのネイティブ化機能は使わずに、Java SE準拠のJavaランタイムでどこまで起動性能の向上が可能かCRIU(Checkpoint/Restore In Userspace)技術等についても紹介します。
Javaの入門書を終わって、文法を覚えたしJSPやサーブレットもやってみた、でもプログラムが作れるようになった気がしないという人は多いのではないかと思います。
このセッションでは、プログラムが作れるようになるためにどういう勉強をすればいいかを、どうやって動くプログラムを書くか、どんなプログラムを作るか、どうやってプログラムを作るか、作ったプログラムをどう動かすか、といった内容で解説します。
約5年ぶりのメジャーアップデートされたSpring Framework 6とSpring Boot 3について紹介します。
(後で追記します)
Apache Maven is an ubiquitous build tool in the Java ecosystem, some even claim it's the defacto standard build tool. Configuring Maven is deceptively simple, after all it's just a matter of writing XML, isn't it? Things look differently when the rubber meets the road. One must know the intricacies of the build lifecycle; how plugins, goals (mojos), and phases come together; rules for dependency resolution; configuration inheritance between parent - child POM files; enhancing the build with profiles; and more. These features may trip you over if the rules that govern them are unclear. We'll present a series of scenarios to test your knowledge on Maven rules. we guarantee you'll leave this session with a few bits of new information and better understanding of the Maven build tool.
機械翻訳:
Apache Mavenは、Javaエコシステムにおいてユビキタスなビルドツールであり、事実上の標準ビルドツールであると主張する人さえいます。Mavenの設定は驚くほど簡単で、XMLを記述するだけです。しかし、実際に使ってみると、状況は一変します。ビルドライフサイクルの複雑さ、プラグイン、ゴール(Mojos)、フェーズの組み合わせ、依存関係の解決ルール、親子POMファイル間の設定継承、プロファイルによるビルドの拡張などを知っておく必要があります。これらの機能を制御するルールが不明確だと、つまずく可能性があります。このセッションでは、Mavenのルールに関する知識を試すために一連のシナリオを提示します。このセッションで、いくつかの新しい情報とMavenビルドツールのより良い理解を得られることを保証します。
Persistence is the soul of modern architecture. It is a way to have a state in the stateless application, mainly in distributed systems such as microservices and cloud age app style.
We handle various persistence sources such as SQL, NoSQL, or even web services. With a considerable amount of options or flavors, how can we have a business away from these details or have a loose couple between the application and the persistence engine?
This presentation will discuss the new trends in the modern persistence model around enterprise architecture.
機械翻訳:
永続性はモダンアーキテクチャの魂である。主にマイクロサービスやクラウド時代のアプリスタイルなどの分散システムにおいて、ステートレスなアプリケーションにステートを持たせるための方法である。
SQLやNoSQL、あるいはWebサービスなど、さまざまな永続化ソースを扱います。このように様々なオプションやフレーバーがある中で、どのようにすればこれらの詳細から離れたビジネスを行うことができるのか、あるいはアプリケーションと永続化エンジンの間に緩やかなカップルを持たせることができるのでしょうか。
本発表では、エンタープライズ・アーキテクチャにまつわる最新の永続化モデルの新しいトレンドについて説明します。
Helidon is a brave, small but powerful opensource framework for writing microservices. And if you need get the maximum performance – making your apps reactive is currently the best way to do it! In this session we will dive deeper and see how to create extremely performant reactive microservices with Helidon “SE” flavour. Since Helidon has its own powerful Reactive Engine, we will learn how to get the most requests served in async operations and Messaging.
But the game changer Project Loom is already here, and Helidon supports it out of the box, we will make a live comparison of what is better – the hard reactive approach, or regular blocking code optimised with Loom! Welcome to the Danger Zone!
機械翻訳:
Helidonは、マイクロサービスを書くための勇敢で小さいが強力なオープンソースフレームワークである。そして、もしあなたが最大のパフォーマンスを得る必要があるなら、アプリをリアクティブにすることは現在それを行うための最良の方法です。このセッションでは、Helidonの「SE」フレーバーを使って、非常にパフォーマンスの高いリアクティブマイクロサービスを作成する方法について、より深く掘り下げて見ていきます。Helidonは独自の強力なReactive Engineを持っているので、非同期処理とメッセージングで最も多くのリクエストを処理する方法を学びます。
しかし、ゲームチェンジャーであるProject Loomはすでに登場し、Helidonはそれを箱から出してサポートしているので、ハードなリアクティブアプローチと、Loomで最適化した通常のブロックコード、どちらが優れているかをライブで比較します。デンジャーゾーンへようこそ
Time-series data, or data being associated with its respective time of occurrence, is everywhere. From the obvious cases, such as metrics, observability, IoT data, all the way to logs, invoicing, or payment records. While storing some of these in relational databases is standard practice, people often reach for specific time-series databases when volume gets high. But imagine if you could have all of them in the same database: PostgreSQL.
Join me for this session to learn more about the different types of time-series data and have a look at the naive, the native, and the scalable approaches to storing it in PostgreSQL. We’ll contrast their usability and performance characteristics and show you why Postgres is the only database you need!
機械翻訳:
時系列データ、つまり発生時刻と関連付けられたデータは、あらゆるところに存在します。測定基準、観測可能なデータ、IoTデータなどの明らかなケースから、ログ、請求書、支払い記録まで、あらゆるものがそうです。これらのデータの一部はリレーショナル・データベースに格納されるのが標準的ですが、量が多くなると特定の時系列データベースにアクセスすることが多くなります。しかし、これらをすべて同じデータベースで管理できるとしたらどうでしょう。PostgreSQLです。
このセッションでは、様々なタイプの時系列データについて学び、PostgreSQLに時系列データを格納するための素朴な、ネイティブな、そしてスケーラブルなアプローチについて見ていきます。それぞれの使い勝手と性能の特徴を比較し、なぜPostgreSQLだけが必要なのかを説明します。