SlideShare a Scribd company logo
1 of 28
Spring
Framework
が大好きなおはなし
Future Architect
木佐貫 智
本日お伝えしたいこと
 Framework war is Over !?
 SpringはOracle 公認 !?
 Spring Frameworkはすごく楽しい
 カジュアルに旬のテクノロジーを採用できる
2イントロダクション(1/3)
Java Frameworkのおさらい
フレームワーク 開発元 特徴
Spring Framework Pivotal
(DELL/VMWare
傘下)
Spring MVC, DI/AOP, RESTful,
トランザクション マネジメント、メッセージング
他のOSSとの連携に優れている
Java EE Oracle Webアプリケーションを開発するためのライブラリ、
フレームワーク、アプリケーションサーバの仕様の策定
Play Framework Zengularity
(フランスの会社)
ステートレス・アーキテクチャ(サーバに情報を持たない)
Reactive Stream
Struts Apache
Foundation
2008年に開発終了
Viewとロジックの分離に成功したフレームワーク
XMLにバリデーション、URLマッピングを行う
3イントロダクション(2/3)
Spring Project の紹介
4
プロジェクト名 特徴
Spring Framework Spring MVC, DI/AOP, RESTful, トランザクション マネジメント、メッセージング
他のOSSとの連携に優れている
Spring Boot よりカジュアルにWebアプリケーションを作成できるようにするためのフレームワーク
設定ファイルをXMLではなく、コードで書けるようにしている
Spring Security 認証・認可を行うための巨大なサーブレット・フィルター
セキュリティを担保するための機能も充実(CSRF対策・XSS対策)
Spring Cloud AWS Amazonのサービス(SQS・ElastiCache・S3)をSpring Wayで記述できるように
したライブラリ群
Spring Cloud Netflix マイクロサービスを実現するためには、複数のデザインパターンを用いる必要があるが、
デザインパターンの適応が即座にできるようにしたライブラリ群
Spring Data Gemfire インメモリデータグリッド(Pivotal GemFire)を扱うためのライブラリ群
Spring Integration Enterprise Integration Patternsを適応したフレームワーク
プロトコル変換、フィルター、変換、Publish/Subscribe
Spring AMQP RabbitMQを扱うためのライブラリ
Spring XD リアルタイム解析、バッチ処理、データ収集をシンプルにするためのアプリケーション
イントロダクション(3/3)
なぜ、季節の名前なの?
5Framework war is Over !? (1/10)
冬のJ2EE 時代(1999~2006)
~フレームワーク戦争の原点 ~
6Framework war is Over !? (2/10)
フレームワーク戦争に春が訪れた?
7Framework war is Over !? (3/10)
フレームワーク戦争に春が訪れた?
8
Oracle
Framework war is Over !? (4/10)
フレームワーク戦争に春が訪れた?
9
Oracle
Duke
Framework war is Over !? (5/10)
フレームワーク戦争に春が訪れた?
10
Oracle
Duke
Spring Boot !!
Framework war is Over !? (6/10)
フレームワーク戦争の勝利者は!?
11
The fact that Spring has
essentially won the framework
wars
Java Magazine 英語版 Framework war is Over !? (7/10)
フレームワーク戦争の勝利者は!?
12
Java Magazine 日本語
Spring が大人気のサード・パーティ・
フレームワークとして頭角を・・・
Framework war is Over !? (8/10)
Google先生に聞いてみた
13Framework war is Over !? (9/10)
諸説あるようです
14Framework war is Over !? (10/10)
Java EE リリースは遅い
~Java SEリリースの2年遅れ~
15
出典:初めてのJava EE 6──第1回 Java EEとは、
どのようなフレームワークか?(ZDNet)
Java SE7
2011年3月
Java SE6
2006年12月
J2SE 5.0
2004年9月
J2SE 1.4
2002年2月
J2SE 1.3
2002年2月
J2SE 1.2
1998年12月
J2SE 1.1
1997年2月
Spring Framework は楽しい・筋が良い技術(1/11)
Java EE リリースは遅い
~Java SEリリースの2年遅れ~
16
出典:初めてのJava EE 6──第1回 Java EEとは、
どのようなフレームワークか?(ZDNet)
Java SE7
2011年3月
Java SE6
2006年12月
J2SE 5.0
2004年9月
J2SE 1.4
2002年2月
J2SE 1.3
2002年2月
J2SE 1.2
1998年12月
J2SE 1.1
1997年2月
Java SE8
2014年3月
Java EE8
2016 4Q?
使ってみたい技術
はあるけど、リリー
スされない・・・
2,3年前に規格さ
れた技術は忘れ
る・・・
何年も前にSpring
で実装済み・・・
MVC1.0
& HTTP/2
Spring Framework は楽しい・筋が良い技術(2/11)
Spring は Java9 Ready
Java SEと同じリリースタイミング
17
Spring JIRA
Java9
Spring Framework は楽しい・筋が良い技術(3/11)
18
Java9
Q4 2016
Q4 2016
Spring JIRA Spring Framework は楽しい・筋が良い技術(4/11)
Spring は Java9 Ready
Java SEと同じリリースタイミング
19
Java9
Q4 2016
Q4 2016
開発遅延で・・・
Q1 2017
Spring JIRA Spring Framework は楽しい・筋が良い技術(5/11)
Spring は Java9 Ready
Java SEより早くリリース!????
フライング
リリース!??
( OpenJDK利用? )
SpringをJava EEが標準仕様として認める
~ 筋の良い技術は生き残る ~
Java EE
Spring FrameworkとJava EEの関係
バージョン 機能 リリース
Java EE 8 MVC1.0 4Q 2016
Spring MVCを標準化した仕様
Spring MVC 3.1 は 1Q 2012 リリース
Java EE 7 jBatch 2Q 2013
Spring Batchを標準化した仕様
Spring Batch 2.1 は 2010 リリース
Java EE 6 DI/AOP 2Q 2009
Spring DI/AOP, Google Guiceを標準化し
た仕様
DI/AOPは、2005年ごろ
20Spring Framework は楽しい・筋が良い技術(6/11)
エンタープライズITを構築するための
豊富なプロジェクト
21
プロジェクト名 特徴
Spring Framework Spring MVC, DI/AOP, RESTful, トランザクション マネジメント、メッセージング
他のOSSとの連携に優れている
Spring Boot よりカジュアルにWebアプリケーションを作成できるようにするためのフレームワーク
設定ファイルをXMLではなく、コードで書けるようにしている
Spring Security 認証・認可を行うための巨大なサーブレット・フィルター
セキュリティを担保するための機能も充実(CSRF対策・XSS対策)
Spring Cloud AWS Amazonのサービス(SQS・ElastiCache・S3)をSpring Wayで記述できるように
したライブラリ群
Spring Cloud Netflix マイクロサービスを実現するためには、複数のデザインパターンを用いる必要があるが、
デザインパターンの適応が即座にできるようにしたライブラリ群
Spring Data Gemfire インメモリデータグリッド(Pivotal GemFire)を扱うためのライブラリ群
Spring Integration Enterprise Integration Patternsを適応したフレームワーク
プロトコル変換、フィルター、変換、Publish/Subscribe
Spring AMQP RabbitMQを扱うためのライブラリ
Spring XD リアルタイム解析、バッチ処理、データ収集をシンプルにするためのアプリケーション
Spring Framework は楽しい・筋が良い技術(7/11)
どんな技術もSpring Wayで
カジュアルに扱える
 非同期もアノテーションで簡単実装
