Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Springの過去と現在
Kohei Tamura
今日のテーマ
• Springって何?
• Java Webアプリ開発の歴史とSpring
• 現在のSpringプロジェクトの概要
次のような方を想定
•「Spring? WebアプリのFWでしょ」
•「Spring? DIとAOPだっけ」
•「Spring? 昔開発で使ってたけど、
最近のSpringは...」
今日のテーマ
• Springって何?
• Java Webアプリ開発の歴史とSpring
• 現在のSpringプロジェクトの概要
って何?
• DI
• AOP
を中心にしたJava Webアプリケー
ションの軽量なフレームワーク
だった...
(当初は)
今は?
Spring Web Services
Spring Security
Spring LDAP
Spring
Framework
Spring Shell
Spring HATEOAS
Spring SessionSpring Load...
分かんねー…
FWは
他にも
あるけど
分かんねー…
まずは、Java Webアプリ
開発の歴史とSpringの登場、
そしてその後を振り返って
みましょう
と、その前に...
一応説明
JavaのWebアプリを動かすための
一般的な構成要素とSpringの役割
AS (JBoss)
JVM (Java)
アプリケーション
:独自ロジックを実装
FW(Spring)、ライブラリ
:共通ロジック
Springはフレーム
ワークであ...
Webアプリの基盤となる共通処理を担
うソフトウェアで、以下が主な目的
• 開発生産性の向上
• 実装やUIの均質化
フレームワーク
• サーブレット/JSPコンテナ
Servlet、JSPなどJava EEの一部の仕様を実装
例) Tomcat、Jetty
• Java EEコンテナ
Java EEの全ての仕様を実装
例) Glassfish (Payara)、JBoss ...
Java EE
• =Java Platform, Enterprise Edition
• Java Webアプリ開発のために必要
な機能をまとめた仕様群
• 仕様であり、実体は無い
• 旧名 J2EE
Java EE 7
Java API for WebSocket
JAXP 1.3
Java API for WebSocket
EL 3.0
Java Servlet 3.1
JSP 2.3
EJB 3.2
JSF 2.2
JSTL 1.2
...
Java EEとAS、FWの関係性
AS
JVM (Java)
アプリケーション
FW、ライブラリ
JSP
EL
Servlet
JPA
…
Java EE = 標準仕様
実装
Java Webアプリ
実装
Java EEの一部の仕様を
実装し...
前置きが長く
なりましたが...
今日のテーマ
• Springって何?
• Java Webアプリ開発の歴史とSpring
• 現在のSpringプロジェクトの概要
SunがJWSを開発
• SunでJava Web Serverの開発が始まる
Apache + CGI
↓
Java サーブレット
1995年
Servlet 1.0
• JWSの開発とともに、Servlet 1.0の
仕様策定が進む
• その後、EJB、JSPも...
1996年
サーブレットコンテナ続々
リリース
• OSSのサーブレットコンテナ
Apache JServ、W3C Jigsaw
• その後、商用のサーブレットコンテナも
Live Software JRun、Weblogic Tengah
1998年
JPE (Java EEの原型)
• SunがJPE (Java Professional Edition)
プロジェクトを発表
Tomcat 3.0初回リリース
• Sun JWS + Apache Jserv = Tomcat
• 以下を実装
• Servlet
• JSP
1999年
J2EE 1.2
• サーバーサイドJavaの多くの仕様を公開
• Servlet 2.2
• JSP 1.1
• EJB 1.1
• JDBC 2.0
• JNDI 1.2 など
1999年
JBoss、Weblogicリリース
• 商用のサーブレットコンテナは、
EJBも実装
• Servlet
• JSP
• EJB
2000年
ちなみに
EJB + OSS = EJBoss
-> JBoss
この頃主流の構成
カスタムフレームワーク
JBoss(Sevlet/JSP/EJB)
JVM
アプリケーション
共通部分を各社が
独自のフレーム
ワークとして実装
FWの需要
J2EEは複雑
すぎる...開発を
もっと
簡単に
Struts 1.0の登場
• 爆発的に普及、Webアプリのフレーム
ワークのデファクトスタンダードへ
• 特徴
•MVCアーキテクチャ
•JSPカスタムタグ など
2001年
この頃主流の構成
JBoss(Sevlet/JSP/EJB)
JVM
アプリケーション
カスタム
FW
Hibe-
rnate
Struts
ORMのFW
なども誕生
2003年
J2EE 1.4
• さらに仕様を追加、更新
• JSF 1.1
• JAX-RPC 1.1
• JMX 1.2 など
Spring 1.0の登場
• 特徴
• DI
• AOP など
2004年
重厚で複雑なEJBは
存在自体が間違いだ !!
Strutsも満足できない。
Rod Johnson
J2EE「冬」の
時代の後に
新たなスタート
「春(Spring)」
この頃主流の構成
Spring (DI/AOP)
Tomcat(Sevlet/JSP)
JVM
カスタム
FW
アプリケーション
「SSH」の構成が主
流に。Strutsではな
く、Spring MVCを
使うこともできたが、
Strutsを使...
ちなみに、日本では...
残念ながら、2016年9月で、
SeasarはEOL(End of Life)に...
Spring 2.0リリース
• 特徴
• 基本機能(DI/AOP)の強化
• Spring MVCのXML記述量の削減
• Java 5サポート
2006年
Struts 1.xの衰退
Struts 1.xの衰退
• XML地獄
• 単体テストが困難
• デファクトゆえ下位互換性を軽視できず
• 最新のWeb技術に追従できていない
→ 徐々に新規開発で使われなくなる
• Struts 1.3.10は2008年で開発終了
• アーキテクチャを全面的に見直した
Struts 2.0に注力
Struts 1.x 開発終了
Struts 1.xの次は?
• Struts 2:Struts 1後継(※互換性無し)
• Spring MVC:Spring FWの一部
• JSF:Java EE標準仕様
Struts 1.xの次は?
新たなアプローチ (フレームワーク)の登場
• Wicket:全てをJavaオブジェクトで
• GWT:JavaからJSへ変換
• Grails:RoRのJava版
• Play Framework:Scalaベー...
Struts 1.xの次は?
Struts 1.xの次は?
• Struts 2:Struts 1後継(※互換性無し)
• Spring MVC:Springの一部
• JSF:Java EE標準仕様
• Wicket:全てをJavaオブジェクトで
• GWT:Google...
Spring
増え続けるサブプロジェクト
Spring Web Services
Spring LDAP
Spring
Framework
Spring Web Flow
2007年
Spring 2.5
Spring Web Services
Spring LDAP
Spring
Framework
Spring Shell
Spring BlazeDS Integration
Spring Batch
Spring Web Flow
Spri...
Spring Web Services
Spring LDAP
Spring
Framework
Spring Shell
Spring Social
Spring BlazeDS Integration
Spring AMQP
Spring ...
Spring Web Services
Spring LDAP
Spring
Framework
Spring Shell
Spring HATEOAS
Spring Loaded
Spring Social
Spring BlazeDS In...
Spring Web Services
Spring Boot
Spring LDAP
Spring
Framework
Spring Shell
Spring HATEOAS
Spring SessionSpring Loaded
Sprin...
軽量?
重厚で複雑なEJBの
アンチテーゼだったのでは...
新たな取り組み
Spring Boot
Spring IO
Platform
あっという間に
開発・動作確認
できる環境構築
ライブラリの
バージョン管理
と依存関係管理
Java EE
一方
Java EE 5
• EJBのアーキテクチャを刷新
• EJB 3.0
• Common Annotations 1.0
• JPA 1.0 など
2006年
Glassfish 1.0リリース
• Java EE 5に完全準拠
• JBoss、Weblogicも続く
Java EE 6
• DI、AOPも標準仕様に
• Dependency Injection for Java 1.0
• Interceptors 1.1
• JAX-RS 1.1 など
2009年
Java EE 7
• Spring Batchを参考にしたJBatchも
標準仕様に
• Batch Applications for the Java Platform
• Java API for JSON Processing
• Ja...
Java EE/AS/FWの関係性 (2)
Spring Batch
JBatch
DI、AOP
JPA
Servlet
…
Java EE
JSR
Spring FW
Hibernate
JSR
FWの仕様を参考にいいものを標準仕様として取り...
OSSのFWのいいとこ取りをして、
大きくなるJava EE。
Java EEコンテナがあれば、フ
レームワークは要らない??
No.
Java EEの仕様策定期間と、それから
コンテナが実装するまでに4年程度の
遅れがあるため、今後も新しい機能
はFWが先に実装していくはず。
No.
Java EEコンテナ
または
サーブレットコンテナ+各種FW
Spring or Java EE
JBoss
Webサーバー
…Servlet JSP
…JAAS Batch
JSF
Inter-
cepters DI
Tomcat + Spring FW +
Springサブモジュール
Webサーバー
...
今日のテーマ
• Springって何?
• Java Webアプリ開発の歴史とSpring
• 現在のSpringプロジェクトの概要
Springのプロダクトを以下
の観点で比較
• Googleの検索件数
• 規模
•ソースコードの行数
•GitHubの★数
•GitHubの開発者数
• 現状と今後の見通し(Google Trends)
コードの行数の比較
プロジェクトの規
模も様々
Google検索件数の比較
GitHubの★数の比較
GitHubの開発者数の比較
Google Trends
人気度の動向には、
プロジェクト毎に
大きな差がある
現状と今後の見通し(予想)
Spring Boot ◎ ↗↗ Spring REST Docs × ↗
Spring Data ◎ ↗ Spring HATEOAS × ↗
Spring Framework ◎→ Spring Shell ×→...
主なプロジェクトを紹介
Spring Boot
最小限の設定で商用レベルのSpringアプリ
ケーションの開発を可能にする。手軽さが
受けて、世界中で人気。
•スター数 :12,037
•開発者数 :340
•初版リリース:2014年
•DI
•AOP
Google trendsの結果
Spring Bootの特徴
• 豊富なサンプルから必要なものを選
び、その定義をpom.xmlに追記して、
mvnコマンド実行
→あっという間にSpring FWベース
のサンプルアプリが起動し、開発環
境もでき上がる
Spring Bootの特徴
• AS不要(AS組み込みのjarで起動)
• 設定を簡略化する仕組み
• Webアプリ以外(バッチ等)も可能
Spring Bootを使った開発
• STSとSpring Bootを使った開発の
デモを行います
• Spring Loadedでソースコードの修
正が即時反映されることにも注目
DEMO
Spring Data
RDBMS、NoSQL、マップリデュース、お
よびそれらの範囲を超える一貫したデータ
アクセスへのアプローチを提供 。
•スター数 :7, 789
•開発者数 :515
•初版リリース:2011年
Google trendsの結果
Spring Dataのサブモジュール
• Spring Data Commons
• Spring Data Gemfire
• Spring Data JPA
• Spring Data KeyValue
• Spring Data LDA...
Spring Cloud
分散環境でアプリを構築するためのツール
やFWの集合。
•スター数 :3,802
•開発者数 :706
•初版リリース:2014年
Google trendsの結果
Spring Cloudの特徴
• サブプロジェクトの中で最大規模
• 70以上のサブプロジェクトがあり、
spring-projects配下から独立。
• 現時点では日本での利用は少なそう
だが、これから流行りそうな予感。
Spring Security
認証と認可を実現するFW(大雑把に言うと
ServletFilter)。
•スター数 :4,050
•開発者数 :261
•初版リリース:2008年
Google trendsの結果
Spring Securityの特徴
• 多くの認証方式に対応
• LDAP
• クライアント証明書
• SAML
• OAuth
• OpenID 等(※OpenID Connect未対応)
• セッション固定攻撃、CSRF防止等
Spring Batch
バッチアプリケーションの開発を効率化す
るために設計された、軽量で包括的なバッ
チフレームワーク。
•スター数 :1,009
•開発者数 :79
•初版リリース:2008年
Google trendsの結果
Spring Batchの特徴
• バッチアプリ開発のデファクト
• バッチ処理に必要な一連の機能を実装
•トランザクション管理
• 並列化による大量データの高速処理
• ジョブ管理 など
• JBatch(Java EE)の原型
Spring Integration
様々な外部サービスと連携ができるEIP開発
をサポートするFW。
•スター数 :2,384
•開発者数 :195
•初版リリース:2008年
Google trendsの結果
Spring Integrationの特徴
• EIP (Enterprise Integration
Pattern)
• 企業のシステム統合などが目的
• 様々な送受信先
•AMQP、ファイル、FTP、GemFire、
HTTP、RDB、N...
最後に
今後のSpringについて
Strutsは死んだのか?
• 新規開発で使われることはほぼ無い
• しかし、過去のデファクトは今でも
多くのシステムで稼働している
• 未だに問い合わせはたくさん来る
(脆弱性の質問ばかりだけど...)
Springは生き残るのか?
Springは生き残るのか?
• いい技術はJava EEに取り込まれるが...
• Springは長期間デファクト
• Spring Rooのように失速するものも
• Spring BootでSpringが再加速
• コアを大きくせず、モジュールを増や
しているので、今後...
2017/07
Spring 5.0 リリース
興味がある方は
ありがとうございました
Spring.project
Spring.project
Spring.project
Spring.project
Upcoming SlideShare
Loading in …5
×

