のた犬のうまい猫めし

どら猫が作る、のた犬のための飯、略称、どら飯について語りつつ、各種技術、経済系セミナーに参加した報告、OSSいじってみた等のネタを入れていきます。更新情報はtwitterの@nota_inuにて。

JavaOne 2014 報告会「Java EE 関連のアップデート」上妻宜人氏

JavaOne 2014 報告会「Java EE 関連のアップデート」上妻宜人氏(JavaAPサーバサポート、SoftwareDesign2014/10記事)

 

  • 次のJavaEE8のUpdateについて。
  • SpecLead Linda DeMichielから、今後の方針について話があった。
  • コミュニティアンケート結果から、JSON Binding(JavaJSONの相互変換ができる機能)、既存で言うと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、pngcssもプッシュする。リクエストが来る前にプッシュ。(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

 

  • JavaOneではセッションがない。これから始まる感じ。スコープ整理中。CDIインターセプタによる認可制御。

 

●その他
  • EartyDraft:2015/1Q。
  • GlassFish5。