Develop with pleasure!

福岡でCloudとかBlockchainとか。

JSR299

JSR299の名称がWebBeansから「Java Contexts and Dependency Injection」と改名されたらしい。

In Relation To...  Revised Public Draft of JSR-299: Java Contexts and Dependency Injection

Public Review DraftのPDFファイルも名称が改名されてる。DraftによるとJSR299で実現されるのは、

  • The lifecycle and interactions of stateful components bound to well-defined lifecycle contexts, where the set of contexts is extensible
    (処理の)状態を保持したコンポーネントのライフサイクルと相互作用についての拡張。
  • A sophisticated, typesafe dependency injection mechanism, including a facility for choosing between various components that implement the same Java interface at deployment time
    タイプセーフなDIの仕組みの導入。(DIの仕組みとしては、GuiceのタイプセーフなDIモデルを採用したみたい。JavaEE標準のDependency InjectionのAPIの登場となるか。)
  • Integration with the Unified Expression Language (EL), allowing any component to be used directly within a JSF or JSP page
    JSFJSPにおけるEL(式言語)の導入。
  • An event notification model
    イベント通知の仕組み。
  • A web conversation context in addition to the three standard web contexts defined by the Java Servlets specification
    Servletの標準仕様に加えて、ConversationContextの追加。(ConversationContextはSeamが採用しているContextの状態管理の仕組みを導入したものかな。)

最初のは直訳すぎで分かりにくいが、要は従来のWebアプリケーションのアーキテクチャが、基本的にステートレスな仕組みでできており、データの保持は適切なスコープのコンテキスト(requestやsessionや)にオブジェクトをセットすることで実現している。こういった方法で組まれるWebアプリケーションは手続き型のコードになってしまいがち。
これに対して、ステートフル(状態を保持した)サービスを作成し、状態の開始〜終了や各スコープへのオブジェクトのセットや削除を制御できるようなプログラミングモデルを提供しようというものかな。

そのために、コンテキストの拡張やELやDIの導入及び、イベント通知による動作など仕様が盛り込まれているんじゃないかな。

まぁ、頭で考えているだけだとイメージ湧きにくいので実際にコードをおって行った方が良いかも。

JSFJPAなどのようにJavaEE仕様として策定されたは良いけど、あまり使われていない標準仕様にならないことを祈る。