Top Banner
Pure Java EE or Spring? @making GlassFish Users Group Japan 勉勉勉 June 2012 2012/06/04
43

Pure JavaEE or Spring #glassfishjp

May 10, 2015

Download

Technology

Toshiaki Maki
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Pure JavaEE or Spring #glassfishjp

Pure Java EE or Spring?

@makingGlassFish Users Group Japan 勉強会 June 2012

2012/06/04

Page 2: Pure JavaEE or Spring #glassfishjp

2

Who are you?

• Toshiaki Maki @making–http://blog.ik.am–某大手 SIer で R & D•社内 Java フレームワークの整備• Spring + Struts + iBatis…

12/06/04GlassFish Users Group Japan

勉強会 June 2012

Page 3: Pure JavaEE or Spring #glassfishjp

3

金魚本翻訳一部担当

12/06/04GlassFish Users Group Japan

勉強会 June 2012

Page 4: Pure JavaEE or Spring #glassfishjp

412/06/04GlassFish Users Group Japan

勉強会 June 2012

JavaEE 、 Spring に限らずJava テクノロジーが好き!

Page 5: Pure JavaEE or Spring #glassfishjp

512/06/04GlassFish Users Group Japan

勉強会 June 2012

金魚本をお持ちでない方はhttp://amzn.to/JavaEE6こちらから、、、

Page 6: Pure JavaEE or Spring #glassfishjp

6

社内 JavaEE6 勉強会 #bje_study

• 各要素技術ごとに講師を募り隔週で開催中– 講師には金魚本プレゼント– 毎回 15 人前後の参加者

• slideshare で資料公開中– JavaEE6 概要 http://slidesha.re/I0cXjt– JPA http://slidesha.re/I7XkHs– EJB http://slidesha.re/JuOA0c– JSF http://slidesha.re/L0MiDt– JMS 6/13 予定– JAX-WS 6/27 予定– JAX-RS 7/4 予定

12/06/04GlassFish Users Group Japan

勉強会 June 2012

Page 7: Pure JavaEE or Spring #glassfishjp

7

ここから本題

• JavaEE と Spring の現在• JavaEE6 と Spring3 の違い• どっちを使う?

12/06/04GlassFish Users Group Japan

勉強会 June 2012

Page 8: Pure JavaEE or Spring #glassfishjp

812/06/04GlassFish Users Group Japan

勉強会 June 2012

本日の発表内容は個人の見解であり、所属企業とは一切関係ありません

Page 9: Pure JavaEE or Spring #glassfishjp

9

JavaEE とSpring の現在

12/06/04GlassFish Users Group Japan

勉強会 June 2012

Page 10: Pure JavaEE or Spring #glassfishjp

10

質問:何で Web アプリケーションを開発していますか?

• Struts1 系 +α で開発している人• Struts2 系 +α で開発している人• Seasar で開発している人• Spring で開発している人• JavaEE5 で開発している人• JavaEE6 で開発している人• その他 (Play とか、 Grails とか )

12/06/04GlassFish Users Group Japan

勉強会 June 2012

Page 11: Pure JavaEE or Spring #glassfishjp

11

Java EE• 言わずと知れた Java による WEB アプリケーション開発標

準フレームワークスタック• ベンダ非依存な仕様策定• 2009 年 12 月に Java EE 6 が登場し、 2011 年ごろから対

応 AP サーバー多数登場– GlassFish 3– WebLogic 12c– Web Sphere 8.X– JBoss AS 7– Cosminexus v9– TomEE など

• Web Profile の登場など、かつての重厚感はなくなり、開発生産性が高まった

• JSF 、 EJB 、 JPA 、 CDI 、 Bean Validation が主要テクノロジー

• J2EE 時代に比べて格段に使いやすくなった12/06/04

GlassFish Users Group Japan勉強会 June 2012

Page 12: Pure JavaEE or Spring #glassfishjp

12

Spring• 現在 3.1 系

– 2012-02-16 に 3.1.1 リリース– 2012-06 に 3.1.2 リリース?

• SpringSource 社による開発• XML による設定が多い!という印象がある方は時代遅れ

– 3.0 以降ではほとんどの設定がアノテーションで記述可能– XML ベース、アノテーションベース、 Java ベースの設定方法を

自由に選べる(組み合わせ可能)• サブプロジェクト多数

– Spring Security– Spring Data– Spring Batch– Spring Mobile– Spring Social

• J2EE のアンチテーゼとして生まれたが重厚になりつつある

12/06/04GlassFish Users Group Japan

勉強会 June 2012

Page 13: Pure JavaEE or Spring #glassfishjp

13

Spring -> Java EE6 への動き?

• JavaEE6 の普及展開に合わせて、 Spring に対するネガティブキャンペーン?

• migration Spring to JavaEE6 – http://www.oracle.com/technetwork/articles/ja

va/springtojavaee-522240.html

– https://blogs.oracle.com/arungupta/entry/why_java_ee_6_is

– http://www.slideshare.net/ertmanb/javaone-2011-migrating-spring-applications-to-java-ee-6

12/06/04GlassFish Users Group Japan

勉強会 June 2012

