Presentation Type [Choose either from Standard / BeginnerSpeaker / StepUp]: BeginnerSpeaker
Level [Choose either from Beginner / Intermediate / Advanced]: Beginner
Categories [Choose either from Java SE / Jakarta EE / Server-side / Cloud / JVM / DevOps / Tools / Others]: Cloud
カンファレンス終了後にJJUG YouTubeチャンネルでセッション動画の公開を希望する / Agree to publish your session to JJUG YouTube channel after conference [Yes or No]: No
Abstract:クラウドの発展形態として注視が必要な主要潮流である "サーバレス化" に対応できる、新しいJava実行環境 GraalVM の Navitve Build 機能を検証し、優位性を確認しました。
加えて、サーバレス環境と試験ツールについて、広く使われている Knative および Gatling などを用いて検証環境を構築したので、使用感を報告します。
Presentation Type [Choose either from Standard / BeginnerSpeaker / StepUp]: BeginnerSpeaker
Level [Choose either from Beginner / Intermediate / Advanced]: Intermediate
Categories [Choose either from Java SE / Jakarta EE / Server-side / Cloud / JVM / DevOps / Tools / Others]: Others
カンファレンス終了後にJJUG YouTubeチャンネルでセッション動画の公開を希望する / Agree to publish your session to JJUG YouTube channel after conference [Yes or No]: Yes
Abstract:
近年バックエンド API 化は多くの事例が出始め、
・バックエンドが簡潔になり、再利用性が高まる
・フロントエンドとバックエンドを別チーム/並行で開発できる
・フロントエンド/バックエンドがそれぞれリリースでき、リリースが簡単になる
など大きなメリットがあります。
ただしレガシーシステムにおいては、フロントエンドとバックエンドの開発は分離されていないケースも珍しくありません。
当社でいえば、従来のシステムは初回のレンダリングをテンプレートエンジン (JSP) により HTML を生成し、
クライアント側での動作は JavaScript によって行われていました。
結果としてサーバー側の実装は HTML 生成にも関心を払わなければならず、複雑性と責務の曖昧さを許容せざるを得ない状況でした。
加えて、時代とともにリッチな UI が求められ、DOM 操作でその要求に応える辛さにも直面しています。
こういった課題からの脱却方法として Spring Boot によるAPI化と、 React による UI 構築の導入から進め、
フロントエンド・バックエンド開発の分離に向けて取り組むことにしました。
このトークでは我々のサービスに Spring Boot によるAPI化と、 React による UI 構築の導入を進める中で、
コストや課題といかに向き合い取り組んだかの経緯、プラクティス・得られたものをご紹介します。
Presentation Type [BeginnerSpeaker]:
Level [Beginner]:
Categories [Others]:
カンファレンス終了後にJJUG YouTubeチャンネルでセッション動画の公開を希望する / Agree to publish your session to JJUG YouTube channel after conference [Yes]:
Abstract:
ユニットテストを書くことは普及しましたが、テストファーストで進めることが難しい、テスト駆動開発(TDD)でインクリメンタルに開発のワークフローを回すことができない、といった課題をよく聞きます。
そのような悩みを抱えるJavaエンジニアを対象に、Spockという使いやすいテスティングフレームワークを使ってTDDを実践していくための基本的な知識やプラクティス、パターンをご紹介したいと思います。
Presentation Type [BeginnerSpeaker]:
Level [Beginner]:
Categories [Others]:
カンファレンス終了後にJJUG YouTubeチャンネルでセッション動画の公開を希望する / Agree to publish your session to JJUG YouTube channel after conference [No]:
Abstract:
最近巷で流行している、VSCode。まだJavaユーザとしては、EclipseやIntelli Jなどが主流かと思いますが
VSCodeも公式でJavaのExtension Packなどが整備されてきており、徐々に実用レベルで使えるようになってきています。
本セッションでは、「EclipseユーザのためののVSCodeのススメ」として、VSCodeを使ったJava開発について紹介させて貰えればと思います。
Presentation Type [Choose either from Standard / BeginnerSpeaker / StepUp]: StepUp
Level [Choose either from Beginner / Intermediate / Advanced]: Beginner
Categories [Choose at least one from Java SE / Jakarta EE / Server-side / Cloud / JVM / DevOps / Tools / Others]: Server-side
カンファレンス終了後にJJUG YouTubeチャンネルでセッション動画の公開を希望する / Agree to publish your session to JJUG YouTube channel after conference [Yes or No]: Yes
Abstract:
サーバサイドWebアプリケーションにおける例外の扱い方について考察します。まずはJava言語におい想定していたと思われる非チェック例外とチェック例外の使いどころ、Springなどのフレームワークによる例外処理の思想の変更などを押さえた上で、例外的な状態をどのように扱うかについて考察します。特に関数型言語における例外状態の扱い方などを参考にしながら、今どきの例外処理についての私見を述べさせていただきます。
Presentation Type [Choose either from Standard / BeginnerSpeaker / StepUp]: Standard
Level [Choose either from Beginner / Intermediate / Advanced]: Intermediate
Categories [Choose either from Java SE / Jakarta EE / Server-side / Cloud / JVM / DevOps / Tools / Others]: DevOps
カンファレンス終了後にJJUG YouTubeチャンネルでセッション動画の公開を希望する / Agree to publish your session to JJUG YouTube channel after conference [Yes or No]: Yes
Abstract: Java のアプリケーションを実際に稼働させるためには古くは war ファイルを Tomcat にコピーするところから、uber jar の コンテナ化、Kubernetes でのデプロイが現在の主流でしょうか。ただ Kubernetes でのデプロイには Ingress、Service、Deployment、Secret、ConfigMap などシンプルなアプリケーションをデプロイするにも API オブジェクトの管理が煩雑になりがちです。本セッションではこの煩雑さを解消するために誕生した「Kubernetes のパッケージマネージャー」 Helm の概要と、実際に簡単な Java のアプリケーションや既存関係を Helm を使ってデプロイするデモをご紹介します。
Presentation Type [Standard / BeginnerSpeaker / StepUp]: Standard
Level [Choose either from Beginner / Intermediate / Advanced]: Intermediate
Categories [Choose either from Java SE / Jakarta EE / Server-side / Cloud / JVM / DevOps / Tools / Others]: Jakarta EE
カンファレンス終了後にJJUG YouTubeチャンネルでセッション動画の公開を希望する / Agree to publish your session to JJUG YouTube channel after conference [Yes or No]: Yes
Abstract:
昨年末にリリースされた、Jakarta EE 9と今年3月にリリースされる予定のJakarta EE 9.1の内容を共有するとともに、パッケージ名変更のためのツールとして公開されているEclipse Transformerについて調査した結果を共有します。
Presentation Type [Choose either from Standard / BeginnerSpeaker / StepUp]: BeginnerSpeaker
Level [Choose either from Beginner / Intermediate / Advanced]: Intermediate
Categories [Choose either from Java SE / Jakarta EE / Server-side / Cloud / JVM / DevOps / Tools / Others]: DevOps
カンファレンス終了後にJJUG YouTubeチャンネルでセッション動画の公開を希望する / Agree to publish your session to JJUG YouTube channel after conference [Yes or No]: Yes
Abstract:
我々のプロダクトで課題となっていた運用稼働の増大を解決するための一環として、GraphQL の導入を決めました。
しかし、稼働実績の長いプロダクトというのは技術的負債が増えており、新しい技術を導入する際の壁になります。
Spring への GraphQL については、Spring Boot に graphql-spring-boot-starter を利用することで導入ができるのですが、
Spring Boot の一部の機能を制限しているようなシステムには graphql-spring-boot-starter は使用できず、導入事例も少ないため困難を伴いました。
今回私たちのチームでは Spring Boot の自動構成メカニズムを使用していないシステムへの GraphQL を導入を行いましたので、その導入事例についてご紹介したいと思います。
レガシーなシステムに苦労しつつも、少しでもモダンなシステムに近づけたいと考えている方の一助になればと思います。
Presentation Type [Standard]:
Level [Intermediate]:
Categories [Java SE]:
カンファレンス終了後にJJUG YouTubeチャンネルでセッション動画の公開を希望する / Agree to publish your session to JJUG YouTube channel after conference [Yes]:
Abstract:
JDK 16 で導入された JEP (JDK Enhancement Proposal) のうち、JEP 396 : Strongly Encapsulate JDK Internals by Default による影響は十分に評価・準備することをお勧めします。
本セッションでは、JEP 396での変更点や影響、その背景を解説すると共に、アプリケーションでの評価・確認する際のポイントをご紹介します。
講演資料:
https://www.slideshare.net/tokumasu123/jdk-16-jep-396-jjug-ccc-2021-spring
Agenda:
・はじめに
・JEP 396: Strongly Encapsulate JDK Internals by Default
・モジュールに対するアクセス制御(モジュールシステムの基本)
・モジュールの分類(モジュールシステムにおける経過措置)
・モジュール分類間のアクセス制御(- illegal-access が発生する箇所(モジュール分類間)を知る!)
・JDK内部API(System Modules の非公開なAPIのうち、--illegal-access=deny の影響を受ける箇所(分類)を知る!)
・Java VM 起動オプション --illegal-access=<parameter>
・影響ある箇所の特定方法は?(その他 に分類されるJDK内部APIを利用する箇所を特定する)
・JDK 16で実行してみた...
・まとめ
Presentation Type [Choose either from Standard / BeginnerSpeaker / StepUp]: Standard
Level [Choose either from Beginner / Intermediate / Advanced]: Intermediate
Categories [Choose either from Java SE / Jakarta EE / Server-side / Cloud / JVM / DevOps / Tools / Others]: Server-side
カンファレンス終了後にJJUG YouTubeチャンネルでセッション動画の公開を希望する / Agree to publish your session to JJUG YouTube channel after conference [Yes or No]: Yes
Abstract:
KotlinはJVMで動作する静的型付けのオブジェクト指向プログラミング言語です。
近年はアプリケーションフレームワークでのサポートも増え、サーバーサイド開発においても利用される機会が増えています。
また、アプリケーションをクラウド環境で実行する機会も増えてきており、よりアプリケーション開発に集中できるサーバーレスの利用も進んで来ています。
その利用が進むKotlinとサーバーレスを活用してAPI開発をするにはどうするのか。
今回はAWS環境を対象にしたサーバーレスAPI開発やテストについてコードも交えて解説をします。
Presentation Type [Standard]:
Level [Intermediate]:
Categories [Jakarta EE]:
カンファレンス終了後にJJUG YouTubeチャンネルでセッション動画の公開を希望する / Agree to publish your session to JJUG YouTube channel after conference [Yes]:
Abstract:
Jakarta REST (旧 JAX-RS) は、今日の Jakarta EE (旧 Java EE) および MicroProfile において重要な役割を果たす API です。RESTful Web Services 向けに開発された API ではありますが、広く HTTP リクエスト/レスポンス処理に適用できる、非常に汎用的な API となっています。このセッションでは、既に Jakarta REST (旧 JAX-RS) の経験がある方を対象に、最新の仕様に基づいてより深く理解するための手助けをすることを目的としています。
Presentation Type [Choose either from Standard / BeginnerSpeaker / StepUp]: Standard
Level [Choose either from Beginner / Intermediate / Advanced]: Advanced
Categories [Choose either from Java SE / Jakarta EE / Server-side / Cloud / JVM / DevOps / Tools / Others]: Java SE
カンファレンス終了後にJJUG YouTubeチャンネルでセッション動画の公開を希望する / Agree to publish your session to JJUG YouTube channel after conference [Yes or No]: No
Abstract:
ソフトウェアはその生涯において、さまざまな要求を突き付けられます。
要求に応え続けるために必要なことは、コードをシンプルに保つことです。
ソフトウェアアーキテクチャは抽象化と問題の分割によって複雑性を減らし、コードをシンプルに保つことに貢献します。
ソフトウェアが中長期的に利用されることを前提とするのであれば、ソフトウェアアーキテクチャの理念やそれ自体を採用することは検討すべき事柄です。
しかしながら、ここにひとつの問題があります。
それはソフトウェアアーキテクチャが単一でないことです。
日夜進歩しつづけるソフトウェア開発の世界では、多くのソフトウェアアーキテクチャが生まれつづけています。
それらの中から、チームやソフトウェアの目的やライフサイクルに最適なものを選定するのは容易なことではありません。
そこで本トークでは「ソフトウェアアーキテクチャの選定」をテーマに、ソフトウェアアーキテクチャの特徴や実装例を紹介しながら、どういった観点で選定をしているかについてお話します。
本トークで取り上げる主なソフトウェアアーキテクチャは次のとおりです。
※サンプルコードは Spring Boot を予定しています。
Presentation Type: Standard
Level: Intermediate
Categories: Java SE
カンファレンス終了後にJJUG YouTubeチャンネルでセッション動画の公開を希望する / Agree to publish your session to JJUG YouTube channel after conference: Yes
Abstract:
秒間36万リクエストをさばくオンライン広告入札システムにおける、Zガベージ・コレクタ(ZGC)への取り組みについてお話しします。
オンライン広告入札システムではRTB(リアルタイムビッディング)という仕組みで広告入札が行われ、遅くとも100ミリ秒のレイテンシが求められます。
ZGCはスケーラブルな低レイテンシのガベージ・コレクタであり、オンライン広告入札システムとの相性はよいのではないかと考えました。
一方でZGCの利用事例について公開されているものは数が少なく、私達も既存のG1GCとの比較を試行錯誤しながら検証をしています。
そこで、このセッションでは次の内容についてご紹介し、ZGCの適用を試みた背景から結果について共有したいと考えています。
Presentation Type: Standard
Level: Advanced
Categories: Others(バイトコードの話なのでJVMとしても良いが、どちらかと言えばコンパイラ寄り)
カンファレンス終了後にJJUG YouTubeチャンネルでセッション動画の公開を希望する / Agree to publish your session to JJUG YouTube channel after conference: Yes
Abstract:
Javaの進化が速くなった200X年、多くのJavaユーザはその恩恵に預かっていた。しかしバイトコードを扱うツールの開発者たちは、コロコロ変わるコンパイラの挙動に四苦八苦していた!
各種OSSのチケットから、変化の内容や開発コミュニティ間の議論をご紹介するセッション。JEPの裏話などお好きな方に。
Presentation Type [Choose either from Standard / BeginnerSpeaker / StepUp]: Standard
Level [Choose either from Beginner / Intermediate / Advanced]: Intermediate
Categories [Choose either from Java SE / Jakarta EE / Server-side / Cloud / JVM / DevOps / Tools / Others]: Server-side
カンファレンス終了後にJJUG YouTubeチャンネルでセッション動画の公開を希望する / Agree to publish your session to JJUG YouTube channel after conference [Yes or No]: Yes
Abstract:
Webアプリケーションにおいて、マルチテナント型、つまり複数のユーザー組織がアプリケーションとデータベースを共有する構成にすることがあります。この構成の持つリスクとして、万が一バグにより他テナントの情報が見えてしまうとそれは情報漏洩となり、重大なインシデントとなってしまうことがあります。この重要性を考えると、「気を付けて実装する」だけではなく、仕組みで漏洩を防ぐような対策には価値があります。
そこで、今回はPostgresSQLの行レベルセキュリティと、SpringAOPによる処理を組み合わせて、ログインしているテナントのデータにしかアクセスできなくする仕組みを実現しました。
導入にあたり考慮した複数の選択肢、乗り越えたいくつかの壁についてご紹介します。
同様の課題を抱えている方の参考にしていただけるような情報をお伝えしたいと思います。
Presentation Type [Choose either from Standard / BeginnerSpeaker / StepUp]: Standard
Level [Choose either from Beginner / Intermediate / Advanced]: Beginner
Categories [Choose either from Java SE / Jakarta EE / Server-side / Cloud / JVM / DevOps / Tools / Others]: Server-side
カンファレンス終了後にJJUG YouTubeチャンネルでセッション動画の公開を希望する / Agree to publish your session to JJUG YouTube channel after conference [Yes or No]: Yes
Fly like a rocket with Helidon
Good news, everyone! Helidon got a jet engine! Now Helidon is packed with modern, high-tech, James Bond-level features and it flies like a rocket! Also, thanks to a nicely crafted fitness plan, the weight has been reduced and concentration increased - resulting in less RAM consumption and faster waking. Come to my live coding session to learn about all of the new features added in Helidon 2.3.0 such as full GraalVM native image support (including DB drivers), MicroProfile Reactive Streams and Reactive Stream Operators, Helidon DB Client, HTTP Client in Helidon SE. I will also be demonstrating our GraphQL support and Micronaut integrations, as well as the command line tool and live-reloading feature which will nitro-boost your development process. And there will be some new announcements!
Abstract:
Presentation Type [Standard]:
Level [Intermediate]:
Categories [Tools]:
カンファレンス終了後にJJUG YouTubeチャンネルでセッション動画の公開を希望する / Agree to publish your session to JJUG YouTube channel after conference [Yes]:
Abstract:
本セッションでは、JUGナイトセミナーの LT 大会で発表させていただいた「検証では成功した Java のパッチが商用でコケた件」(https://speakerdeck.com/takaichi00/jugnaitosemina-jian-zheng-dehacheng-gong-sita-java-falsepatutigashang-yong-dekoketajian) で取り上げた、FullGC が発生するアプリケーションをより詳しく調査する流れを説明するセッションにしようと思います。
調査にあたっては、JFR, Memory Analyzer などのツールを用います。まず JFR を用いて FullGC, OOME が発生している原因を特定し、Memory Analyzer を用いて多角的な視点から更に詳細な原因を特定していく流れを想定しています。全体の大まかな流れは以下の GitHub でも公開しています。
https://github.com/Takaichi00/jfr-sample
これらのツールは普段の開発業務ではあまり使う機会がなかったのですが、Java のシステム運用や性能問題を解決する際、非常に役に立つと思いこのプロポーザルを提出しました。
セッションの対象者としては以下を想定しています。
・JFR などのツールは聞いたことがあるが使ったことがない、これから使ってみたいので概要を知りたいという方
・プログラミング言語としての Java だけではなく、JVM / GC / Heap / Stack / Thread などの技術にも触れてみたいという方
Presentation Type: Standard
Level: Beginner
Categories: Others
Agree to publish your session to JJUG YouTube channel after conference: Yes
Abstract
The first section will take around twenty minutes
The talk with start with some basic theoretical knowledge about SQL and ACID, NoSQL and BASE, a little bit of database history, where are we standing in 2021,
how the ORM impacted Java and how they look in Kotlin. There will be some mention to the future fibers and how that will impact the current work of synchronous drivers vs asynchronous db drivers. The goal in this part is to give the tools to chose the right tool (SQL or NoSQL) for the right problem. Also if the developer really need an ORM, and that case how to chose the right ORM (Hibernate, Expect, etc.)
The second section will take twenty minutes, leaving ten minutes for questions.
Tto show the audience the code with Kotlin syntax, the differences with Java, and the trade-offs of connecting to a database with Kotlin following different approaches:
All the code examples will be available on github.
The Java Module System lays the foundation for building modularized applications on the JVM. It doesn’t concern itself though with resolving module versions and obtaining modules from repositories.
This is where Layrry comes in: an API and launcher for modularized Java applications which takes a descriptor of the module layer(s) to assemble, fetches the modules and starts up the application.
Join us for this session and learn how to:
This session is code-centric! Be ready to see the Java Module System, Layrry, and Java in action!
Presentation Type: Standard
Level: Intermediate
Categories: Java SE
Agree to publish your session to JJUG YouTube channel after conference: Yes
Presentation Type [Choose either from Standard / BeginnerSpeaker / StepUp]: Standard
Level [Choose either from Beginner / Intermediate / Advanced]: Intermediate
Categories [Choose either from Java SE / Jakarta EE / Server-side / Cloud / JVM / DevOps / Tools / Others]: Java SE, Cloud, JVM
カンファレンス終了後にJJUG YouTubeチャンネルでセッション動画の公開を希望する / Agree to publish your session to JJUG YouTube channel after conference [Yes or No]: Yes
Abstract:
Have you heard about Quarkus ? for sure you have, a new super fast, super light framework to develop cloud native and GraalVM compatible apps. But, is that easy to go the Quarkus way ? is it hard to migrate an existing app ? For sure in a hello world demo this will look fantastic ( they all look that way don’t they ? ) but, in a real app, is that nice ? is that easy ? is that fun ? In this session I will show my experience from scratch migrating an app to Quarkus, using different technologies as Hibernate, Prometheus, Rest, … and also how you can check your current app and see how easy is to migrate using a foss app to analyse it.
Prepare for a journey of reality, failures, and experiences on the universe of Quarkus , at a ludicrous speed.