Slide 1

Slide 1 text

クラウドネイティブ JAVAフレームワーク ”Quarkus” 概要 三浦 恒樹 (MIURA KOUKI) Health Information Manager - 診療情報管理士 Senior Medical Information Technician - 上級医療情報技師 Medical Imaging Information Specialist - 医用画像情報専門技師 ドゥウェル株式会社 2024.07.13 JavaDO Quarkus Overview - Cloud Native JAVA Toolkit - DOWELL Co., Ltd

Slide 2

Slide 2 text

長男が飼っている ハリネズミがアイコン INTRODUCE ・ドゥウェル株式会社 (医療系IT開発・導入会社)に所属 ・マネージャー(プレイングマネージャー) ・仕事では Java(Linux) or C#(WindowsServer) + JavaScript ・趣味では PHP + JavaScript ・3児の父 ・札幌PHP勉強会、JBUG札幌、JavaDO、ゆるWeb勉強会 に参加 DOWELL Co., Ltd Medical IT System Development My job is team management and I also do programming The PHP & JavaScript is my hobby programming. I have 3 sons Iʼm joining in these communities, - Sapporo PHP Study group - Japan Backlog User Group in Sapporo(Backlog is Japanese project management tool) - Java User Group in Hokkaido(JavaDO)  - Yuru-WEB(Easy-WEB) Study group I use My sonʼs hedgehog

Slide 3

Slide 3 text

コンテンツ ・Quarkusとは ・インストール ・実行 ・「開発者満足」 ・「コンテナ・ファースト」 About Quarkus Install Quarkus Run Quarkus Developer Joy Container First

Slide 4

Slide 4 text

Quarkusとは https://ja.quarkus.io/ About Quarkus Developer Joy Container First

Slide 5

Slide 5 text

インストール( Windows(WSL)) ・JBANGでQuarkusをインストール >> /home/(ユーザー名)/.jbang/bin/quarkus ・JBANG実行bashスクリプト(https://sh.jbang.dev) ・JBANGがインストールされていなければ jbang.tar取得・展開 ・JDKがインストールされていなければ JDK(latest)を取得 ・JavaでJBANGを実行する ・JBANGの処理 ①trustコマンド Manage which domains you trust to run scripts from. ②appコマンド Manage scripts installed on the user's PATH as commands. https://ja.quarkus.io/get-started/ curl -Ls https://sh.jbang.dev | bash -s - trust add https://repo1.maven.org/maven2/io/quarkus/quarkus-cli/ curl -Ls https://sh.jbang.dev | bash -s - app install --fresh --force quarkus@quarkusio Install Quarkus

Slide 6

Slide 6 text

実行 https://ja.quarkus.io/get-started/ Run Quarkus

Slide 7

Slide 7 text

開発者満足 https://ja.quarkus.io/developer-joy/ Developer Joy

Slide 8

Slide 8 text

開発者満足 - ライブコーディング Live Coding

Slide 9

Slide 9 text

開発者満足 - Dev UI - Extensions ・Extensions = 開発者向けの新しい動作 (依存関係)を追加する  ・フレームワーク設定、起動、 GraalVM設定等を行う  ・テンプレートプロジェクトでは6つが有効な状態   ・ArC - Build time CDI dependency Injection   ・REST - Vert.xレイヤーで動作するJakarta REST実装   ・Eclipse Vert.x - リアクティブアプリ構築ツールキット   ・Mutiny - リアクティブプログラミングライブラリ   ・SmallRye Context Propagation - リアクティブ/非同期のコンテキスト伝搬   ・JSON-P - JSON Processing Support  ・702Extensions(7/13時点)

Slide 10

Slide 10 text

開発者満足 - Dev UI - Configuration ・Configuration = 設定値の変更(統一された設定)

Slide 11

Slide 11 text

開発者満足 - Dev UI - Endpoints

Slide 12

Slide 12 text

開発者満足 - Dev UI - Continuous Testing

Slide 13

Slide 13 text

開発者満足 - Dev UI - Dev Services ・Dev Services = Extension向けの開発スタブをTestcontainersで生成する  ・例:JDBC Driver - PostgreSQLをインストール、接続情報未指定だと     PostgreSQLスタブのコンテナに自動接続してアプリが動作する

Slide 14

Slide 14 text

開発者満足 - Dev UI - Build Metrics

Slide 15

Slide 15 text

開発者満足 - Dev UI - Dependencies

Slide 16

Slide 16 text

コンテナファースト https://ja.quarkus.io/container-first/

Slide 17

Slide 17 text

コンテナファースト https://ja.quarkus.io/blog/runtime-performance/

Slide 18

Slide 18 text

SUMMARY ・クラウドでJavaを動かすために一から設計されたフレームワーク/ツール ・インストール・実行が超簡単! ・ライブコーディングが超早い! ・Dev UIが便利(っぽい) ← 引き続き要検証 ・Dev Servicesが魔法のよう! ・コンテナファーストで設計されている(起動時間・メモリ使用量) ご清聴ありがとうございました。

Slide 19

Slide 19 text

余談 JBANGとは ・セットアップなしで、すぐにJavaを学習・実行できる ・「.java ファイルを直接実行するJava 11 以降の   サポートは、少し面倒だと感じませんか?」(GitHub READMEより) https://www.jbang.dev/ // SOURCES Name.java void main() { System.out.println("Hello JBang!"); Name name = new Name(); System.out.println("Hello " + name.getName()); } Hello.java $ jbang --enable-preview Hello.java [jbang] Building jar for Hello.java… Note: /mnt/c/Files/java/quarkus/Hello.java uses preview features of Java SE 21. Note: Recompile with -Xlint:preview for details. Hello JBang! Hello Kouki Miura