SlideShare a Scribd company logo
Submit Search
Upload
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
Report
Share
Hiroyuki Ohnaka
Growth xPartners Incorporated.
Follow
•
5 likes
•
7,327 views
1
of
44
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
•
5 likes
•
7,327 views
Report
Share
Download Now
Download to read offline
Software
2015/11/14 JavaOne 2015 報告会 @ 東京
Read more
Hiroyuki Ohnaka
Growth xPartners Incorporated.
Follow
Recommended
JavaOne2015報告会 Java EE アップデート #j1jp by
JavaOne2015報告会 Java EE アップデート #j1jp
Norito Agetsuma
13.4K views
•
49 slides
Java EE8 Report by
Java EE8 Report
Norito Agetsuma
8.2K views
•
41 slides
Java EE パフォーマンスTips #glassfish_jp by
Java EE パフォーマンスTips #glassfish_jp
Norito Agetsuma
8.1K views
•
32 slides
Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新 by
Java EE 8先取り!MVC 1.0入門 [EDR2対応版] 2015-10-10更新
Masatoshi Tada
15.5K views
•
61 slides
JavaOne 2015 JDK Update (Jigsaw) #j1jp by
JavaOne 2015 JDK Update (Jigsaw) #j1jp
Yuji Kubota
15.9K views
•
82 slides
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c by
CDI2.0アップデート&クックブック #JavaDayTokyo #jdt2016_4c
Norito Agetsuma
6.4K views
•
90 slides
More Related Content
What's hot
WildFly Swarmではじめる「パーツとしてのJavaEE」 by
WildFly Swarmではじめる「パーツとしてのJavaEE」
Hiroaki NAKADA
6.6K views
•
20 slides
Advanced database monitoring in modern java by
Advanced database monitoring in modern java
Chihiro Ito
3.8K views
•
36 slides
WildFly Swarm - Rightsize Your Java EE Apps by
WildFly Swarm - Rightsize Your Java EE Apps
Yoshimasa Tanabe
5.1K views
•
52 slides
Javaアプリケーションサーバ 構築・運用の勘所 by
Javaアプリケーションサーバ 構築・運用の勘所
Takahiro YAMADA
98.3K views
•
37 slides
はじめてのJPA by
はじめてのJPA
kawaba
3.3K views
•
116 slides
Nashorn in the future (Japanese) by
Nashorn in the future (Japanese)
Logico
3.5K views
•
49 slides
What's hot
(20)
WildFly Swarmではじめる「パーツとしてのJavaEE」 by Hiroaki NAKADA
WildFly Swarmではじめる「パーツとしてのJavaEE」
Hiroaki NAKADA
•
6.6K views
Advanced database monitoring in modern java by Chihiro Ito
Advanced database monitoring in modern java
Chihiro Ito
•
3.8K views
WildFly Swarm - Rightsize Your Java EE Apps by Yoshimasa Tanabe
WildFly Swarm - Rightsize Your Java EE Apps
Yoshimasa Tanabe
•
5.1K views
Javaアプリケーションサーバ 構築・運用の勘所 by Takahiro YAMADA
Javaアプリケーションサーバ 構築・運用の勘所
Takahiro YAMADA
•
98.3K views
はじめてのJPA by kawaba
はじめてのJPA
kawaba
•
3.3K views
Nashorn in the future (Japanese) by Logico
Nashorn in the future (Japanese)
Logico
•
3.5K views
20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側 by 賢 秋穂
20160521 大規模映像配信サービスの Java8による全面リニューアルの裏側
賢 秋穂
•
4.2K views
Java Batch 仕様 (Public Review時点) by Norito Agetsuma
Java Batch 仕様 (Public Review時点)
Norito Agetsuma
•
34.2K views
Java EEハンズオン資料 JJUG CCC 2015 Fall by Masatoshi Tada
Java EEハンズオン資料 JJUG CCC 2015 Fall
Masatoshi Tada
•
24.5K views
MVC 1.0 JSR-371を通してAdopt a JSRに知ろう #jjug_ccc #ccc_r57 by Toshiaki Maki
MVC 1.0 JSR-371を通してAdopt a JSRに知ろう #jjug_ccc #ccc_r57
Toshiaki Maki
•
17.9K views
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4 by bitter_fox
Introduction to JShell: the Java REPL Tool #jjug_ccc #ccc_ab4
bitter_fox
•
23.4K views
Seasar2で作った俺たちのサービスの今 by Koichi Sakata
Seasar2で作った俺たちのサービスの今
Koichi Sakata
•
26K views
Webアプリに低レイテンシ・高可用性を求めるのは間違っているのだろうか by Chihiro Ito
Webアプリに低レイテンシ・高可用性を求めるのは間違っているのだろうか
Chihiro Ito
•
10.1K views
Java9新機能概要 by HonMarkHunt
Java9新機能概要
HonMarkHunt
•
16.1K views
10のJava9で変わるJava8の嫌なとこ! by bitter_fox
10のJava9で変わるJava8の嫌なとこ!
bitter_fox
•
57.7K views
Java EE 再入門 by minazou67
Java EE 再入門
minazou67
•
30K views
Java SE 再入門 by minazou67
Java SE 再入門
minazou67
•
19K views
はまる!JPA(初学者向けライト版) by Masatoshi Tada
はまる!JPA(初学者向けライト版)
Masatoshi Tada
•
25.6K views
Prepare for Java 9 #jjug by Yuji Kubota
Prepare for Java 9 #jjug
Yuji Kubota
•
19.4K views
次世代Webコンテナ Undertowについて by Yoshimasa Tanabe
次世代Webコンテナ Undertowについて
Yoshimasa Tanabe
•
25K views
Viewers also liked
JSON-B for CZJUG by
JSON-B for CZJUG
Dmitry Kornilov
1.3K views
•
79 slides
いまさら聞けないJSONPのまとめ by
いまさら聞けないJSONPのまとめ
Yujiro Araki
9.5K views
•
19 slides
Himotoki: A type-safe JSON decoding library #関モバ by
Himotoki: A type-safe JSON decoding library #関モバ
Syo Ikeda
5K views
•
22 slides
2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」 by
2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」
Hiroyuki Ohnaka
6.2K views
•
83 slides
ObjectMapperでJSONマッピング by
ObjectMapperでJSONマッピング
Syo Ikeda
6.8K views
•
21 slides
JSON Support in Java EE 8 by
JSON Support in Java EE 8
Dmitry Kornilov
33K views
•
85 slides
Viewers also liked
(20)
JSON-B for CZJUG by Dmitry Kornilov
JSON-B for CZJUG
Dmitry Kornilov
•
1.3K views
いまさら聞けないJSONPのまとめ by Yujiro Araki
いまさら聞けないJSONPのまとめ
Yujiro Araki
•
9.5K views
Himotoki: A type-safe JSON decoding library #関モバ by Syo Ikeda
Himotoki: A type-safe JSON decoding library #関モバ
Syo Ikeda
•
5K views
2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」 by Hiroyuki Ohnaka
2015/10/14 JJUGナイトセミナー「テスト駆動開発ここが聞きたい」
Hiroyuki Ohnaka
•
6.2K views
ObjectMapperでJSONマッピング by Syo Ikeda
ObjectMapperでJSONマッピング
Syo Ikeda
•
6.8K views
JSON Support in Java EE 8 by Dmitry Kornilov
JSON Support in Java EE 8
Dmitry Kornilov
•
33K views
Java one 2015 [con3339] by Arshal Ameen
Java one 2015 [con3339]
Arshal Ameen
•
10.2K views
Adopt-a-JSR session (JSON-B/P) by Dmitry Kornilov
Adopt-a-JSR session (JSON-B/P)
Dmitry Kornilov
•
725 views
JavaOne感想&技術トレンド紹介 - JavaOne2015報告会 by Yusuke Suzuki
JavaOne感想&技術トレンド紹介 - JavaOne2015報告会
Yusuke Suzuki
•
18.5K views
Javaのプログラムはどうやって動いているの? GC編 by Yuichi Sakuraba
Javaのプログラムはどうやって動いているの? GC編
Yuichi Sakuraba
•
18.8K views
JSONBはPostgreSQL9.5でいかに改善されたのか by NTT DATA OSS Professional Services
JSONBはPostgreSQL9.5でいかに改善されたのか
NTT DATA OSS Professional Services
•
9.1K views
「TDDはじめて物語」 #tddbc by Hiroyuki Ohnaka
「TDDはじめて物語」 #tddbc
Hiroyuki Ohnaka
•
12.5K views
実録Blue-Green Deployment導入記 by Hiroyuki Ohnaka
実録Blue-Green Deployment導入記
Hiroyuki Ohnaka
•
16.6K views
Java EE 8 - February 2017 update by David Delabassee
Java EE 8 - February 2017 update
David Delabassee
•
6K views
JavaOne 2014 BOF4241 What's Next for JSF? by Edward Burns
JavaOne 2014 BOF4241 What's Next for JSF?
Edward Burns
•
29.8K views
What's next for Java API for WebSocket (JSR 356) by Pavel Bucek
What's next for Java API for WebSocket (JSR 356)
Pavel Bucek
•
34.1K views
תוצאות שאלון עמדות מנהלי שיווק מצייצים - אירוע קורנפלקס תלמה/יוניליוור by metzaitzim
תוצאות שאלון עמדות מנהלי שיווק מצייצים - אירוע קורנפלקס תלמה/יוניליוור
metzaitzim
•
421 views
El preescolar desde adentro by gracielalunac
El preescolar desde adentro
gracielalunac
•
341 views
Sven Mary trekt financiële situatie kantoor bijna recht by Thierry Debels
Sven Mary trekt financiële situatie kantoor bijna recht
Thierry Debels
•
778 views
Internet Marketing Trends 2007 by Linda Girard
Internet Marketing Trends 2007
Linda Girard
•
6.9K views
Similar to JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
Vue入門 by
Vue入門
Takeo Noda
5.8K views
•
54 slides
jQuery と MVC で実践する標準志向 Web 開発 by
jQuery と MVC で実践する標準志向 Web 開発
Akira Inoue
1.9K views
•
32 slides
VSCodeで始めるAzure Static Web Apps開発 by
VSCodeで始めるAzure Static Web Apps開発
Yuta Matsumura
987 views
•
36 slides
Struts2を始めよう! by
Struts2を始めよう!
Shinpei Ohtani
7.2K views
•
41 slides
今こそ知りたいSpring Web(Spring Fest 2020講演資料) by
今こそ知りたいSpring Web(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
1.1K views
•
55 slides
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783) by
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
JPCERT Coordination Center
3K views
•
29 slides
Similar to JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
(20)
Vue入門 by Takeo Noda
Vue入門
Takeo Noda
•
5.8K views
jQuery と MVC で実践する標準志向 Web 開発 by Akira Inoue
jQuery と MVC で実践する標準志向 Web 開発
Akira Inoue
•
1.9K views
VSCodeで始めるAzure Static Web Apps開発 by Yuta Matsumura
VSCodeで始めるAzure Static Web Apps開発
Yuta Matsumura
•
987 views
Struts2を始めよう! by Shinpei Ohtani
Struts2を始めよう!
Shinpei Ohtani
•
7.2K views
今こそ知りたいSpring Web(Spring Fest 2020講演資料) by NTT DATA Technology & Innovation
今こそ知りたいSpring Web(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
•
1.1K views
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783) by JPCERT Coordination Center
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
JPCERT Coordination Center
•
3K views
R5 3 type annotation by EIICHI KIMURA
R5 3 type annotation
EIICHI KIMURA
•
2.8K views
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話 by Akira Inoue
Featuring Project Silk & Liike: 楽しい "モダン" Web 開発のちょっとディープなお話
Akira Inoue
•
2K views
ochacafe#6 人にもマシンにもやさしいAPIのエコシステム by オラクルエンジニア通信
ochacafe#6 人にもマシンにもやさしいAPIのエコシステム
オラクルエンジニア通信
•
1.8K views
ASP.NET MVC と jQuery で実践する標準志向 Web 開発 by Akira Inoue
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
Akira Inoue
•
17.9K views
【改訂版あり】クラウド・ネイティブ時代に最適なJavaベースのマイクロサービス・フレームワーク ~ Helidonの実力を見極めろ! by オラクルエンジニア通信
【改訂版あり】クラウド・ネイティブ時代に最適なJavaベースのマイクロサービス・フレームワーク ~ Helidonの実力を見極めろ!
オラクルエンジニア通信
•
853 views
2018年度新入社員研修実績紹介 by CASAREAL, Inc.
2018年度新入社員研修実績紹介
CASAREAL, Inc.
•
1K views
jadeで作るclient template by Ota Tomoaki
jadeで作るclient template
Ota Tomoaki
•
1K views
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~ by normalian
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
normalian
•
1.5K views
企業システムで使えるマイクロサービスの特長と実践 (Oracle Cloudウェビナーシリーズ: 2021年4月15日) by オラクルエンジニア通信
企業システムで使えるマイクロサービスの特長と実践 (Oracle Cloudウェビナーシリーズ: 2021年4月15日)
オラクルエンジニア通信
•
224 views
[GrapeCity Web TECH FORUM 2018]グレープシティJavaScript製品のご紹介 活用のコツと開発のポイント by Developer Solutions事業部 メシウス株式会社 (旧グレープシティ株式会社)
[GrapeCity Web TECH FORUM 2018]グレープシティJavaScript製品のご紹介 活用のコツと開発のポイント
Developer Solutions事業部 メシウス株式会社 (旧グレープシティ株式会社)
•
881 views
いよいよ始められる Java EEでのWebSocket #jjug #jjug_ccc #ccc_r21 by Takakiyo Tanaka
いよいよ始められる Java EEでのWebSocket #jjug #jjug_ccc #ccc_r21
Takakiyo Tanaka
•
4.7K views
OCHaCafe Season 2 #4 - Cloud Native時代のモダンJavaの世界 by オラクルエンジニア通信
OCHaCafe Season 2 #4 - Cloud Native時代のモダンJavaの世界
オラクルエンジニア通信
•
298 views
Backbone.js入門 by AdvancedTechNight
Backbone.js入門
AdvancedTechNight
•
13.6K views
[JavaOne Tokyo 2012] JavaFX and Web Integration by Kazuchika Sekiya
[JavaOne Tokyo 2012] JavaFX and Web Integration
Kazuchika Sekiya
•
3.4K views
More from Hiroyuki Ohnaka
remote Docker over SSHが熱い by
remote Docker over SSHが熱い
Hiroyuki Ohnaka
712 views
•
11 slides
VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験 by
VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験
Hiroyuki Ohnaka
675 views
•
23 slides
Remote Development with Visual Studio Code & A clean dev env, working every ... by
Remote Development with Visual Studio Code & A clean dev env, working every ...
Hiroyuki Ohnaka
455 views
•
13 slides
ChefとItamaeをニコイチしてAnsibleにマイグレーションした話 by
ChefとItamaeをニコイチしてAnsibleにマイグレーションした話
Hiroyuki Ohnaka
1.1K views
•
41 slides
「WindowsデスクトップでWeb開発 改訂版」サンプル by
「WindowsデスクトップでWeb開発 改訂版」サンプル
Hiroyuki Ohnaka
672 views
•
24 slides
Mackerelの薄い本 by
Mackerelの薄い本
Hiroyuki Ohnaka
2K views
•
18 slides
More from Hiroyuki Ohnaka
(20)
remote Docker over SSHが熱い by Hiroyuki Ohnaka
remote Docker over SSHが熱い
Hiroyuki Ohnaka
•
712 views
VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験 by Hiroyuki Ohnaka
VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験
Hiroyuki Ohnaka
•
675 views
Remote Development with Visual Studio Code & A clean dev env, working every ... by Hiroyuki Ohnaka
Remote Development with Visual Studio Code & A clean dev env, working every ...
Hiroyuki Ohnaka
•
455 views
ChefとItamaeをニコイチしてAnsibleにマイグレーションした話 by Hiroyuki Ohnaka
ChefとItamaeをニコイチしてAnsibleにマイグレーションした話
Hiroyuki Ohnaka
•
1.1K views
「WindowsデスクトップでWeb開発 改訂版」サンプル by Hiroyuki Ohnaka
「WindowsデスクトップでWeb開発 改訂版」サンプル
Hiroyuki Ohnaka
•
672 views
Mackerelの薄い本 by Hiroyuki Ohnaka
Mackerelの薄い本
Hiroyuki Ohnaka
•
2K views
Microsoft DocsにContributeした話 by Hiroyuki Ohnaka
Microsoft DocsにContributeした話
Hiroyuki Ohnaka
•
940 views
Azure functions+typescript by Hiroyuki Ohnaka
Azure functions+typescript
Hiroyuki Ohnaka
•
1.5K views
技術書典4 く-35「錬金術MeetUp」 Alchemist Vol.1 サンプル版 by Hiroyuki Ohnaka
技術書典4 く-35「錬金術MeetUp」 Alchemist Vol.1 サンプル版
Hiroyuki Ohnaka
•
2.6K views
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版 by Hiroyuki Ohnaka
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版
Hiroyuki Ohnaka
•
737 views
仮想通貨始めました~GethではじめるEthereum~ by Hiroyuki Ohnaka
仮想通貨始めました~GethではじめるEthereum~
Hiroyuki Ohnaka
•
1.3K views
錬金術MeetUpへのお誘い by Hiroyuki Ohnaka
錬金術MeetUpへのお誘い
Hiroyuki Ohnaka
•
1.5K views
Mackerelではじめる お手軽サーバー監視 by Hiroyuki Ohnaka
Mackerelではじめる お手軽サーバー監視
Hiroyuki Ohnaka
•
4.1K views
「GebとSpockではじめるシステムテスト自動化」 by Hiroyuki Ohnaka
「GebとSpockではじめるシステムテスト自動化」
Hiroyuki Ohnaka
•
9.8K views
TDDはじめて物語Second Season(updated) by Hiroyuki Ohnaka
TDDはじめて物語Second Season(updated)
Hiroyuki Ohnaka
•
1.3K views
TDDはじめて物語 Second Season #tddbc by Hiroyuki Ohnaka
TDDはじめて物語 Second Season #tddbc
Hiroyuki Ohnaka
•
4.3K views
XP祭り2017 LT 「DevOps再考」(改題) by Hiroyuki Ohnaka
XP祭り2017 LT 「DevOps再考」(改題)
Hiroyuki Ohnaka
•
2.6K views
JDK9の真の目玉機能はこれだ! by Hiroyuki Ohnaka
JDK9の真の目玉機能はこれだ!
Hiroyuki Ohnaka
•
2.9K views
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~ by Hiroyuki Ohnaka
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
Hiroyuki Ohnaka
•
10.3K views
「すいーとみゅーじっく」のできるまで by Hiroyuki Ohnaka
「すいーとみゅーじっく」のできるまで
Hiroyuki Ohnaka
•
904 views
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
1.
About MVC 1.0
& JSON-P 2015/11/14 JavaOne 2015 報告会 @ 東京 グロースエクスパートナーズ(株) 大中 浩行 Copyright© 2015 Growth xPartners, Inc. All rights reserved. Copyright© 2015 Growth xPartners, Inc. All rights reserved..
2.
今日のお題 MVC 1.0
JSON-P 1.1 (ちょこっと)JSON-B 1Copyright© 2015 Growth xPartners, Inc. All rights reserved.
3.
MVC1.0 Copyright© 2015 Growth
xPartners, Inc. All rights reserved. 2 2015/1/1
4.
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.
5.
なぜJSFでなくMVCなのか JSFはcomponentベース MVC
1.0 は actionベース 4Copyright© 2015 Growth xPartners, Inc. All rights reserved.
6.
なぜactionベースなのか 見通しのよさ、簡便さ RESTとの親和性 5Copyright©
2015 Growth xPartners, Inc. All rights reserved.
7.
フロントエンドの流行廃りの激しさ WONTA (Write
Once, Never Touch Again) ※どうせそのうち書き直すのだから保守性は考慮にいれない、の意 定着した技術としてのサーバーサイドMVCへのニーズ 6Copyright© 2015 Growth xPartners, Inc. All rights reserved.
8.
Controller MVCのControllerはJAX-RSのresourceとして実装 ただし、semanticsには若干差異がある 7Copyright©
2015 Growth xPartners, Inc. All rights reserved.
9.
Controller 8Copyright© 2015 Growth
xPartners, Inc. All rights reserved. @Path("hello") public class HelloController { @Inject private Greeting greeting; @GET @Controller public String hello() { greeting.setMessage("Hello there!"); return "hello.jsp"; } }
10.
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(){ return Response.status(Response.Status.OK).entity("hello.jsp").build(); } @GET @Path("myview") public MyView helloMyView(){ //toString returns "hello.jsp" return new MyView("hello.jsp"); }
11.
Validation Bean Validation(JSR349)ベース
Validationエラーの扱いについて • 以下の2択 ExceptionMapper<ConstraintViolationException>を実装して共通的に 処理する BindingResultをInjectionして、Controllerのメソッド内部で処理する ハンドリングの仕様がprimitiveな印象 10Copyright© 2015 Growth xPartners, Inc. All rights reserved.
12.
ExceptionMapperによるハンドリング 11Copyright© 2015 Growth
xPartners, Inc. All rights reserved. public class FormViolationMapper implements 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(); } }
13.
Controllerによるハンドリング 12Copyright© 2015 Growth
xPartners, Inc. All rights reserved. @Path("form") @Controller public class FormController { @Inject private 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(); } }
14.
View 仕様としてサポートを要求するのはJSPとFacelet 他は全てextension
Ozarkには以下のextensionがcontribute済み Asciidoc, Freemarker, Handlebars, Jade, JSR 223 (JavaScript) Mustache, StringTemplate, Thymeleaf, Velocity 13Copyright© 2015 Growth xPartners, Inc. All rights reserved.
15.
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.
16.
Viewのデフォルトのパスは”/WEB-INF/views”以下 変更した場合は javax.mvc.engine.ViewEngine.viewFolder
プロパテ ィを使ってオーバーライド 15Copyright© 2015 Growth xPartners, Inc. All rights reserved.
17.
スコープ Controllerのデフォルトスコープはrequest CDIのスコープを使用可能
application/session/request/conversation MVCで @RedirectScoped を定義 PRG(POST-Redirect-GET)パターンをサポート 16Copyright© 2015 Growth xPartners, Inc. All rights reserved.
18.
@RedirectScoped 17Copyright© 2015 Growth
xPartners, Inc. All rights reserved. @Named("bean") @RedirectScoped public class Greeting { private String message; public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } }
19.
イベント Observerパターン モニタリング/デバッグ/チューニング用途
BeforeControllerEvent / AfterControllerEvent BeforeProcessViewEvent / AfterProcessViewEvent ControllerRedirectEvent 追加の可能性あり 18Copyright© 2015 Growth xPartners, Inc. All rights reserved.
20.
19Copyright© 2015 Growth
xPartners, Inc. All rights reserved. @ApplicationScoped public 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()); } }
21.
感想 「フレームワーク」ではなく「API」 All
in one フレームワークとは一線を画している 「ポストStruts」ではない とはいえ、Validationとそれに関係する画面遷移の周 りをもうちょっと作り込まないと実用にはつらい! 20Copyright© 2015 Growth xPartners, Inc. All rights reserved.
22.
JSON-P 1.1 Copyright© 2015
Growth xPartners, Inc. All rights reserved. 21 2015/1/1
23.
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.
24.
JSON-P 1.1 JSON-P
1.0(RFC4627)をRFC7159でアップデート JSR374 現在のステータスはEarly Draft Review 23Copyright© 2015 Growth xPartners, Inc. All rights reserved.
25.
RFC7159 全ての値がトップレベルに可能に つまり、以下がvalidになる 24Copyright©
2015 Growth xPartners, Inc. All rights reserved.
26.
追加された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.
27.
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();
28.
JSON-Pointer RFC6901 JSONの特定値を差すための文字列syntax 27Copyright©
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"))
29.
ポインターによるJSON操作API add(JsonStructure, JsonValue)
replace(JsonStructure, JsonValue) remove(JsonStructure) 28Copyright© 2015 Growth xPartners, Inc. All rights reserved.
30.
JSON-PATCH JSON更新処理の標準化 RFC6902 29Copyright©
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);
31.
JSON-PATCHによるJSON間の差分取得 JsonArray diff
= JsonPatch.diff(commit1,commit2) 30Copyright© 2015 Growth xPartners, Inc. All rights reserved.
32.
JSON-MERGE PATCH RFC7386
JSON間のマージ処理 nullの値をマージするとキーの削除になる application/json-patch+json 31Copyright© 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)
33.
JSON-MERGE PATCHによるパッチ リバースパッチが可能 32Copyright©
2015 Growth xPartners, Inc. All rights reserved.
34.
JSON Queries with
java.util.stream.Stream JsonObject/JsonArrayをMap/Listとして stream+LambdaでOperation可能に javax.json.stream.JsonCollectors #groupingBy / #toJsonArray / #toJsonObject 33Copyright© 2015 Growth xPartners, Inc. All rights reserved.
35.
JSON PROCESSING IN
PARSING streamモデルによる大容量Jsonデータの処理 javax.json.stream.JsonParserにAPI追加 getArray / getObject / getArrayStream / getObjectStream 34Copyright© 2015 Growth xPartners, Inc. All rights reserved.
36.
JSON-P JSONに対する低レベル操作API JSONとJavaオブジェクト(JavaBean)へのマッピング 機能は持っていない 35Copyright©
2015 Growth xPartners, Inc. All rights reserved.
37.
JSON-B Java API
for JSON Binding JSR367 • 現在のスタータスはEarly Draft 2 リファレンス実装はeclipselink MOXy(開発中) 36Copyright© 2015 Growth xPartners, Inc. All rights reserved.
38.
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
39.
JSON-P 1.1はフレームワーク/ライブラリー開発者 には垂涎の機能だがそれ以外の開発者には…?
JSON-Bなら使い出はありそうだが如何せん標準化に 時間がかかりすぎる! 38Copyright© 2015 Growth xPartners, Inc. All rights reserved.
40.
おまけ Copyright© 2015 Growth
xPartners, Inc. All rights reserved. 39 2015/1/1
41.
JavaOne中にちょくちょくあったこと 「それ日本の(ブログ|勉強会)で聞いたやつだ!」 「そのネタだったら俺に喋らせろ!」 40Copyright©
2015 Growth xPartners, Inc. All rights reserved.
42.
世界はそんなに遠くない あれだけの数技術にとがったセッションを集めること のできるパイの大きさというのは、超えられない壁です が… software
developmentのレベルでは海外(主に米国) と日本は大差はなかったと思う。 41Copyright© 2015 Growth xPartners, Inc. All rights reserved.
43.
References MVC: Model-View-Controller
API Version 1.0 Early Draft (Second Edition) http://download.oracle.com/otndocs/jcp/mvc-1-edr2-spec/index.html JSR-000374 Java API for JSON Processing 1.1 Early Draft Review Javadoc 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.
44.
Thank you! 大中浩行(Onaka,Hiroyuki)
グロースエクスパートナーズ(株) テクニカルリード http://blog.fieldnotes.jp/ @setoazusa 43Copyright© 2015 Growth xPartners, Inc. All rights reserved.