Movatterモバイル変換


[0]ホーム

URL:


Hiroyuki Ohnaka, profile picture
Uploaded byHiroyuki Ohnaka
7,339 views

JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」

2015/11/14JavaOne 2015 報告会 @ 東京

Embed presentation

Downloaded 24 times
About MVC 1.0 & JSON-P2015/11/14JavaOne 2015 報告会 @ 東京グロースエクスパートナーズ(株)大中 浩行Copyright© 2015 Growth xPartners, Inc. All rights reserved.Copyright© 2015 Growth xPartners, Inc. All rights reserved..
今日のお題 MVC 1.0 JSON-P 1.1 (ちょこっと)JSON-B1Copyright© 2015 Growth xPartners, Inc. All rights reserved.
MVC1.0Copyright© 2015 Growth xPartners, Inc. All rights reserved. 22015/1/1
MVC 1.0 actionベースのMVCフレームワーク JSR371• 現在のステータスはEarly Draft Release 2(EDR)リファレンス実装はozark• https://ozark.java.net/ JJUGもAdopt a JSRを通じて参加3Copyright© 2015 Growth xPartners, Inc. All rights reserved.
なぜJSFでなくMVCなのか JSFはcomponentベース MVC 1.0 は actionベース4Copyright© 2015 Growth xPartners, Inc. All rights reserved.
なぜactionベースなのか 見通しのよさ、簡便さ RESTとの親和性5Copyright© 2015 Growth xPartners, Inc. All rights reserved.
フロントエンドの流行廃りの激しさ WONTA (Write Once, Never Touch Again)※どうせそのうち書き直すのだから保守性は考慮にいれない、の意 定着した技術としてのサーバーサイドMVCへのニーズ6Copyright© 2015 Growth xPartners, Inc. All rights reserved.
Controller MVCのControllerはJAX-RSのresourceとして実装 ただし、semanticsには若干差異がある7Copyright© 2015 Growth xPartners, Inc. All rights reserved.
Controller8Copyright© 2015 Growth xPartners, Inc. All rights reserved.@Path("hello")public class HelloController {@Injectprivate Greeting greeting;@GET@Controllerpublic String hello() {greeting.setMessage("Hello there!");return "hello.jsp";}}
Controllerのバリエーション9Copyright© 2015 Growth xPartners, Inc. All rights reserved.@GET @Path("void") @View("hello.jsp")public void helloVoid(){}@GET @Path("viewable")public Viewable helloViewable(){return new Viewable("hello.jsp");}@GET @Path("response")public Response helloResponse(){returnResponse.status(Response.Status.OK).entity("hello.jsp").build();}@GET @Path("myview")public MyView helloMyView(){//toString returns "hello.jsp"return new MyView("hello.jsp");}
Validation Bean Validation(JSR349)ベース Validationエラーの扱いについて• 以下の2択 ExceptionMapper<ConstraintViolationException>を実装して共通的に処理する BindingResultをInjectionして、Controllerのメソッド内部で処理する ハンドリングの仕様がprimitiveな印象10Copyright© 2015 Growth xPartners, Inc. All rights reserved.
ExceptionMapperによるハンドリング11Copyright© 2015 Growth xPartners, Inc. All rights reserved.public class FormViolationMapperimplements ExceptionMapper<ConstraintViolationException> {public Response toResponse(ConstraintViolationException e) {Set<ConstraintViolation<?>> set = e.getConstraintViolations();if (!set.isEmpty()) {// fill out ErrorDataBean}return Response.status(Response.Status.BAD_REQUEST).entity("error.jsp").build();}}
Controllerによるハンドリング12Copyright© 2015 Growth xPartners, Inc. All rights reserved.@Path("form")@Controllerpublic class FormController {@Injectprivate BindingResult br;@POST@ValidateOnExecution(type = ExecutableType.NONE)public Response formPost(@Valid @BeanParam FormDataBean f) {if (br.isFailed()) {return Response.status(Response.Status.BAD_REQUEST).entity("error.jsp").build();}return Response.status(Response.Status.OK).entity("data.jsp").build();}}
View 仕様としてサポートを要求するのはJSPとFacelet 他は全てextension Ozarkには以下のextensionがcontribute済み Asciidoc, Freemarker, Handlebars, Jade, JSR 223 (JavaScript) Mustache, StringTemplate, Thymeleaf, Velocity13Copyright© 2015 Growth xPartners, Inc. All rights reserved.
BYOVE Bring Your Own View Engine BYODKM(Bring Your Own Display, Keyboard and Mouse)のもじり MVC1.0としてはViewのあり方については規定しない14Copyright© 2015 Growth xPartners, Inc. All rights reserved.
 Viewのデフォルトのパスは”/WEB-INF/views”以下 変更した場合はjavax.mvc.engine.ViewEngine.viewFolder プロパティを使ってオーバーライド15Copyright© 2015 Growth xPartners, Inc. All rights reserved.
スコープ Controllerのデフォルトスコープはrequest CDIのスコープを使用可能 application/session/request/conversation MVCで @RedirectScoped を定義 PRG(POST-Redirect-GET)パターンをサポート16Copyright© 2015 Growth xPartners, Inc. All rights reserved.
@RedirectScoped17Copyright© 2015 Growth xPartners, Inc. All rights reserved.@Named("bean")@RedirectScopedpublic class Greeting {private String message;public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}}
イベント Observerパターン モニタリング/デバッグ/チューニング用途 BeforeControllerEvent / AfterControllerEventBeforeProcessViewEvent / AfterProcessViewEventControllerRedirectEvent 追加の可能性あり18Copyright© 2015 Growth xPartners, Inc. All rights reserved.
19Copyright© 2015 Growth xPartners, Inc. All rights reserved.@ApplicationScopedpublic class EventObserver{public void onBeforeController(@Observes BeforeControllerEvent e){System.out.println("URI:“+ e.getUriInfo().getRequestURI());}public void onAfterController(@Observes AfterControllerEvent e){System.out.println("Controller:"+ e.getResourceInfo().getResourceMethod());}}
感想 「フレームワーク」ではなく「API」 All in one フレームワークとは一線を画している 「ポストStruts」ではない とはいえ、Validationとそれに関係する画面遷移の周りをもうちょっと作り込まないと実用にはつらい!20Copyright© 2015 Growth xPartners, Inc. All rights reserved.
JSON-P 1.1Copyright© 2015 Growth xPartners, Inc. All rights reserved. 212015/1/1
JSON-P 1.0 Java API for JSON Processing JSR353 リファレンス実装はjava.net• https://java.net/projects/jsonp JavaEE7で採用22Copyright© 2015 Growth xPartners, Inc. All rights reserved.
JSON-P 1.1 JSON-P 1.0(RFC4627)をRFC7159でアップデート JSR374 現在のステータスはEarly Draft Review23Copyright© 2015 Growth xPartners, Inc. All rights reserved.
RFC7159 全ての値がトップレベルに可能に つまり、以下がvalidになる24Copyright© 2015 Growth xPartners, Inc. All rights reserved.
追加されたAPI Json public static JsonString createValue(String value) public static JsonNumber createValue(int value) imilarly for long, double, BigInteger, and BigDecimal JsonReader default JsonValue readValue() JsonWriter default void write(JsonValue value)25Copyright© 2015 Growth xPartners, Inc. All rights reserved.
JsonArray and JsonObject Transformations ビルダーパターンを用いたJsonオブジェクトの変換26Copyright© 2015 Growth xPartners, Inc. All rights reserved.JsonArray value = Json.createArrayBuilder().add(Json.createObjectBuilder().add("type", "home").add("number", "212 555-1234")).build();JsonArray result = Json.createArrayBuilder(value).add(Json.createObjectBuilder().add("type", "fax").add("number", "646 555-4567")).build();
JSON-Pointer RFC6901 JSONの特定値を差すための文字列syntax27Copyright© 2015 Growth xPartners, Inc. All rights reserved.JsonStructure commit = reader.read();JsonPointer p = new JsonPointer("/employee/name");JsonStructure result = p.replace(commit,Json.createValue("Hiroyuki Onaka"))
ポインターによるJSON操作API add(JsonStructure, JsonValue) replace(JsonStructure, JsonValue) remove(JsonStructure)28Copyright© 2015 Growth xPartners, Inc. All rights reserved.
JSON-PATCH JSON更新処理の標準化 RFC690229Copyright© 2015 Growth xPartners, Inc. All rights reserved.JsonStructure commit = reader.read();JsonPatchBuilder builder = new JsonPatchBuilder();JsonStructure result =builder.add("/John/phones/office", "1234-567").remove("/Amy/age").apply(commit);
JSON-PATCHによるJSON間の差分取得 JsonArray diff =JsonPatch.diff(commit1,commit2)30Copyright© 2015 Growth xPartners, Inc. All rights reserved.
JSON-MERGE PATCH RFC7386 JSON間のマージ処理 nullの値をマージするとキーの削除になる application/json-patch+json31Copyright© 2015 Growth xPartners, Inc. All rights reserved.JsonObject removeEntry = Json.createObjectBuilder().add("hiroyuki@fieldnotes.jp", JsonValue.NULL).build();JsonValue newCommit =JsonMergePatch.mergePatch(reader.read(), removeEntry)
JSON-MERGE PATCHによるパッチ リバースパッチが可能32Copyright© 2015 Growth xPartners, Inc. All rights reserved.
JSON Queries with java.util.stream.Stream JsonObject/JsonArrayをMap/Listとしてstream+LambdaでOperation可能に javax.json.stream.JsonCollectors #groupingBy / #toJsonArray / #toJsonObject33Copyright© 2015 Growth xPartners, Inc. All rights reserved.
JSON PROCESSING IN PARSING streamモデルによる大容量Jsonデータの処理 javax.json.stream.JsonParserにAPI追加 getArray / getObject / getArrayStream / getObjectStream34Copyright© 2015 Growth xPartners, Inc. All rights reserved.
JSON-P JSONに対する低レベル操作API JSONとJavaオブジェクト(JavaBean)へのマッピング機能は持っていない35Copyright© 2015 Growth xPartners, Inc. All rights reserved.
JSON-B Java API for JSON Binding JSR367• 現在のスタータスはEarly Draft 2 リファレンス実装はeclipselink MOXy(開発中)36Copyright© 2015 Growth xPartners, Inc. All rights reserved.
37Copyright© 2015 Growth xPartners, Inc. All rights reserved.protected void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {Jsonb jsonb = JsonbBuilder.create();ServletOutputStream out = response.getOutputStream();out.print(jsonb.toJson(new JsonPlans()));out.flush();}デモ: https://github.com/m0mus/jason_plans
 JSON-P 1.1はフレームワーク/ライブラリー開発者には垂涎の機能だがそれ以外の開発者には…? JSON-Bなら使い出はありそうだが如何せん標準化に時間がかかりすぎる!38Copyright© 2015 Growth xPartners, Inc. All rights reserved.
おまけCopyright© 2015 Growth xPartners, Inc. All rights reserved. 392015/1/1
JavaOne中にちょくちょくあったこと 「それ日本の(ブログ|勉強会)で聞いたやつだ!」 「そのネタだったら俺に喋らせろ!」40Copyright© 2015 Growth xPartners, Inc. All rights reserved.
世界はそんなに遠くない あれだけの数技術にとがったセッションを集めることのできるパイの大きさというのは、超えられない壁ですが… software developmentのレベルでは海外(主に米国)と日本は大差はなかったと思う。41Copyright© 2015 Growth xPartners, Inc. All rights reserved.
References MVC: Model-View-Controller API Version 1.0 Early Draft (SecondEdition) http://download.oracle.com/otndocs/jcp/mvc-1-edr2-spec/index.html JSR-000374 Java API for JSON Processing 1.1 Early Draft ReviewJavadoc http://download.oracle.com/otndocs/jcp/json_p-1_1-edr-spec/index.html JavaOne 2015 セッション資料 Introduction to MVC 1.0 (JSR 371) [CON4176] What’s New in the Java API for JSON Processing? [CON3561] What’s New in Java API for JSON Binding (JSR 367) [CON6155]42Copyright© 2015 Growth xPartners, Inc. All rights reserved.
Thank you! 大中浩行(Onaka,Hiroyuki) グロースエクスパートナーズ(株)テクニカルリード http://blog.fieldnotes.jp/ @setoazusa43Copyright© 2015 Growth xPartners, Inc. All rights reserved.

Recommended

PPTX
JavaOne2015報告会 Java EE アップデート #j1jp
PPTX
Java EE8 Report
PPTX
Java EE パフォーマンスTips #glassfish_jp
PDF
JavaOne 2015 JDK Update (Jigsaw) #j1jp
PDF
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
PDF
Lt agetsuma 拡大するcdi
PPTX
Jsf アプリ作ったった
PDF
WildFly Swarmではじめる「パーツとしてのJavaEE」
PDF
Advanced database monitoring in modern java
PDF
WildFly Swarm - Rightsize Your Java EE Apps
PDF
Javaアプリケーションサーバ 構築・運用の勘所
PPTX
はじめてのJPA
 
PDF
Nashorn in the future (Japanese)
 
PDF
20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側
PDF
Java Batch 仕様 (Public Review時点)
PDF
MVC 1.0 JSR-371を通してAdopt a JSRに知ろう #jjug_ccc #ccc_r57
PDF
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
PPTX
Seasar2で作った俺たちのサービスの今
PDF
Webアプリに低レイテンシ・高可用性を求めるのは間違っているのだろうか
PPT
Java9新機能概要
PDF
10のJava9で変わるJava8の嫌なとこ!
PDF
Java EE 再入門
PDF
Java SE 再入門
PDF
Prepare for Java 9 #jjug
PDF
次世代Webコンテナ Undertowについて
PDF
これからのNashorn
 
PPTX
JSON-B for CZJUG
PDF
いまさら聞けないJSONPのまとめ
PDF
Himotoki: A type-safe JSON decoding library #関モバ
PDF
2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」

More Related Content

PPTX
JavaOne2015報告会 Java EE アップデート #j1jp
PPTX
Java EE8 Report
PPTX
Java EE パフォーマンスTips #glassfish_jp
PDF
JavaOne 2015 JDK Update (Jigsaw) #j1jp
PDF
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
PDF
Lt agetsuma 拡大するcdi
PPTX
Jsf アプリ作ったった
PDF
WildFly Swarmではじめる「パーツとしてのJavaEE」
JavaOne2015報告会 Java EE アップデート #j1jp
Java EE8 Report
Java EE パフォーマンスTips #glassfish_jp
JavaOne 2015 JDK Update (Jigsaw) #j1jp
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
Lt agetsuma 拡大するcdi
Jsf アプリ作ったった
WildFly Swarmではじめる「パーツとしてのJavaEE」

What's hot

PDF
Advanced database monitoring in modern java
PDF
WildFly Swarm - Rightsize Your Java EE Apps
PDF
Javaアプリケーションサーバ 構築・運用の勘所
PPTX
はじめてのJPA
 
PDF
Nashorn in the future (Japanese)
 
PDF
20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側
PDF
Java Batch 仕様 (Public Review時点)
PDF
MVC 1.0 JSR-371を通してAdopt a JSRに知ろう #jjug_ccc #ccc_r57
PDF
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
PPTX
Seasar2で作った俺たちのサービスの今
PDF
Webアプリに低レイテンシ・高可用性を求めるのは間違っているのだろうか
PPT
Java9新機能概要
PDF
10のJava9で変わるJava8の嫌なとこ!
PDF
Java EE 再入門
PDF
Java SE 再入門
PDF
Prepare for Java 9 #jjug
PDF
次世代Webコンテナ Undertowについて
PDF
これからのNashorn
 
Advanced database monitoring in modern java
WildFly Swarm - Rightsize Your Java EE Apps
Javaアプリケーションサーバ 構築・運用の勘所
はじめてのJPA
 
Nashorn in the future (Japanese)
 
20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側
Java Batch 仕様 (Public Review時点)
MVC 1.0 JSR-371を通してAdopt a JSRに知ろう #jjug_ccc #ccc_r57
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
Seasar2で作った俺たちのサービスの今
Webアプリに低レイテンシ・高可用性を求めるのは間違っているのだろうか
Java9新機能概要
10のJava9で変わるJava8の嫌なとこ!
Java EE 再入門
Java SE 再入門
Prepare for Java 9 #jjug
次世代Webコンテナ Undertowについて
これからのNashorn
 

Viewers also liked

PPTX
JSON-B for CZJUG
PDF
いまさら聞けないJSONPのまとめ
PDF
Himotoki: A type-safe JSON decoding library #関モバ
PDF
2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」
PDF
ObjectMapperでJSONマッピング
PPTX
JSON Support in Java EE 8
PDF
Java one 2015 [con3339]
PPTX
Adopt-a-JSR session (JSON-B/P)
PDF
JavaOne感想&技術トレンド紹介 - JavaOne2015報告会
PDF
Javaのプログラムはどうやって動いているの? GC編
PDF
JSONBはPostgreSQL9.5でいかに改善されたのか
PDF
「TDDはじめて物語」 #tddbc
PDF
実録Blue-Green Deployment導入記
PDF
Java EE 8 - February 2017 update
PDF
JavaOne 2014 BOF4241 What's Next for JSF?
PDF
What's next for Java API for WebSocket (JSR 356)
PPTX
תוצאות שאלון עמדות מנהלי שיווק מצייצים - אירוע קורנפלקס תלמה/יוניליוור
PPT
El preescolar desde adentro
DOC
Sven Mary trekt financiële situatie kantoor bijna recht
PDF
Internet Marketing Trends 2007
JSON-B for CZJUG
いまさら聞けないJSONPのまとめ
Himotoki: A type-safe JSON decoding library #関モバ
2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」
ObjectMapperでJSONマッピング
JSON Support in Java EE 8
Java one 2015 [con3339]
Adopt-a-JSR session (JSON-B/P)
JavaOne感想&技術トレンド紹介 - JavaOne2015報告会
Javaのプログラムはどうやって動いているの? GC編
JSONBはPostgreSQL9.5でいかに改善されたのか
「TDDはじめて物語」 #tddbc
実録Blue-Green Deployment導入記
Java EE 8 - February 2017 update
JavaOne 2014 BOF4241 What's Next for JSF?
What's next for Java API for WebSocket (JSR 356)
תוצאות שאלון עמדות מנהלי שיווק מצייצים - אירוע קורנפלקס תלמה/יוניליוור
El preescolar desde adentro
Sven Mary trekt financiële situatie kantoor bijna recht
Internet Marketing Trends 2007

Similar to JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」

PPT
Spring mvc
PDF
Javaで1から10まで書いた話(sanitized)
PDF
Introduction for Browser Side MVC
PDF
SpringOne 2GX 2014 参加報告 & Spring 4.1について #jsug
PDF
【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー
PDF
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
PDF
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
PPTX
Spring I/O 2015 報告
PPTX
今こそ知りたいSpring Web(Spring Fest 2020講演資料)
PPTX
Clojureの世界と実際のWeb開発
PDF
JavaOne2015報告またはこれからのJava
PDF
RESTful開発フロントエンド編(SPA・AltJS・フレームワーク)
PDF
GUI アプリケーションにおける MVC
KEY
関ジャバ JavaOne Tokyo 2012報告会
PDF
Using Ext Direct with SenchaTouch2
PDF
ADRという考えを取り入れてみて
PDF
JSer Class #3
PDF
BPStudy20121221
PDF
Spring Framework ふりかえりと4.3新機能
PDF
あの日見たMVCを僕たちはまだ知らない for RoR
Spring mvc
Javaで1から10まで書いた話(sanitized)
Introduction for Browser Side MVC
SpringOne 2GX 2014 参加報告 & Spring 4.1について #jsug
【Spring fest 2019】徹底解剖Spring MVCアーキテクチャー
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
Spring I/O 2015 報告
今こそ知りたいSpring Web(Spring Fest 2020講演資料)
Clojureの世界と実際のWeb開発
JavaOne2015報告またはこれからのJava
RESTful開発フロントエンド編(SPA・AltJS・フレームワーク)
GUI アプリケーションにおける MVC
関ジャバ JavaOne Tokyo 2012報告会
Using Ext Direct with SenchaTouch2
ADRという考えを取り入れてみて
JSer Class #3
BPStudy20121221
Spring Framework ふりかえりと4.3新機能
あの日見たMVCを僕たちはまだ知らない for RoR

More from Hiroyuki Ohnaka

PDF
remote Docker over SSHが熱い
PDF
VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験
PDF
Remote Development with Visual Studio Code & A clean dev env, working every ...
PDF
ChefとItamaeをニコイチしてAnsibleにマイグレーションした話
PDF
「WindowsデスクトップでWeb開発 改訂版」サンプル
PDF
Mackerelの薄い本
PDF
Microsoft DocsにContributeした話
PDF
Azure functions+typescript
PDF
技術書典4 く-35「錬金術MeetUp」 Alchemist Vol.1 サンプル版
PDF
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版
PDF
仮想通貨始めました~GethではじめるEthereum~
PDF
錬金術MeetUpへのお誘い
PDF
Mackerelではじめる お手軽サーバー監視
PDF
「GebとSpockではじめるシステムテスト自動化」
PDF
TDDはじめて物語Second Season(updated)
PDF
TDDはじめて物語 Second Season #tddbc
PDF
XP祭り2017 LT 「DevOps再考」(改題)
PDF
JDK9の真の目玉機能はこれだ!
PDF
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
PDF
「すいーとみゅーじっく」のできるまで
remote Docker over SSHが熱い
VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験
Remote Development with Visual Studio Code & A clean dev env, working every ...
ChefとItamaeをニコイチしてAnsibleにマイグレーションした話
「WindowsデスクトップでWeb開発 改訂版」サンプル
Mackerelの薄い本
Microsoft DocsにContributeした話
Azure functions+typescript
技術書典4 く-35「錬金術MeetUp」 Alchemist Vol.1 サンプル版
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版
仮想通貨始めました~GethではじめるEthereum~
錬金術MeetUpへのお誘い
Mackerelではじめる お手軽サーバー監視
「GebとSpockではじめるシステムテスト自動化」
TDDはじめて物語Second Season(updated)
TDDはじめて物語 Second Season #tddbc
XP祭り2017 LT 「DevOps再考」(改題)
JDK9の真の目玉機能はこれだ!
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
「すいーとみゅーじっく」のできるまで

JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」


[8]ページ先頭

©2009-2025 Movatter.jp