22
@Asyncって書くだけ
Spring Framework は楽しい・筋が良い技術(8/11)
どんな技術もSpring Wayで
カジュアルに扱える
 RabbitMQ(再実行担保の非同期)も簡単に
23Spring Framework は楽しい・筋が良い技術(9/11)
どんな技術もSpring Wayで
カジュアルに扱える
 RabbitMQ(再実行担保の非同期)も簡単に
24Spring Framework は楽しい・筋が良い技術(10/11)
リアルタイム集計は、
Spring XD で Spark をカジュアルに
 ウインドウ集計(例:5分間隔の売上)はSparkで
25Spring Framework は楽しい・筋が良い技術(11/11)
Spring Projectは
書籍・ドキュメントが豊富です
26クロージング(1/3)
NTTデータ
開発ガイドライン
Spring 公式
ドキュメント
Future コンポーネントの
アーキテクチャ理解にも最適
27
NTTデータ
開発ガイドライン
Spring 公式
ドキュメント
クロージング(2/3)
トランザクションスコープを考慮
して記載しており、オススメ
より良いエンタープライズITを
Springを駆使して作ってみませんか?
28クロージング(3/3)

More Related Content

What's hot

JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
y torazuka
 
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
Atsushi Nakamura
 
試験にでるSpring
試験にでるSpring試験にでるSpring
試験にでるSpring
土岐 孝平
 

