JJUG CCC 2021 Spring トーク一覧

採択 Advanced Others Standard 2021/05/23 15:00〜 Track A 50 min

Java8〜16におけるバイトコード生成の変化

Kengo_toda Kengo TODA Kengo_toda

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の裏話などお好きな方に。

4
採択 Intermediate Serverside Standard 2021/05/23 15:00〜 Track B 50 min

PostgreSQLの行レベルセキュリティとSpringAOPでマルチテナントのユーザー間情報漏洩を防止する

little_hand_s 松岡(@little_hand_s) little_hand_s

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による処理を組み合わせて、ログインしているテナントのデータにしかアクセスできなくする仕組みを実現しました。
導入にあたり考慮した複数の選択肢、乗り越えたいくつかの壁についてご紹介します。
同様の課題を抱えている方の参考にしていただけるような情報をお伝えしたいと思います。

7
採択 Beginner Serverside Standard 2021/05/23 15:00〜 Track C 50 min

Fly like a rocket with Helidon

bercut2000 Aleksandrov Dmitry bercut2000

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:

2
採択 Intermediate Tools Standard 2021/05/23 15:00〜 Track D 50 min

JFR などのツールを用いて FullGC や OOME の原因を特定する流れ

takaichi00 髙市 智章 takaichi00

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 などの技術にも触れてみたいという方

5
採択 Intermediate JVM 2021/05/23 16:00〜 Track A スポンサーセッション(※スポンサー用)

AOT or JIT: Faster Startup, Faster Code, or Faster Both?

speakjava Simon Ritter speakjava

Presentation Type [Choose either from Standard / BeginnerSpeaker / StepUp]: Standard
Level [Choose either from Beginner / Intermediate / Advanced]: Intermediate
Categories [Choose at least one from Java SE / Jakarta EE / Server-side / Cloud / JVM / DevOps / Tools / Others]: JVM
カンファレンス終了後にJJUG YouTubeチャンネルでセッション動画の公開を希望する / Agree to publish your session to JJUG YouTube channel after conference [Yes or No]: Yes

Abstract:
Microservice architectures have become prevalent for developing applications. Transforming monolithic applications to multiple container-based services has many advantages, in particular cost savings from optimal cloud utilization facilitated by dynamic scalability, and the spinning up and shutting down of service instances in response to changing demand.

Running JVM applications in a managed environment with Just-In-Time (JIT) compilation provides challenges, such as service warm up. In response, environments such as GraalVM and Quarkus have developed an Ahead-Of-Time (AOT) approach for faster warm up, but that does not mean optimum performance.

In this webinar we will navigate the pros and cons of both approaches to explore tradeoffs between initial performance and overall performance, and you will learn how you can better architect your Java microservice design.

1
採択 Beginner Others 2021/05/23 16:00〜 Track B スポンサーセッション(※スポンサー用)

モダンな技術をエンタープライズ開発の現場にインストールした話

tagry0 田口 亮太郎 tagry0

Presentation Type: BeginnerSpeaker
Level: Beginner
Categories: Others
カンファレンス終了後にJJUG YouTubeチャンネルでセッション動画の公開を希望する: Yes

Abstract:
エンタープライズ開発は「技術が古い」「挑戦しない」などのネガティブに誤解されているところがあります。
一方で、モダンな技術を「インストール」して、エンタープライズをもっと良くしようという取り組みをしている現場もあるかと思います。
本セッションでは、弊社のエンタープライズ開発のプロジェクト現場で実施した取り組みをご紹介します。
具体的には DDD、CQS、CI/CDについての取り組み内容と、実践から得られた学びをご紹介します。

8
採択 Beginner Others 2021/05/23 16:00〜 Track C スポンサーセッション(※スポンサー用)

お名前.comにおける長続きさせるバックエンド側の開発・保守について

taka_kobayashi 小林 隆晴 taka_kobayashi

Presentation Type [Choose either from Standard / BeginnerSpeaker / StepUp]: BeginnerSpeaker
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]: Others
カンファレンス終了後にJJUG YouTubeチャンネルでセッション動画の公開を希望する / Agree to publish your session to JJUG YouTube channel after conference [Yes or No]: No

