Upgrade to Pro — share decks privately, control downloads, hide ads and more …

JJUGナイトセミナー「Jakarta EEの始め方と新機能」講演資料

JJUGナイトセミナー「Jakarta EEの始め方と新機能」講演資料

2025年10月27日に開催されたJJUGナイトセミナー「Jakarta EEの始め方と新機能」で,田中の発表した「Getting started with Jakarta EE Today」および「Open Liberty の Starter」の資料になります。
https://jjug.doorkeeper.jp/events/190122

Avatar for Takakiyo Tanaka

Takakiyo Tanaka

October 27, 2025
Tweet

More Decks by Takakiyo Tanaka

Other Decks in Technology

Transcript

  1. 2 自己紹介 2 ◼ 田中 孝清 ◼ 日本アイ・ビー・エム株式会社 テクノロジー事業本部 Automation

    事業部 Application Developmentテクニカルセールス ◼ WebSphere Application Serverなどの テクニカルセールスを20年以上担当 ◼ https://www.linkedin.com/in/takakiyo/
  2. 5 Java EEのプログラムを書くのは,ちょっと大変でした 過去の多くの Java EEのアプリケーションサーバーでは, ◼ コードを作成して, ビルド(コンパイル)しただけでは, 作ったアプリを実行できませんでした

    ◼ アプリケーションサーバーを導入し 稼働するように構成をすませて, その環境にデプロイしてはじめて 作ったアプリを実行できる 5 コード作成 App Server導入 構成 ビルド デプロイ 実行 事前に導入構成が必要 ビルドしただけでは アプリを実行できない アプリをサーバーに デプロイして実行
  3. 6 2014年 Spring Boot リリース ◼ 組み込みサーバー (Embedded Server) –

    TomcatやJettyといったWebサーバーをライブラリとしてアプリケーション自体に内包 – アプリケーションサーバーを別途用意する必要がなくなり,java -jar myapp.jar というコマンド一つで起動 ◼ Spring Initializer – Spring Bootプロジェクトの「雛形」を自動生成してくれる公式のWebツール – 必要な情報を入力すると,Maven / Gradleのプロジェクトを自動生成・ダウンロード – プロジェクトをIDEでひらくだけで,簡単に開発が始められる 6 (SpringOne 2GX 2014) https://www.infoq.com/presentations/spring-boot-apps/
  4. 7 現在の Jakarta EE / MicroProfile ◼ Starter(Initializer)があります! – Jakarta

    EE Starter: https://start.jakarta.ee/ – MicroProfile Starter: https://start.microprofile.io/ ◼ Webで必要な情報を入力すると, Mavenのプロジェクトが生成・ダウンロード可能 ◼ IDEで開いてコードを作成すれば,ビルドするだけで, すぐに作ったプログラムが実行ができます – Maven Wrapper(mvnw)も入っているので, JDKさえあればコマンドラインからでもビルド可能です。 7
  5. 8 実行環境も自動構築 ◼ Maven / Gradleといったビルドツールは, コードが依存する外部ライブラリを セントラルレポジトリから,自動でダウンロードし, 追加・利用してくれます ◼

    最近の多くのJakarta EE / MicroProfile実行環境は, 導入に必要なイメージがセントラルレポジトリに おいてあります。 ◼ プロジェクトをビルドする過程で ダウンロード・展開され, (targetの下などに)環境が構築されます。 8 セントラルレポジトリにおかれたGlassFish
  6. 9 Starter(Initializer)の役割 ◼ Maven Archetypeの問題点 – Mavenプロジェクトの雛形作成は、かつては mvn archetype:generate というコマンドを利用

    • 対話式で色々なオプションを入力する必要がある • どのArchetypeを選べば良いか分かりにくい – 初心者向けではなかった... ◼ Starter = 雛形作成のGUI – この面倒な雛形作成(プロジェクトの初期設定)を, WebのGUIで簡単に行ってくれるのがStarter(Initializer)サイト ◼ Starter(Initializer)は, いまのエンタープライズJavaのスタンダードになっている 9
  7. 10 Jakarta EE Starter: https://start.jakarta.ee/ ◼ 利用するRuntime(WildFly/Payara/GlassFish/OpenLiberty/TomEE)を選択できる ◼ Jakarta EEのバージョン(8/9/9.1/10/11),プロファイル(Platform/Web/Core)

    Java SEのバージョン(8/11/17/21)を選択できる – 組み合わせられないものはグレーアウトされて選択できない ◼ Dockerサポートを追加できる ◼ MavenのプロジェクトのみでGradleのプロジェクトは生成できない 10 Jakarta EE 8 Jakarta EE 9.1 Jakarta EE 10 EE 11 Platform Web Platform Web Core Platform Web Core WildFly ✓ ✓ ✓ ✓ ✓ ✓ ✓ Payara ✓ ✓ ✓ ✓ ✓ GlassFish ✓ ✓ ✓ ✓ Open Liberty ✓ ✓ ✓ ✓ ✓ ✓ ✓ ✓ TomEE ✓ ✓ (2025年10月現在)
  8. 11 MicroProfile Starter: https://start.microprofile.io/ ◼ 利用するRuntimeを選択できる – WildFly / Wildfly

    Swarm / Open Liberty / Payara Micro / Quarkus /Apache TomEE / KumuluzEE / Thorntail / Helidon – 終了したプロジェクトもいくつかあるので注意 ◼ MicroProfileのバージョン (1.2/1.3/1.4/2.0/2.1/2.1/3.0/3.2/3.3/4.0/4.1/5.0)を選択 – 6.0 / 6.1 / 7.0 / 7.1が選択できなことから判るように, ちょっと最近メンテナンスされていない・・・ – MicroProfileのJakarta EEへの統合にむけた協議がおこなわれているためとか ◼ Maven / Gradleのプロジェクトが作成できる 11
  9. 12 簡単に始められる Jakarta EE プログラミング ◼ Jakarta EE / MicroProfile

    開発は Starter で簡単に始められます ◼ 面倒な環境構築は不要。ビルドするだけ。 – README.mdを読むといろいろと書いてあります ◼ ぜひ活用してください: – https://start.jakarta.ee/ – https://start.microprofile.io/ ◼ 今後のセッションで出てくる様々なテクノロジーも, ぜひStarterを使ってご自身の手で試してみてください! 12
  10. 14 Open LibertyのStarter: https://openliberty.io/start/ ◼ Java EE/Jakarta EE(7/8/9.1/10)と MicroProfile (1.4/2.2/3.3/4.1/5.0/6.0/6.1/7.0)の

    両方を選択できる – 「どちらかだけ」も選択できる – 一つのランタイムで両方を提供している強み ◼ Java SE(8/11/17/21)を選択 – Open Libertyは,2028年12月版まで Java 8での実行をサポートします – Java EE 7/8のAPI(javax名前空間)も 廃止の予定はありません ◼ MavenとGradleのプロジェクトを作成可能 14
  11. 16 DB接続の構成なども,構成ファイルを直接編集してできる ◼ pom.xmlの<dependencies>に, 利用するJDBC Driverを 依存関係として登録する ◼ 同じくpom.xmlのプラグイン構成に, <copyDpendencies>に上記の

    <groupId><artifactId>を記述すると targetの下のLibertyに ファイルがコピーされる 16 <plugin> <groupId>io.openliberty.tools</groupId> <artifactId>liberty-maven-plugin</artifactId> <version>3.7.1</version> <configuration> <copyDependencies> <dependencyGroup> <location>resources/db2</location> <dependency> <groupId>com.ibm.db2</groupId> <artifactId>jcc</artifactId> </dependency> </dependencyGroup> </copyDependencies> <dependencies> <dependency> <groupId>jakarta.platform</groupId> <artifactId>jakarta.jakartaee-api</artifactId> <version>8.0.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>com.ibm.db2</groupId> <artifactId>jcc</artifactId> <version>11.5.8.0</version> </dependency> </dependencies>
  12. 17 DB接続の構成なども,構成ファイルを直接編集してできる ◼ プロジェクトのsrc/main/liberty/configにあるLibertyの構成ファイルserver.xmlに, <library>でコピーしたJDBCを利用したライブラリを構成し, これを使って<dataSource>を定義する。 ◼ 接続パラメーターは<variable>で定義しておくと,本番環境等では環境変数で上書きできる。 17 <!--

    Db2 access settings --> <variable name="db2.servername" defaultValue="192.168.1.77" /> <variable name="db2.port" defaultValue="8200" /> <variable name="db2.database" defaultValue="LOCD3L1" /> <variable name="db2.user" defaultValue="CDCADM" /> <variable name="db2.password" defaultValue="{xor}Gx1tDQwUGRQ=" /> <library id="db2jdbc_jar"> <fileset dir="${server.config.dir}/resource/db2" includes="*.jar" /> </library> <dataSource jndiName="jdbc/db2DataSource" id="db2DataSource"> <jdbcDriver libraryRef="db2jdbc_jar" /> <containerAuthData user="${db2.user}" password="${db2.password}" /> <properties.db2.jcc databaseName="${db2.database}" serverName="${db2.servername}" portNumber="${db2.port}" connectionTimeout="15s"/> </dataSource>
  13. 18 Libertyは構成ファイルserver.xmlで利用するAPIを定義 ◼ Libertyは,Java EE/Jakarta EE/MicroProfileで提供されている各APIのなかから, 利用するものだけを構成することができる – 起動時間の短縮,使用メモリの削減,後述するパッケージのサイズ減少などメリットが大きいので, 実際に使用するプロジェクトでは,個別のAPIを指定するのがおすすめ

    ◼ 古いAPIも指定できる – たとえばJakarta EE 10のservlet-6.0等だけではなく, servlet-5.0(Jakarta EE 9.1) servlet-4.0(Java EE 8) servlet-3.1(Java EE 7)なども指定でき, 古い名前空間(javax)のAPIも継続して利用できる。 – 異なるJava EEバージョンのAPIを 組み合わせることはできない 18 <featureManager> <feature>servlet-6.0</feature> <feature>pages-3.1</feature> <feature>restfulWS-3.1</feature> <feature>cdi-4.0</feature> </featureManager> <featureManager> <feature>jakartaee-10.0</feature> </featureManager> server.xml スターターで作ったもの このようにカスタマイズすると 軽く,速くなる
  14. 19 環境を導入可能ZIPにパッケージできる ◼ Libertyは可搬性が高い(環境を他のサーバー,他のディレクトリ,他のOSにコピー可)ので target以下に構築された環境を,そのまま導入可能ZIP(Liberty+構成+アプリ)に パッケージすることが可能 ◼ StarterでつくったMavenプロジェクトで Libertyのプラグインを<extensions>として組み込む ◼

    パッケージをwarからliberty-assemblyに変える 19 ビルド パッケージ ZIP展開 実行 コード作成 <plugin> <groupId>io.openliberty.tools</groupId> <artifactId>liberty-maven-plugin</artifactId> <version>3.11.5</version> <extensions>ture</extensions> <configuration> <serverName>guideServer</serverName> <packaging>war</packaging> <packaging>liberty-assembly</packaging> mvn packageで ZIPが作成される 展開するだけで 動くLiberty環境が できあがる
  15. 20 Liberty Starterの特長:OSS版と製品版の両方に利用可能 ◼ デフォルトでは,OSS版のOpen Libertyの最新版がダウンロード・構築されるが, バージョンを指定したり,製品版のWebSphere Libertyをダウンロードすることもできる – ダウンロードされるWebSphere

    Libertyは開発者版(ILAN版) ◼ Open LibertyとWebSphere Libertyは,バージョンが完全に同期されている – 同じバージョン番号(年.0.0.月)が同じスケジュールで公開/新機能も,同時に提供 – Jakarta EE/MicroProfileなどの標準APIをはじめ,ほとんどの機能は共通(一部に製品版のみの機能も) – Open Libertyでテストした構成やアプリは,同じバージョンの製品版でそのまま実行可能 20 <plugins> <plugin> <groupId>io.openliberty.tools</groupId> <artifactId>liberty-maven-plugin</artifactId> <version>3.11.25/version> <configuration> <!-- Open Liberty v25.0.0.9に固定 --> <runtimeArtifact> <groupId>io.openliberty</groupId> <artifactId>openliberty-kernel</artifactId> <version>25.0.0.9</version> </runtimeArtifact> </configuration> </plugin> </plugins> <plugins> <plugin> <groupId>io.openliberty.tools</groupId> <artifactId>liberty-maven-plugin</artifactId> <version>3.11.5</version> <configuration> <!-- 製品版のWebSphere Libertyを使用 --> <runtimeArtifact> <groupId>com.ibm.websphere.appserver.runtime</groupId> <artifactId>wlp-kernel</artifactId> <version>25.0.0.9</version> </runtimeArtifact> </configuration> </plugin> </plugins>