What's hot (20)

JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
JJUG CCC 2013 Fall「JVMコードリーディング入門-JVMのOS抽象化レイヤーについて-」
 
今さら聞けないDiとspring
今さら聞けないDiとspring今さら聞けないDiとspring
今さら聞けないDiとspring
 
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
 
Pivotal認定講師によるSpring Framework 5.1 & Spring Boot 2.1ハンズオン! #jjug_ccc
Pivotal認定講師によるSpring Framework 5.1 & Spring Boot 2.1ハンズオン! #jjug_cccPivotal認定講師によるSpring Framework 5.1 & Spring Boot 2.1ハンズオン! #jjug_ccc
Pivotal認定講師によるSpring Framework 5.1 & Spring Boot 2.1ハンズオン! #jjug_ccc
 
Yahoo! JAPANにおけるApache Cassandraへの取り組み
Yahoo! JAPANにおけるApache Cassandraへの取り組みYahoo! JAPANにおけるApache Cassandraへの取り組み
Yahoo! JAPANにおけるApache Cassandraへの取り組み
 
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersApache Avro vs Protocol Buffers
Apache Avro vs Protocol Buffers
 
Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理Apache Hadoop YARNとマルチテナントにおけるリソース管理
Apache Hadoop YARNとマルチテナントにおけるリソース管理
 
Mavenの真実とウソ
Mavenの真実とウソMavenの真実とウソ
Mavenの真実とウソ
 
オトナのDocker入門
オトナのDocker入門オトナのDocker入門
オトナのDocker入門
 
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
 
これから始めるSpringのwebアプリケーション
これから始めるSpringのwebアプリケーションこれから始めるSpringのwebアプリケーション
これから始めるSpringのwebアプリケーション
 
試験にでるSpring
試験にでるSpring試験にでるSpring
試験にでるSpring
 
Spring Framework ふりかえりと4.3新機能
Spring Framework ふりかえりと4.3新機能Spring Framework ふりかえりと4.3新機能
Spring Framework ふりかえりと4.3新機能
 
はじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタはじめてのElasticsearchクラスタ
はじめてのElasticsearchクラスタ
 
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version - ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
ビッグデータ処理データベースの全体像と使い分け - 2017年 Version -
 
PHPでマルチスレッド
PHPでマルチスレッドPHPでマルチスレッド
PHPでマルチスレッド
 
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug実運用して分かったRabbit MQの良いところ・気をつけること #jjug
実運用して分かったRabbit MQの良いところ・気をつけること #jjug
 
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
え、まって。その並列分散処理、Kafkaのしくみでもできるの? Apache Kafkaの機能を利用した大規模ストリームデータの並列分散処理
 
入社1年目のプログラミング初心者がSpringを学ぶための手引き
入社1年目のプログラミング初心者がSpringを学ぶための手引き入社1年目のプログラミング初心者がSpringを学ぶための手引き
入社1年目のプログラミング初心者がSpringを学ぶための手引き
 
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
Apache Sparkに手を出してヤケドしないための基本 ~「Apache Spark入門より」~ (デブサミ 2016 講演資料)
 

Similar to Spring frameworkが大好きなおはなし

Pure JavaEE or Spring #glassfishjp
Pure JavaEE or Spring #glassfishjpPure JavaEE or Spring #glassfishjp
Pure JavaEE or Spring #glassfishjp
Toshiaki Maki
 
Beginning Java EE 6 勉強会(1) #bje_study
Beginning Java EE 6 勉強会(1) #bje_studyBeginning Java EE 6 勉強会(1) #bje_study
Beginning Java EE 6 勉強会(1) #bje_study
Toshiaki Maki
 
