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

2025/07/30 JakartaOne 2025 Japan その他のJakarta EE...

2025/07/30 JakartaOne 2025 Japan その他のJakarta EE 11のアップデート

2025/07/30 JakartaOne 2025 Japanで行ったJakarta EE 11のアップデートの説明です。(Jakarta Data, Jakarta Persistenceを除く)

https://jakartaone.org/2025/japan/

Avatar for Satoshi Seto

Satoshi Seto

August 04, 2025
Tweet

More Decks by Satoshi Seto

Other Decks in Technology

Transcript

  1. Jakarta EE 11での変更点の調べ方 (1) 5 Jakarta EE Communityのページに行 きJakarta EE

    11のページに概要が記載 https://jakarta.ee/specifications/plat form/11/ ※ただし網羅性は全くない
  2. Jakarta EE 11での変更点の調べ方 (2) 6 Jakarta EE Platform 11の仕様書にも変 更履歴が記載

    https://jakarta.ee/specifications/platf orm/11/jakarta-platform-spec-11.0#ch anges-in-jakarta-ee-11 ※ただし網羅性は全くない
  3. Jakarta EE 11の仕様 11 新規:1 更新:16 変更なし:13 削除: Jakarta SOAP

    with Attachments Jakarta XML Binding Jakarta XML Web Services Jakarta Managed Beans Jakarta Enterprise Beans 2.x API group Jakarta Enterprise Beans 3.2 and earlier entity beans and associated Jakarta Enterprise Beans QL https://jakarta.ee/release/11/
  4. Jakarta EE 11の変更サマリー 12 ▸ Jakarta Dataの追加、Jakarta Persistenceの更新(※前のセッションの内容) ▸ 仕様/機能の削除

    ・ JAX-WS (SOAP)、@ManagedBean、古いEJB仕様の一部など ▸ CDIへの機能増強(w/Concurrency) ・ EJBでしかできない事を無くす、使いやすさ向上 ▸ Java SEの変更への追従 ・ Java SEの最小バージョンが17に、Record、Virtual Thread対応、Security Managerの削除など ▸ その他の修正 ・ セキュリティエンハンスメント、Jakarta Facesの改善、HttpSessionの変更など のいくつかの機能増強や非互換 ※Jakarta EE 10とJakarta EE 11は完全な互換はないので注意
  5. 仕様の削除 - JAX-WS (SOAP)、@ManagedBean、古いEJB 仕様の一部など 13 Jakarta EE 10以前からOptionalな仕様がいくつか削除 ▸

    SOAP、XMLに関わる仕様が削除 ・ SOAP with Attachments、 XML Binding、 XML Web Services ▸ JSFで使われていた@ManagedBeanが削除 ▸ 古いEJB仕様の一部が削除 ・ Jakarta Enterprise Beans 2.x API group ・ Jakarta Enterprise Beans 3.2 and earlier entity beans and associated Jakarta Enterprise Beans QL ※製品によっては継続使用が可能な場合もあるので必要に応じてご確認ください。
  6. CDIへの機能増強 (w/Concurrency) 14 ▸ EJBの非推奨化に向けた実装 ・ @ScheduleのCDI対応(次のページ) ・ @Resourceの代わりに@Injectを使用できるようにする ・

    EJB以外からも使える@Lockアノテーション ▸ そのほかいくつかの機能増強 ・ Producerに@Priorityが付けられるように ・ Sealed Typeのサポート ・ その他
  7. CDIでのスケジュール実行 (@Scheduleの対応) 15 @Asynchronous(runAt = { @Schedule(daysOfWeek = { DayOfWeek.TUESDAY,

    DayOfWeek.THURSDAY }, hours = 8), @Schedule(daysOfweek = DayOfWeek.WEDNESDAY, hours = 10, minutes = 30) }) public CompletableFuture<String> attendLectureAndLab(String course) { ... if (endOfSemester) return Asynchronous.Result.complete(courseRecord);// stop schedule else {return null; // continue at next scheduled time}
  8. Java 16 Record対応 16 ▸ 各種仕様でRecordを使用できるように ▸ それに伴いJakarta Bean ValidationがJakarta

    Validationに名称変更 public record Order ( long id, @NotBlank String description, @NotEmpty List<OrderLine> orderLines, @NotNull Customer customer, @NotNull Address address){}
  9. Java 9 Flow(Reactive Streams)対応(Jakarta Concurrency) 18 ▸ Java 9のFlowクラスを使用可能に。 ※書いている人が説明できるほどReactive

    Streamsに詳しくないので詳細は対応 チケットをご確認ください。 https://github.com/jakartaee/concurrency/issues/257
  10. テスト用のインメモリ IDストアが作成できるように 20 @InMemoryIdentityStoreDefinitionをつけたCDI beanを作成 @InMemoryIdentityStoreDefinition({ @Credentials(callerName = "peter", password

    = "secret1", groups = { "foo", "bar" }), @Credentials(callerName = "john", password = "secret2", groups = { "foo", "kaz" }), @Credentials(callerName = "carla", password = "secret3", groups = { "foo" }) }) @ApplicationScoped //以下クラス定義
  11. Jakarta Servletの変更 21 ▸ Http PATCHメソッドのサポート(今更!) ▸ HttpSessionをHttpRequestのスコープ外で保持するのが明示的に禁止 ・ スコープ外で使う場合はHttpSession#Accessorを使用する必要がある

    ・ 一斉ログアウト等の要件で使われている場合があるので注意 @WebListener public class MySessionListener implements HttpSessionListener { public static List<Accessor> accessors = SyncronizedListの生成 public static List<HttpSession> sessions = SyncronizedListの生成 @Override public void sessionCreated(HttpSessionEvent se) { accessors.add(se.getSession().getAccessor()); //正しいやり方 sessions.add(se.getSession()); //今後Invalidになる }
  12. Jakarta Facesの改善(旧Jakarta Server Faces) 22 大きく機能が追加されました!ということはないもののいくつかの改善 ▸ ジェネリックパラメーターが抜け落ちていたAPIにジェネリックパラメーターが追加 ・ 例)FacesMessage#VALUES/VALUES_MAPにジェネリックパラメーターが追

    加(FacesMessage.Severityしか入らないのにObject型だった) ▸ 組み込みスコープにおけるイベント発火の仕組みをCDIに移譲 ・ @Initialized、@BeforeDestroyed、@Destroyed ▸ Flowが@Injectの対象に ▸ タグやUI部品への属性の追加 ・ <f:viewAction>にif属性が追加、UIRepeatにrowStatePreserved属性が追加 ▸ その他・・・
  13. 参考資料 25 ▸ Jakarta EE 11 プラットフォーム仕様およびに各種仕様ドキュメント https://jakarta.ee/specifications/platform/11/ https://jakarta.ee/specifications/ ▸

    The Evolution of Enterprise Java with Jakarta EE 11 and Beyond https://speakerdeck.com/ivargrimstad/the-evolution-of-enterprise-java- with-jakarta-ee-11-and-beyond-e0233173-618b-4e6e-b641-d27195229c 58 ▸ Jakarta EE 11 and Beyond https://docs.google.com/presentation/d/18V6XUphuFfCYaeNddNua3dlb rHU2f9La/edit
  14. linkedin.com/company/red-hat youtube.com/user/RedHatVideos facebook.com/redhatinc twitter.com/RedHat 26 Red Hat is the world’s

    leading provider of enterprise open source software solutions. Award-winning support, training, and consulting services make Red Hat a trusted adviser to the Fortune 500. Thank you