Page 14: Pure JavaEE or Spring #glassfishjp

14

JBoss の JavaEE6 プロモーション

• http://www.jboss.com/promo/EE6/

12/06/04GlassFish Users Group Japan

勉強会 June 2012

(意訳) Spring や Struts みたいなレガシーなアプリをメンテナンスしてても、JBoss にデプロイされていたら RedHat は

サポートするよ!

Page 15: Pure JavaEE or Spring #glassfishjp

15

Stack Overflow での質問

• http://stackoverflow.com/questions/2499323/java-ee-6-vs-spring-3-stack

12/06/04GlassFish Users Group Japan

勉強会 June 2012

2010 年 5 月オープン2011 年 12 月荒れ過ぎで閉

Page 16: Pure JavaEE or Spring #glassfishjp

1612/06/04GlassFish Users Group Japan

勉強会 June 2012

感情論、宗教論になりつつある。。

Page 17: Pure JavaEE or Spring #glassfishjp

17

JavaEE6 とSpring3 の違い

12/06/04GlassFish Users Group Japan

勉強会 June 2012

Page 18: Pure JavaEE or Spring #glassfishjp

18

いくつか違いをみていきます

• 構成テクノロジーの違い• 出版書籍の違い• ドキュメントの違い• セキュリティの違い• IDE の違い• Code Generation の違い

12/06/04GlassFish Users Group Japan

勉強会 June 2012

Page 19: Pure JavaEE or Spring #glassfishjp

19

FullJavaEE6 の WEB アプリケーションモデル

12/06/04GlassFish Users Group Japan

勉強会 June 2012

ブラウザ JSF EJB RDBMSJPA

Presentation Service Persistence

JAX-RS

CDI/EJB コンテナ

MangedBean

Page 20: Pure JavaEE or Spring #glassfishjp

20

Spring を使用した一般的な WEB アプリケーションモデル

12/06/04GlassFish Users Group Japan

勉強会 June 2012

ブラウザ Spring MVC

Spring(POJO) RDBMS

Spring(POJO)

JPA

Presentation Service Persistence

Spring DI

Page 21: Pure JavaEE or Spring #glassfishjp

21

構成テクノロジーの違い

• WEB アプリのモデルはだいたい同じ• 個別技術で言うと

– JSF vs Spring MVC• コンポーネントベース vs アクションベース

– CDI vs Spring DI

• だが、、 Spring は各層の連携が ( 疎ではあるが ) 強力であり、個別要素で比べるのはナンセンス

• http://orablogs-jp.blogspot.jp/2012/05/spring-to-java-ee-migration-part-4.htmlを読めば分かるが、 Critical な違いはない– 記事中では小さなことで Spring を批判している

12/06/04GlassFish Users Group Japan

勉強会 June 2012

Page 22: Pure JavaEE or Spring #glassfishjp

22

JavaEE6 関連書籍

12/06/04GlassFish Users Group Japan

勉強会 June 2012

Page 23: Pure JavaEE or Spring #glassfishjp

23

Spring3 関連書籍

12/06/04GlassFish Users Group Japan

勉強会 June 2012

Page 24: Pure JavaEE or Spring #glassfishjp

24

出版書籍の違い

• JavaEE6 に関する書籍– 要素技術の解説形式が多い

• Spring3 に関する書籍– 技術解説の他、クックブック形式やアプリケーショ

ンを作りながら学ぶ形式も多い

12/06/04GlassFish Users Group Japan

勉強会 June 2012

今後 JavaEE6 を使ったアプリケーション開発

に関する書籍が出てくることを期待してます!

Page 25: Pure JavaEE or Spring #glassfishjp

25

ドキュメントの違い

• JavaEE6– http://www.oracle.com/technetwork/java/javae

e/resources-jsp-139799.html• サンプル• JavaDoc• Spec• チュートリアル

• Spring– http://static.springsource.org/spring/docs/3.1.x

/spring-framework-reference/html/• リファレンスマニュアル

– http://static.springsource.org/spring/docs/3.1.x/javadoc-api/• Javadoc

12/06/04GlassFish Users Group Japan

勉強会 June 2012

Page 26: Pure JavaEE or Spring #glassfishjp

26

セキュリティの違い

• JavaEE6– JAAS ?

• ドキュメントが少ないので全貌を理解していない。。。

• Spring– Spring Security

• かなりパワフル

12/06/04GlassFish Users Group Japan

勉強会 June 2012

Page 27: Pure JavaEE or Spring #glassfishjp

27

IDE の違い

• Java EE 6– NetBeans– JBoss Tools– Rational Application Developer– MyEclipse

• Spring– SpringSource Tool Suite– MyEclipse

12/06/04GlassFish Users Group Japan

勉強会 June 2012

Page 28: Pure JavaEE or Spring #glassfishjp

28

Code Generation の違い

• Java EE 6– JBoss Forge– Glassfish

• Spring– Spring Roo– Spring Fuse– MyEclipse

12/06/04GlassFish Users Group Japan

勉強会 June 2012

Page 29: Pure JavaEE or Spring #glassfishjp

2912/06/04GlassFish Users Group Japan