Abstract:
国内最大級のドメイン公式登録サービス「お名前.com」は、20年以上続いています。
ドメインの登録実績は2,500万件を超え、ドメインを便利に使うための機能も多く兼ね備えた大規模なシステムです。
業務は多岐にわたり、ソースコードは20年前のものも多く残っており、全てを把握している人はおらず
特定の機能については、誰も知らないこともあったりするレガシーあるあるのシステムです。
そのレガシーな大規模システムに、日々、どう向き合って、開発・保守を行い
サービスを改善させているかをご紹介いたします。

4
採択 Beginner Others Standard 2021/05/23 16:00〜 Track D 50 min

Kotlin for Databases

hiqinternat Victor Durán hiqinternat

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:

  • Server (Postgres or MySQL)
  • Embedded (SQLite)
  • Asynchronous drivers (r2dbc and reactive)
  • Kotlin Frameworks (Expect ORM and Xodus DB)

All the code examples will be available on github.

1
採択 Intermediate Java SE Standard 2021/05/23 17:00〜 Track A 50 min

Plug-in Architectures with the Java Module System

aalmiray Andres Almiray aalmiray

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:

  • Build Java applications using layers, e.g. providing isolation between different versions of one module.
  • Use jbang to launch your layered apps in no time.
  • Create plug-in based rich-client applications using Java and Layrry, allowing to – dynamically reconfigure and update your layer hierarchy, no restarts required.
  • Create your own customized Layrry launcher if needed

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

1
採択 Intermediate Java SE Cloud JVM Standard 2021/05/23 17:00〜 Track B 50 min

Migrate Spring Boot app to Quarkus. Stage unlocked

vilojona Jonathan Vila vilojona

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.

1
採択 Intermediate Serverside Cloud Others 2021/05/23 17:00〜 Track C 50 min

Framewars: the battle between NoSQL and Java in the cloud a

Otavio Santana

Title: Framewars: the battle between NoSQL and Java in the cloud arena.

Presentation Type [Choose either from Standard / BeginnerSpeaker / StepUp]: Standard
Level [Choose either from Beginner / Intermediate / Advanced]:
Categories [Choose either from Java SE / Jakarta EE / Server-side / Cloud / JVM / DevOps / Tools / Others]:
カンファレンス終了後にJJUG YouTubeチャンネルでセッション動画の公開を希望する / Agree to publish your session to JJUG YouTube channel after conference [Yes or No]:

Abstract:
This lecture's objective is to make comparisons between points and weaknesses of Java frameworks that integrate with databases. On the one hand, the NoSQL MongoDB, Redis, Neo4J, and Cassandra, and on the other, the Java frameworks that integrate with them: Spring, Quarkus, Jakarta EE, Micronaut. The arena: the cloud!
In this ring, the one who best analyzes each tool's trade-offs wins, participates, and is the judge of this epic battle.

採択 Intermediate Others Standard 2021/05/23 17:00〜 Track D 50 min

How Should Java Developers Build Front-Ends Today?

karsilz Karsten Silz karsilz

Title: How Should Java Developers Build Front-Ends for Web, Mobile, and Desktop Today?

Presentation Type: Standard
Level: Intermediate
Categories: Others
Agree to publish your session to JJUG YouTube channel after conference: Yes

Abstract:

Users access applications on PCs and mobile devices today. There are two obvious ways to build front-ends for these devices: Web applications and native applications. Cross-platform UI toolkits combine advantages from both approaches. Examples are Google’s Flutter, JavaFX, Facebook’s React Native, and Microsoft's Xamarin. Important web application frameworks are Google's Angular, JSF, Facebook's React, Thymeleaf, Vaadin, and Vue.js. I will look at all these toolkits from the perspective of a Java developer and suggest which one to use in three common scenarios.

In 2019, I developed a mobile app prototype with Flutter (https://youtu.be/dxqA6RhEwdQ) and a progressive web application prototype (https://youtu.be/Nx9vPgdeYQQ). I then decided to use Flutter for native mobile apps in my SaaS start-up (https://yourhomeingoodhands.co.uk). Based on my experiences, I will highlight typical Flutter issues and how to solve them.

I gave an earlier version of this talk to the LJC (https://bpf.li/dot) and to the CinJUG (no video: https://bpf.li/pat) before. I'll give this talk in German at JavaLand 2021 (https://bpf.li/jaw) and IT-Tage 365 2021 (https://bpf.li/sit).

3