Spring.project

916 views

Published on

Springの過去と現在

  • Be the first to comment

Spring.project

  1. 1. Springの過去と現在 Kohei Tamura
  2. 2. 今日のテーマ • Springって何? • Java Webアプリ開発の歴史とSpring • 現在のSpringプロジェクトの概要
  3. 3. 次のような方を想定 •「Spring? WebアプリのFWでしょ」 •「Spring? DIとAOPだっけ」 •「Spring? 昔開発で使ってたけど、 最近のSpringは...」
  4. 4. 今日のテーマ • Springって何? • Java Webアプリ開発の歴史とSpring • 現在のSpringプロジェクトの概要
  5. 5. って何?
  6. 6. • DI • AOP を中心にしたJava Webアプリケー ションの軽量なフレームワーク
  7. 7. だった... (当初は)
  8. 8. 今は? Spring Web Services Spring Security Spring LDAP Spring Framework Spring Shell Spring HATEOAS Spring SessionSpring Loaded Spring Social Spring BlazeDS Integration REST Shell Spring IO Platform Spring Cloud Spring Scala Spring Batch Spring Data Spring Web Flow Spring for Android Spring Integration Spring Roo Spring AMQP Spring XD Spring Boot Spring REST Docs Spring Statemachine Spring MobileSpring Tool Suite
  9. 9. 分かんねー…
  10. 10. FWは 他にも あるけど
  11. 11. 分かんねー…
  12. 12. まずは、Java Webアプリ 開発の歴史とSpringの登場、 そしてその後を振り返って みましょう
  13. 13. と、その前に... 一応説明
  14. 14. JavaのWebアプリを動かすための 一般的な構成要素とSpringの役割 AS (JBoss) JVM (Java) アプリケーション :独自ロジックを実装 FW(Spring)、ライブラリ :共通ロジック Springはフレーム ワークであり、Web アプリの基本的な動作 の実現を担当します
  15. 15. Webアプリの基盤となる共通処理を担 うソフトウェアで、以下が主な目的 • 開発生産性の向上 • 実装やUIの均質化 フレームワーク
  16. 16. • サーブレット/JSPコンテナ Servlet、JSPなどJava EEの一部の仕様を実装 例) Tomcat、Jetty • Java EEコンテナ Java EEの全ての仕様を実装 例) Glassfish (Payara)、JBoss (WildFly) アプリケーションサーバー
  17. 17. Java EE • =Java Platform, Enterprise Edition • Java Webアプリ開発のために必要 な機能をまとめた仕様群 • 仕様であり、実体は無い • 旧名 J2EE
  18. 18. Java EE 7 Java API for WebSocket JAXP 1.3 Java API for WebSocket EL 3.0 Java Servlet 3.1 JSP 2.3 EJB 3.2 JSF 2.2 JSTL 1.2 CDI 1.1 JPA 2.1 JMS 2.0 JTA 1.2 JavaMail API 1.5 JAX-WS 2.2 JAX-RS 2.0 StAX 1.0 JAXB 2.2 Concurrency Utilities for Java EE 1.0 Dependency Injection for Java 1.0 Bean Validation 1.1 Batch Applications for the Java Platform Java Authorization Service Provider Contract for Containers 1.5 Java Authentication Service Provider Interface for Containers 1.1 JAXB 2.2 JMX 2.0 Java EE Connector Architecture 1.7 Debugging Support for Other Languages 1.0 Common Annotations for the Java Platform 1.2 Java Database Connectivity 4.0 Java APIs for XML Messaging 1.3 Java EE Management 1.1 Web Services Metadata for the Java Platform Java API for WebSocket Java EE Application Deployment 1.2 Interceptors 1.2 JAXR 1.0 JAX-RPC 1.1 Managed Beans 1.0 Java API for JSON Processing
  19. 19. Java EEとAS、FWの関係性 AS JVM (Java) アプリケーション FW、ライブラリ JSP EL Servlet JPA … Java EE = 標準仕様 実装 Java Webアプリ 実装 Java EEの一部の仕様を 実装しているものもある
  20. 20. 前置きが長く なりましたが...
  21. 21. 今日のテーマ • Springって何? • Java Webアプリ開発の歴史とSpring • 現在のSpringプロジェクトの概要
  22. 22. SunがJWSを開発 • SunでJava Web Serverの開発が始まる Apache + CGI ↓ Java サーブレット 1995年
  23. 23. Servlet 1.0 • JWSの開発とともに、Servlet 1.0の 仕様策定が進む • その後、EJB、JSPも...
  24. 24. 1996年 サーブレットコンテナ続々 リリース • OSSのサーブレットコンテナ Apache JServ、W3C Jigsaw • その後、商用のサーブレットコンテナも Live Software JRun、Weblogic Tengah
  25. 25. 1998年 JPE (Java EEの原型) • SunがJPE (Java Professional Edition) プロジェクトを発表
  26. 26. Tomcat 3.0初回リリース • Sun JWS + Apache Jserv = Tomcat • 以下を実装 • Servlet • JSP 1999年
  27. 27. J2EE 1.2 • サーバーサイドJavaの多くの仕様を公開 • Servlet 2.2 • JSP 1.1 • EJB 1.1 • JDBC 2.0 • JNDI 1.2 など 1999年
  28. 28. JBoss、Weblogicリリース • 商用のサーブレットコンテナは、 EJBも実装 • Servlet • JSP • EJB 2000年 ちなみに EJB + OSS = EJBoss -> JBoss
  29. 29. この頃主流の構成 カスタムフレームワーク JBoss(Sevlet/JSP/EJB) JVM アプリケーション 共通部分を各社が 独自のフレーム ワークとして実装
  30. 30. FWの需要 J2EEは複雑 すぎる...開発を もっと 簡単に
  31. 31. Struts 1.0の登場 • 爆発的に普及、Webアプリのフレーム ワークのデファクトスタンダードへ • 特徴 •MVCアーキテクチャ •JSPカスタムタグ など 2001年
  32. 32. この頃主流の構成 JBoss(Sevlet/JSP/EJB) JVM アプリケーション カスタム FW Hibe- rnate Struts ORMのFW なども誕生
  33. 33. 2003年 J2EE 1.4 • さらに仕様を追加、更新 • JSF 1.1 • JAX-RPC 1.1 • JMX 1.2 など
  34. 34. Spring 1.0の登場 • 特徴 • DI • AOP など 2004年 重厚で複雑なEJBは 存在自体が間違いだ !! Strutsも満足できない。 Rod Johnson
  35. 35. J2EE「冬」の 時代の後に 新たなスタート 「春(Spring)」
  36. 36. この頃主流の構成 Spring (DI/AOP) Tomcat(Sevlet/JSP) JVM カスタム FW アプリケーション 「SSH」の構成が主 流に。Strutsではな く、Spring MVCを 使うこともできたが、 Strutsを使う構成の 方が多かった。ASは TomcatでもOK Hibe- rnate Struts
  37. 37. ちなみに、日本では... 残念ながら、2016年9月で、 SeasarはEOL(End of Life)に...
  38. 38. Spring 2.0リリース • 特徴 • 基本機能(DI/AOP)の強化 • Spring MVCのXML記述量の削減 • Java 5サポート 2006年
  39. 39. Struts 1.xの衰退
  40. 40. Struts 1.xの衰退 • XML地獄 • 単体テストが困難 • デファクトゆえ下位互換性を軽視できず • 最新のWeb技術に追従できていない → 徐々に新規開発で使われなくなる
  41. 41. • Struts 1.3.10は2008年で開発終了 • アーキテクチャを全面的に見直した Struts 2.0に注力 Struts 1.x 開発終了
  42. 42. Struts 1.xの次は? • Struts 2:Struts 1後継(※互換性無し) • Spring MVC:Spring FWの一部 • JSF:Java EE標準仕様
  43. 43. Struts 1.xの次は? 新たなアプローチ (フレームワーク)の登場 • Wicket:全てをJavaオブジェクトで • GWT:JavaからJSへ変換 • Grails:RoRのJava版 • Play Framework:Scalaベース (※JavaベースのFWのみ)
  44. 44. Struts 1.xの次は?
  45. 45. Struts 1.xの次は? • Struts 2:Struts 1後継(※互換性無し) • Spring MVC:Springの一部 • JSF:Java EE標準仕様 • Wicket:全てをJavaオブジェクトで • GWT:Googleが開発 • Grails: RoRのJava版 • Play Framework: Scalaベース
  46. 46. Spring
  47. 47. 増え続けるサブプロジェクト
  48. 48. Spring Web Services Spring LDAP Spring Framework Spring Web Flow 2007年 Spring 2.5
  49. 49. Spring Web Services Spring LDAP Spring Framework Spring Shell Spring BlazeDS Integration Spring Batch Spring Web Flow Spring Roo 2009年 Spring Security Spring Integration Spring 3.0 Spring Tool Suite
  50. 50. Spring Web Services Spring LDAP Spring Framework Spring Shell Spring Social Spring BlazeDS Integration Spring AMQP Spring Batch Spring Data Spring Web Flow Spring Roo 2011年 Spring Security Spring Integration Spring 3.1 Spring Tool Suite
  51. 51. Spring Web Services Spring LDAP Spring Framework Spring Shell Spring HATEOAS Spring Loaded Spring Social Spring BlazeDS Integration REST Shell Spring AMQP Spring Scala Spring Batch Spring Data Spring Web Flow Spring Roo 2013年 Spring Security Spring Integration Spring for Android Spring 4.0 Spring MobileSpring Tool Suite
  52. 52. Spring Web Services Spring Boot Spring LDAP Spring Framework Spring Shell Spring HATEOAS Spring SessionSpring Loaded Spring Social Spring BlazeDS Integration REST Shell Spring AMQP Spring IO Platform Spring Cloud Spring Scala Spring Batch Spring DataSpring Mobile Spring Web Flow Spring Roo 2015年 Spring Security Spring Integration Spring XD Spring for Android Spring 4.2 Spring REST Docs Spring Statemachine Spring Tool Suite
  53. 53. 軽量? 重厚で複雑なEJBの アンチテーゼだったのでは...
  54. 54. 新たな取り組み Spring Boot Spring IO Platform あっという間に 開発・動作確認 できる環境構築 ライブラリの バージョン管理 と依存関係管理
  55. 55. Java EE 一方
  56. 56. Java EE 5 • EJBのアーキテクチャを刷新 • EJB 3.0 • Common Annotations 1.0 • JPA 1.0 など 2006年
  57. 57. Glassfish 1.0リリース • Java EE 5に完全準拠 • JBoss、Weblogicも続く
  58. 58. Java EE 6 • DI、AOPも標準仕様に • Dependency Injection for Java 1.0 • Interceptors 1.1 • JAX-RS 1.1 など 2009年
  59. 59. Java EE 7 • Spring Batchを参考にしたJBatchも 標準仕様に • Batch Applications for the Java Platform • Java API for JSON Processing • Java API for WebSocket など 2013年
  60. 60. Java EE/AS/FWの関係性 (2) Spring Batch JBatch DI、AOP JPA Servlet … Java EE JSR Spring FW Hibernate JSR FWの仕様を参考にいいものを標準仕様として取り込む JSR
  61. 61. OSSのFWのいいとこ取りをして、 大きくなるJava EE。 Java EEコンテナがあれば、フ レームワークは要らない??
  62. 62. No. Java EEの仕様策定期間と、それから コンテナが実装するまでに4年程度の 遅れがあるため、今後も新しい機能 はFWが先に実装していくはず。
  63. 63. No. Java EEコンテナ または サーブレットコンテナ+各種FW
  64. 64. Spring or Java EE JBoss Webサーバー …Servlet JSP …JAAS Batch JSF Inter- cepters DI Tomcat + Spring FW + Springサブモジュール Webサーバー …Servlet JSP Spring MVCAOP DI Spring Batch Spring Security … Webプロ ファイル フルプロ ファイル
  65. 65. 今日のテーマ • Springって何? • Java Webアプリ開発の歴史とSpring • 現在のSpringプロジェクトの概要
  66. 66. Springのプロダクトを以下 の観点で比較 • Googleの検索件数 • 規模 •ソースコードの行数 •GitHubの★数 •GitHubの開発者数 • 現状と今後の見通し(Google Trends)
  67. 67. コードの行数の比較 プロジェクトの規 模も様々
  68. 68. Google検索件数の比較
  69. 69. GitHubの★数の比較
  70. 70. GitHubの開発者数の比較
  71. 71. Google Trends 人気度の動向には、 プロジェクト毎に 大きな差がある
  72. 72. 現状と今後の見通し(予想) Spring Boot ◎ ↗↗ Spring REST Docs × ↗ Spring Data ◎ ↗ Spring HATEOAS × ↗ Spring Framework ◎→ Spring Shell ×→ Spring Security ◎→ Spring IO Platform ×→ Spring Cloud ○ ↗ Spring for Android ×→ Spring Loaded ○→ Spring Mobile ×→ Spring Integration ○→ Spring AMQP ×→ Spring Batch ○→ Spring Scala ×→ Spring Session △→ REST Shell ×→ Spring Social △→ Spring Statemachine ×→ Spring Spring Web Flow △ ↘ Spring Flo ×→ Spring LDAP △ ↘ Spring for Apache Kafka ×→ Spring Web Services △ ↘ Spring XD × ↘ Spring Roo △ ↘↘ Spring BlazeDS Integration × ↘
  73. 73. 主なプロジェクトを紹介
  74. 74. Spring Boot 最小限の設定で商用レベルのSpringアプリ ケーションの開発を可能にする。手軽さが 受けて、世界中で人気。 •スター数 :12,037 •開発者数 :340 •初版リリース:2014年
  75. 75. •DI •AOP Google trendsの結果
  76. 76. Spring Bootの特徴 • 豊富なサンプルから必要なものを選 び、その定義をpom.xmlに追記して、 mvnコマンド実行 →あっという間にSpring FWベース のサンプルアプリが起動し、開発環 境もでき上がる
  77. 77. Spring Bootの特徴 • AS不要(AS組み込みのjarで起動) • 設定を簡略化する仕組み • Webアプリ以外(バッチ等)も可能
  78. 78. Spring Bootを使った開発 • STSとSpring Bootを使った開発の デモを行います • Spring Loadedでソースコードの修 正が即時反映されることにも注目
  79. 79. DEMO
  80. 80. Spring Data RDBMS、NoSQL、マップリデュース、お よびそれらの範囲を超える一貫したデータ アクセスへのアプローチを提供 。 •スター数 :7, 789 •開発者数 :515 •初版リリース:2011年
  81. 81. Google trendsの結果
  82. 82. Spring Dataのサブモジュール • Spring Data Commons • Spring Data Gemfire • Spring Data JPA • Spring Data KeyValue • Spring Data LDAP • Spring Data MongoDB • Spring Data REST • Spring Data Redis • Spring Data Cassandra • Spring Data Solr • Spring Data Aerospike • Spring Data Couchbase • Spring Data DynamoDB • Spring Data Elasticsearch • Spring Data Hazelcast • Spring Data Neo4j • Spring Data JDBC Extensions • Spring Data Hadoop
  83. 83. Spring Cloud 分散環境でアプリを構築するためのツール やFWの集合。 •スター数 :3,802 •開発者数 :706 •初版リリース:2014年
  84. 84. Google trendsの結果
  85. 85. Spring Cloudの特徴 • サブプロジェクトの中で最大規模 • 70以上のサブプロジェクトがあり、 spring-projects配下から独立。 • 現時点では日本での利用は少なそう だが、これから流行りそうな予感。
  86. 86. Spring Security 認証と認可を実現するFW(大雑把に言うと ServletFilter)。 •スター数 :4,050 •開発者数 :261 •初版リリース:2008年
  87. 87. Google trendsの結果
  88. 88. Spring Securityの特徴 • 多くの認証方式に対応 • LDAP • クライアント証明書 • SAML • OAuth • OpenID 等(※OpenID Connect未対応) • セッション固定攻撃、CSRF防止等
  89. 89. Spring Batch バッチアプリケーションの開発を効率化す るために設計された、軽量で包括的なバッ チフレームワーク。 •スター数 :1,009 •開発者数 :79 •初版リリース:2008年
  90. 90. Google trendsの結果
  91. 91. Spring Batchの特徴 • バッチアプリ開発のデファクト • バッチ処理に必要な一連の機能を実装 •トランザクション管理 • 並列化による大量データの高速処理 • ジョブ管理 など • JBatch(Java EE)の原型
  92. 92. Spring Integration 様々な外部サービスと連携ができるEIP開発 をサポートするFW。 •スター数 :2,384 •開発者数 :195 •初版リリース:2008年
  93. 93. Google trendsの結果
  94. 94. Spring Integrationの特徴 • EIP (Enterprise Integration Pattern) • 企業のシステム統合などが目的 • 様々な送受信先 •AMQP、ファイル、FTP、GemFire、 HTTP、RDB、NoSQL、RMI、メール ...
  95. 95. 最後に
  96. 96. 今後のSpringについて
  97. 97. Strutsは死んだのか?
  98. 98. • 新規開発で使われることはほぼ無い • しかし、過去のデファクトは今でも 多くのシステムで稼働している • 未だに問い合わせはたくさん来る (脆弱性の質問ばかりだけど...)
  99. 99. Springは生き残るのか? Springは生き残るのか?
  100. 100. • いい技術はJava EEに取り込まれるが... • Springは長期間デファクト • Spring Rooのように失速するものも • Spring BootでSpringが再加速 • コアを大きくせず、モジュールを増や しているので、今後も形を変えながら生 き残ると予想
  101. 101. 2017/07 Spring 5.0 リリース
  102. 102. 興味がある方は
  103. 103. ありがとうございました

×