勉強会 June 2012

甲乙つけがたい。。

Page 30: Pure JavaEE or Spring #glassfishjp

30

最も大きな違いは、、 jar の配置場所• JavaEE はフレームワークが AP サーバー側にある

– フレームワークはベンダが提供– ベンダサポートあり– war のサイズが小さい– バージョンは自由に選べない– 変更のサイクルが長い– AP サーバーのマイグレーションは大丈夫なんでしょう

か• Spring はフレームワークがアプリケーション側に

ある– 好きなバージョンを選べる– 変更のサイクルを選べる– 自己責任 (bugfix できる )– war のサイズが大きい

12/06/04GlassFish Users Group Japan

勉強会 June 2012

Page 31: Pure JavaEE or Spring #glassfishjp

31

どっちを使う?

12/06/04GlassFish Users Group Japan

勉強会 June 2012

Page 32: Pure JavaEE or Spring #glassfishjp

32

Spring はプロプライエタリで危険?

• 状況– 開発プロセスがオープンでなく、 SpringSource 社

のみで進んでいるのは確か。• A 社の F 技術のようになる可能性あり

• 実際– Spring は 1 系から一貫したプログラミングモデル

を提供– バージョンがあがるごとに機能追加、生産性向上を行ってきた

– 3.1 系はとても開発しやすい– 多くの拡張ポイントが用意されている

12/06/04GlassFish Users Group Japan

勉強会 June 2012

Page 33: Pure JavaEE or Spring #glassfishjp

33

それぞれの今後• Spring3.2– Java7 対応– Servlet3.0/3.1 非同期リクエストサポート– JCache(JSR-107) サポート– WebSocket 対応?– JavaEE7 対応?– 2012-05-28 に 3.2 M1 リリース

• JavaEE7– PaaS 対応– マルチテナンシー– JPA2.1 、 EJB3.2 、 JAX-

RS2.0 、 JMS2.0 、 Servlet3.1 、 JSF2.2 、 CDI1.1・・・

– 2013 年 ?12/06/04

GlassFish Users Group Japan勉強会 June 2012

Page 34: Pure JavaEE or Spring #glassfishjp

3412/06/04GlassFish Users Group Japan

勉強会 June 2012

宗教論争はやめよう

Page 35: Pure JavaEE or Spring #glassfishjp

3512/06/04GlassFish Users Group Japan

勉強会 June 2012

“ 標準技術を使う”のが目的じゃない

Page 36: Pure JavaEE or Spring #glassfishjp

3612/06/04GlassFish Users Group Japan

勉強会 June 2012

“ 保守性・拡張性の高いアプリケーションを効率良く開発する”のが目的!

Page 37: Pure JavaEE or Spring #glassfishjp

3712/06/04GlassFish Users Group Japan

勉強会 June 2012

dis り合いはやめよう

Page 38: Pure JavaEE or Spring #glassfishjp

38

少数精鋭な方々は、、

• どっちでもいい ( 生産者高い ) んじゃね?• 慣れている方を選べば良い• もちろん Play や Grails等他のフレームワーク

を選んでも良い

12/06/04GlassFish Users Group Japan

勉強会 June 2012

Page 39: Pure JavaEE or Spring #glassfishjp

39

様々なのエンジニア向け• MVC 、業務ロジック、データアクセスはどちらも

Good– MVC のコンポーネントベース or アクションベースで好き嫌

いは分かれる?• フレームワークを提供する立場としては、個人的には

XML でもアノテーションでもDI できる方が好き– フレームワーク用の包括的な設定は小さく XML で定義– アプリケーション用の多くの設定はアノテーションで定義– CDIもっとがんばれ、、 (ConversationScoped は Good)

• バッチ処理や JavaEE 以外のサーバーサイド (Nettyベースなアプリ等 )もカバーしたい場合、 Spring で統一的なプログラミングモデルを提供すると良さそう

12/06/04GlassFish Users Group Japan

勉強会 June 2012

Page 40: Pure JavaEE or Spring #glassfishjp

40

JavaEE6 + Spring

• 一貫性がとれていれば組み合わせても問題ない– 成熟した JavaEE API+Spring– Spring MVC + EJB + JPA– JSF(Spring WebFlow) + Spring + JPA

• 一貫性がとれていない組み合わせは複雑さを増し、保守性を低下させる恐れあり– Spring MVC + JSF– Spring + CDI

12/06/04GlassFish Users Group Japan

勉強会 June 2012

Page 41: Pure JavaEE or Spring #glassfishjp

4112/06/04GlassFish Users Group Japan

勉強会 June 2012

正直、慣れている技術を使えば良いと思う。。

Page 42: Pure JavaEE or Spring #glassfishjp

42

まとめ?

• JavaEE と Spring の現在• JavaEE6 と Spring3 の違い• どっちを使う?

12/06/04GlassFish Users Group Japan

勉強会 June 2012

どっちも Good!喧嘩せずに、合った技術を選びましょ

う!

Page 43: Pure JavaEE or Spring #glassfishjp

4312/06/04GlassFish Users Group Japan

勉強会 June 2012

って全然まとまっていないので、続きは懇親会で!