< 前 >
- CGI使用
- マルチスレッドができなくて要請が来る度に毎回新しいプロセスを生成しなければならなかった。
< Servlet, 1997>
- 長所:マルチスレッド支援→要請が来る度に新しいスレッドを生成すれば良い。
- 短所:画面の機能や構成が複雑になるにつれ、ユーザーを考慮する画面要求事項もますます増える
しかし、Javaコードで画面を作らなければならず、HTML生成が難しかった。
< JSP, 1999 >
- 長所:HTML、CSS、JavaScriptを基盤にJSP要素を使用して画面を具現する
- 短所:HTML生成は便利だが、ビジネスロジックまであまりにも多くの役割を担う
- モデル、ビュー、コントローラに役割を分けて開発
- 画面に関連する部分はJSPのようなビュー側のコードをコピーして、ビジネスロジックと関連した部分であれば、JavaコードやServletの方を直す方法で関心事を分かち合う
<数多くのMVCフレームワークが登場.. >
- ウェブが爆発的に成長した時期でしたが、メンテナンスに関する問題も多く、標準化が必要となり、様々なFrameworkが登場した。
- ex.EJB, Struts
< Spring Framework, アノテーションベースのスプリングMVC登場, 2004 >
- メンテナンスが楽になり、生産性も高めるようになった。
- ジャワ言語の最大の特徴であるオブジェクト指向をうまくできるように助けるフレームワークだ。
< Springboot, 2017 >
- Springの設定をさらに簡便にできるようにした。
- サーバーを内蔵しており、別にトムキャット設置をしなくてもよい。
- ビルド結果(Jar)にWASサーバを含め、ビルド配布が単純となった。
- (過去にはサーバにWASを直接インストールし、ソースはWarファイルを作成してインストールしたWASに配布していた)
- ただし、JSPを推奨していないが、あえて書く必要がある場合は、パッキングをwarに設定する必要がある。
<スプリングウェブ技術の分化>
- Web Servlet - Spring MVC
- サーブレットの上で動作してHttpServletRequest、HttpServletResponseを使用することができる。
- マルチスレッドが使用できる。
- Web Reactive - Spring WebFlux
- 完全な非同期ノンブロッキング処理を行う。
- 最小スレッドで最大性能を出す。
- cpuコアが4つあれば、スレッド数を4つ、5つ程度とする。
- そうするとスレッドは戻り続けることができるようになり、Context Switchingの費用がほとんどかからない。
- 関数型スタイルで開発するため、同時処理のコードが非常に効率化される。
- 複数のサーバーからデータを持ってきて組み合わせなければならない場合、コードが非常にきれいになる。
- サーブレット技術を使わない。
- Netty というウェブフレームワークで実現する。
- まだRDB支援不足、実務で多く使う方ではない
- 性能がとても重要で、複雑な時に効果があり、その他はほとんどMVCモデルで解決すれば良い。