採択
2022/11/27 10:00〜
Track C (#jjug_ccc_c)
Video:40min + Live:10min
Intermediate Java SE Yes (YouTube)

バーチャルスレッド詳細

mike_neck もちだ

概要

Java19 よりバーチャルスレッドがプレビュー API としてリリースされました。
バーチャルスレッドは既存のスレッドに比べると遥かに軽量で、
高スループットの並行アプリケーションを容易に書けるようになります。

このセッションでは仕様書、OpenJDK のコード、サンプルプログラムを通じて、
バーチャルスレッドの動作を明らかにしていこうと思います。

目標

  • バーチャルスレッドの仕組みを理解する。
  • バーチャルスレッドで避けたほうがよいプログラムを理解する。
  • アプリケーションにどのような変更が必要なのか?あるいは変更が必要ないのかがわかるようになる。

扱わないこと

以下は本セッションの理解には欠かせないものの、扱う時間がないため、事前に学習されることをおすすめします。

  • 従来のスレッドについての理解
  • Fork/Join フレームワークについての理解
  • poll/epoll/kqueue/wepoll によるネットワーク多重化

内容予定リスト

  1. VirtualThread の意義
    • サーバーアプリケーションの課題
    • 非同期型・別API型から Thread への回帰
    • ざっくり VirtualThread
  2. VirtualThread にふれる
    • Thread.Builder API
    • ExecutorService API
    • CarrierThreadForkJoinPool
    • マウンティングとアン・マウンティング
    • 停止と再開
  3. 既存アプリケーションの移行
    • VirtualThread を使うのが適切なアプリケーションの条件
    • アプリケーションコードをそのまま使える条件
    • PIN とは?発生の有無を診断する
    • スレッドローカル実験
    • JFR/JMX によるスレッドの監視
  4. 他APIの変更
    • ThreadGroup/Thread の変更・非互換
    • JEP-428 Structured Concurrency
6
採択
2022/11/27 10:00〜
Track D (#jjug_ccc_d)
Video:40min + Live:10min
StepUp Java SE Jakarta EE JVM Architecture Yes (YouTube)

MicroProfile JWTを使って、マイクロサービスをセキュアにしよう

htakamiy 高宮 裕子

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の着物姿のロゴも可愛いです

1
採択
2022/11/27 12:30〜
Track A(#jjug_ccc_a)
Video:40min + Live:10min
StepUp Java SE Yes (YouTube)

入門:テスト技法とJUnit

suke_masa 多田真敏

プログラムは書いたら終わりではありません。本番稼働する前に、決められた仕様どおりに動作するかをしっかりテストする必要があります。
それに加え、テストはプログラムで書くことが重要です。これにより、テストを短時間かつ繰り返し実行できるようになります。
このセッションでは、テスト項目を洗い出す方法、そしてJUnitを使ってテストをプログラムで書く方法を解説します。

4
採択
2022/11/27 12:30〜
Track B (#jjug_ccc_b)
Video:40min + Live:10min
Intermediate Spring Cloud DevOps Tools Architecture

Spring BootとKubernetesで実現する今どきのDevOps入門

yasai_ls 佐藤靖幸

KubernetesクラスターでSpring Bootアプリケーションを稼働させる上でのクラスターの

これまで1年以上KubernetesクラスターにおけるDevOpsパイプラインの構築やSpring Bootアプリケーションの開発を行ってきました。本セッションでは実際にKubernetesクラスターのIaCで苦労したことや、GitOpsによる継続的デプロイの手法、そしてSpring BootにおけるKubernetesアプリケーション稼働の手法についてしくじり話やナレッジについてご紹介します。

■ 登場する言語・サービスなど

  • Java 11
  • Spring Boot
  • Amazon EKS
  • Amazon ECR
  • AWS CodeCommit
  • AWS CodeBuild
  • ArgoCD・Flux
  • CircleCI・GitHub Actions
  • Terraform
3
採択
2022/11/27 12:30〜
Track C (#jjug_ccc_c)
Video:40min + Live:10min
Intermediate Java SE Cloud JVM Yes (YouTube)

コンテナ環境でのJava技術の進化

kkzr 数村憲治

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)技術等についても紹介します。

5
採択
2022/11/27 15:00〜
Track A(#jjug_ccc_a)
Video:40min + Live:10min
Beginner Java SE

Javaの入門が終わったら何の勉強をすればいいの?

kis きしだ なおき
kis

Javaの入門書を終わって、文法を覚えたしJSPやサーブレットもやってみた、でもプログラムが作れるようになった気がしないという人は多いのではないかと思います。
このセッションでは、プログラムが作れるようになるためにどういう勉強をすればいいかを、どうやって動くプログラムを書くか、どんなプログラムを作るか、どうやってプログラムを作るか、作ったプログラムをどう動かすか、といった内容で解説します。

1
採択
2022/11/27 15:00〜
Track B (#jjug_ccc_b)
Video:40min + Live:10min
Intermediate Spring Yes (YouTube)

5年ぶりのメジャーアップデート! Spring Framework 6 & Spring Boot 3

making 槙 俊明

約5年ぶりのメジャーアップデートされたSpring Framework 6とSpring Boot 3について紹介します。
(後で追記します)

8
採択
2022/11/27 17:00〜
Track A(#jjug_ccc_a)
Video:40min + Live:10min
Intermediate Java SE Tools Yes (YouTube)

Maven Puzzlers

aalmiray Andres Almiray

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ビルドツールのより良い理解を得られることを保証します。

3
採択
2022/11/27 17:00〜
Track B (#jjug_ccc_b)
Video:40min + Live:10min
Intermediate Jakarta EE Database

Persistence made easy with Jakarta Data & NoSQL

Otavio Santana

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サービスなど、さまざまな永続化ソースを扱います。このように様々なオプションやフレーバーがある中で、どのようにすればこれらの詳細から離れたビジネスを行うことができるのか、あるいはアプリケーションと永続化エンジンの間に緩やかなカップルを持たせることができるのでしょうか。

本発表では、エンタープライズ・アーキテクチャにまつわる最新の永続化モデルの新しいトレンドについて説明します。

採択
2022/11/27 17:00〜
Track C (#jjug_ccc_c)
Video:40min + Live:10min
Intermediate Java SE Architecture

Helidon Reactive vs. Blocking (Nima)

Dmitry Aleksandrov

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で最適化した通常のブロックコード、どちらが優れているかをライブで比較します。デンジャーゾーンへようこそ

2
採択
2022/11/27 17:00〜
Track D (#jjug_ccc_d)
Video:40min + Live:10min
Beginner Database Yes (YouTube)

PostgreSQL, The Time-Series Database You Want

Chris Engelbert

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だけが必要なのかを説明します。

1