JavaOne 2014 報告会「Java EE 関連のアップデート」上妻宜人氏
JavaOne 2014 報告会「Java EE 関連のアップデート」上妻宜人氏(JavaAPサーバサポート、SoftwareDesign2014/10記事)
- 次のJavaEE8のUpdateについて。
- SpecLead Linda DeMichielから、今後の方針について話があった。
- コミュニティアンケート結果から、JSON Binding(JavaとJSONの相互変換ができる機能)、既存で言うとJAX-B。JSONについても標準化してほしいとの要望、ログイン機能(フォーム認証)などのセキュリティ部分、JCache、SpringMVCのようなMVCなどの要望が出てきている。
- 3つのテーマ:HTML5/Web層拡張、簡単開発、クラウド上のインフラ。まだアイディア段階。
●Servlet4.0
- JSR369。HTTP/2対応。
- GoogleのSPDYプロトコル。バイナリフレームしてヘッダ圧縮して多重化。差分だけ送るように。スループットを稼ぐためTCPコネクションを貼っていたのを、HTTP/2からはヘッダの意味合いは維持したままで(GET、POST)多重化。
- Streamという考え方。一つのTCPコネクションで、論理的なStreamチャンネルをくっつけ、IDをつけ、データを相互通信する。ヘッダとデータは違うフレームに、とか階層構造。Streamはこれまでなかった概念。
- 各リクエストがどのStreamに依存しているかわからないので、getStreamId()。
- HTTP/2 サーバプッシュ。今は.htmlを見てから.cssとか見ていたが、htmlが来たらjs、png、cssもプッシュする。リクエストが来る前にプッシュ。(htmlがきたらcssも要求するでしょ?と。)従来は1リクエスト=1レスポンス。これでは対応できない。(public void doGet(Http...)
- JavaSE9でもHTTP/1.1、2を追加予定。
httpRequestGroup group = HttpRequestGroup.create();
HttpRequest res = group.createRequest()
.setrequestMethod("POST")
.setRequestURL(new URL("http....."))
.setRequestBody
,onResponseHeader....
●MVC
- アクションベースMVC。SpringMVC、JerseyMVC、Struts、VRaptor等。コミュニティアンケート結果で上位に上がってきた。今更いるか、との話もあったが。(JAX-RSに同じようなものが入っているとか。)最終的にMVCとした独立仕様で検討開始。
- テンプレートは対象外。(JSP、Faceletsがある。)既存の仕様との連携(CDI、Bean、Validation)
JavaOneでのBOF(非公式セッション)でのラフアイディアでは、<input…… value="#{roughExampleBean.value}"/>、
@Named("roughtExampleBean")
@RequestScoped
遷移先は、result is: #{roughExampleBean.vaue}
●JSF2.3
- CDIとの連携強化。@Inject FacesContext。ValidatorやConverter実装クラスに@Inject。(いままではできなかった。)
- @javax.faces.bean.ManagedBeanは@javax.inject.Namedと同じ扱いに。
●JAX-RS2.1
●JSON-B 1.0
JsonContext context = new JsonContext.newInstance();
Marchaller marchaller = context.createMarchaller()
.setProperty(Marchaller.Property)
.setPrettyPrinting(true);
……
マッピングアノテーション。プロパティ名を変えたい場合。@JsonProperty("LongDesc") @JsonEnum。
●JSON-P1.1 (JSON Processing)
- JavaEE7から入ったもの。JSON処理API。
- JsonObject customer = Json....
- JSON Patch:JSONデータの一部を置き換える仕組み。Rubyにパッチを受け取る仕組みあり。HTTPにPatchメソッドがある。PUTは対象メソッド全体を置き換える。POSTは新規作成に用途を絞る。PATCHで差分適用。
- JsonArray patch = Json.createArrayBuilder()
●CDI2.0
- 非同期イベント機能。NotifyAlerm。asyncronous=true。仕様のモジュール分割。(大きくなりすぎた。CDI Light(DIのみ)、Event、FullCDI。)コンテナ起動API標準化。
●JavaEEManagementAPI 2.0
- RestAPIによる監視、デプロイの標準化。JSR77。デプロイ。
●JavaEESecurity1.0
●その他
- EartyDraft:2015/1Q。
- GlassFish5。