福井イベント
福井イベント福井イベント
福井イベント
Yoshio Terada
 

Similar to Spring frameworkが大好きなおはなし (20)

株式会社インタースペース 沖本様 登壇資料
株式会社インタースペース 沖本様 登壇資料株式会社インタースペース 沖本様 登壇資料
株式会社インタースペース 沖本様 登壇資料
 
Apex Test Plusの紹介
Apex Test Plusの紹介Apex Test Plusの紹介
Apex Test Plusの紹介
 
Pure JavaEE or Spring #glassfishjp
Pure JavaEE or Spring #glassfishjpPure JavaEE or Spring #glassfishjp
Pure JavaEE or Spring #glassfishjp
 
Play jjug2012spring
Play jjug2012springPlay jjug2012spring
Play jjug2012spring
 
JJUG CCC 2015 Fall keynote
JJUG CCC 2015 Fall keynoteJJUG CCC 2015 Fall keynote
JJUG CCC 2015 Fall keynote
 
110409 slintky lt
110409 slintky lt110409 slintky lt
110409 slintky lt
 
今年はJava進化の年!今知っておくべき新しいJava
今年はJava進化の年!今知っておくべき新しいJava今年はJava進化の年!今知っておくべき新しいJava
今年はJava進化の年!今知っておくべき新しいJava
 
Java EE 再入門
Java EE 再入門Java EE 再入門
Java EE 再入門
 
Play!framework2.0 introduction
Play!framework2.0 introductionPlay!framework2.0 introduction
Play!framework2.0 introduction
 
Spring.project
Spring.projectSpring.project
Spring.project
 
Spring framework
Spring frameworkSpring framework
Spring framework
 
PlayFramework1.x基礎編
PlayFramework1.x基礎編PlayFramework1.x基礎編
PlayFramework1.x基礎編
 
Beginning Java EE 6 勉強会(1) #bje_study
Beginning Java EE 6 勉強会(1) #bje_studyBeginning Java EE 6 勉強会(1) #bje_study
Beginning Java EE 6 勉強会(1) #bje_study
 
Scalaでのプログラム開発
Scalaでのプログラム開発Scalaでのプログラム開発
Scalaでのプログラム開発
 
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
[TL04] .NET 15 周年の今こそ考えるクラウドネイティブ アプリケーションと .NET の活用
 
[ダウンロード推奨]OOW2017 and Javaone2017 report Daisuke Nishino(Sompo Systems)
[ダウンロード推奨]OOW2017 and Javaone2017 report Daisuke Nishino(Sompo Systems)[ダウンロード推奨]OOW2017 and Javaone2017 report Daisuke Nishino(Sompo Systems)
[ダウンロード推奨]OOW2017 and Javaone2017 report Daisuke Nishino(Sompo Systems)
 
20130511 jjug ccc講演 さらばjsp JAXBとmixer2
20130511 jjug ccc講演 さらばjsp JAXBとmixer220130511 jjug ccc講演 さらばjsp JAXBとmixer2
20130511 jjug ccc講演 さらばjsp JAXBとmixer2
 
Java SE 再入門
Java SE 再入門Java SE 再入門
Java SE 再入門
 
福井イベント
福井イベント福井イベント
福井イベント
 
Groovyコンファレンス
GroovyコンファレンスGroovyコンファレンス
Groovyコンファレンス
 

Spring frameworkが大好きなおはなし

Editor's Notes

  1. フューチャーアーキテクト 木佐貫です。 石橋さんの後でとても緊張しておりますが、 私からは Spring Frameworkについてお話したいと思います。
  2. 7分という短い時間ですので、 ・ Framework war is Over ・ Spring Framework は凄く楽しい の2つのテーマをお伝えします。
  3. Java Frameworkのおさらいから。 Java フレームワークは複数の種類が存在致しますが、 現在、Spring / Java EE / Play Framework  が有力です。 エンタープライズITとして選択されるのは、 Spring Framework 、Java EEがあげられます。 Spring Frameworkは、VMWare傘化のPivotalという会社がメインで5-6名で作成しています。 Pivotalは、VMWareがAWS・GoogleAppエンジンのようなPaaSの世界を目指して作った組織で、 PaaSサービスを提供しています。
  4. Spring Projectについても先に説明致します。 Spring は複数のプロジエクトが存在します。 Spring Frameworkは、Springの一プロジェクトです。 Spring Frameworkは、Java EEの代替を目指して開発されていたフレームワークです。 なお、Spring Projectは50以上ありますが、 個人的に面白いと感じているプロジェクトをこちらのスライドに記載しています。 Spring Boot という言葉をお聞きすることも多いと思いますが、、 Spring Frameworkをベースに、よりカジュアルにWebアプリケーションを作成できるようにしたプロジェクトです。 他にも、 巨大サーブレットフィルターのSpringSecurity、 AWSのサービスをSpring Wayで記載できるようになる Spring Cloud AWS マイクロサービスを実現するためのライブラリ、Spring Cloud Netflix 証券系で使われる技術である、インメモリデータグリッドを簡単に扱えるSpring Data Gemfire と諸々ございます。 Spring Integrationは、Futureコンポーネントでいうと、CORE-Sに該当します。 エンタープライズのシステム連携に必要なコンポーネントを集約したプロジェクトです。 Springには、このように、さまざまなアーキテクチャに対応するためのプロジェクトがあり、 柔軟に組み合わせ、Spring Wayと呼ばれる表現で統一した書き方が出来るのが最大の魅力です。
  5. 話は変わりますが、なぜSpringと季節の名前が入っているかご存知ですか?
  6. 理由は、Javaフレームワークに冬の時代があったからです。 J2EEの仕様がまだまだ未成熟で、J2EEのアンチテーゼとして様々なフレームワークが作られていきました。 フレームワーク戦争が始まった原点です。
  7. J2EEから始まったフレームワーク戦争ですが、 戦況に大きい変化が見られました。
  8. 4月だからSpring Boot特集??
  9. 英語ページを開いてみると、、、、 Spring has won the framework wars と記載されています
  10. 日本語ページ もしかかして、私の英語力弱い!????
  11. ちょっと納得できないので、 Google 先生に訊いてみました
  12. 諸説あるようです
  13. Java EEと Spring の比較をしましょう。 Java EEは年々開発が遅れており、Java SEのリリースから二年半程度かかっております。
  14. Java EEの仕様策定から、リリースまで二年半もあきがあるため、 出たころには陳腐化しているのが現実です。。。。。
  15. Spring Framework では、新しい技術がすぐに使えるように、 JavaSEのリリースタイミングと合わせています。
  16. Java 9 のリリーススケジュールが変更となったため、 Java 9 出ていないけど、Java9対応のSpring Frameworkが出るという不思議な現象がみられるかもしれません。
  17. 標準以外のフレームワークを使って大丈夫か? と感じられると思いますが、大丈夫です。 Spring Frameworkで作り上げた仕様を、Java EEが追認しているのが実態です。 また、Java EEで策定された仕様はSpring に反映されているため、標準技術は基本的に使用できます。 Framework War is Over はこの辺りからも言われています。
  18. 何より、SpringはエンタープライズITを構築するための豊富なプロジェクトがあります。
  19. そして、どんな技術もSpring Wayでカジュアルに扱えます。 アノテーションひとつで非同期は実現出来ます。 Procinfを書く必要はありません。
  20. Rabbit MQもカジュアルに扱えます。
  21. パラメータークラスを作る必要もありません。 Procinfを書く必要はありません。 ヌルポも発生しません。
  22. リアルタイム集計は、Sparkを使いましょう。 5分当たりの売上をリアルタイムに知りたいなどは、Sparkの得意分野です
  23. 何より、Spring Projectは書籍・ドキュメントが豊富です。
  24. Springは、アーキテクチャを理解して、Spring Wayで書くのが流儀です。 Springのドキュメントはアーキテクチャを必ず説明します。 Future コンポーネントのアーキテクチャ理解にも最適です。
  25. わくわくしませんでしたか? より良いエンタープライズITを Springを駆使して作ってみませんか? ご清聴ありがとうございました。