Javaのフレームワーク
Javaのフレームワークといっても様々な物が色々なフレームワークがある。
・Struts
・JSF
・SpringBoot, SpringFramework
・PlayFramework
・Java EE
いったものがあるが今回は有名な物の中からSpringFramework、PlayFrameworkの二つについて比較した。
SpringBootの特徴
SpringBoot HomePage
Javaプラットフォーム向けのアプリケーションフレームワークであるSpring FrameworkをWebアプリケーション開発向けに特化させたものである。Spring Frameworkで必要だったConfigファイルの設定が不要であり、ほとんどの設定を自動化されており、クラスパスの指定なども不要である。
PlayFrameworkの特徴
PlayFramework HomePage
JavaとScalaで書かれているオープンソースのWebアプリケーションフレームワークであり、MVCモデルが採用されている。Ruby on RailsやDjangoの影響を大きく受けているため、これらと似た点が数多くある。
2つを評価・比較
評価基準は下記を参照
評価基準
SpringBoot
使用感
Springでは、通常MVCモデルは実装されていないため、独自性が高い使用感となる。ただし、プラグインである「SpringMVC」を使用することでMVCモデルでの開発することができる。
拡張性
Springでは、STSというSpring専用のIDEが存在するが、プラグインの具対数は不明。しかし専用のIDEが存在するため、拡張性は非常に高い。
日本語資料数
Springの資料数は約130件だったため標準である。
PlayFramework
使用感
PlayFrameworkはMVCモデルを使用しているため、使用感は一般的である。またJavaの言語知識がなくてもプログラム構造が理解できる。
拡張性
Playframeworkではプラグインの具対数は出てこなかった。またプラグインの利用方法など記述されていなかったため、フレームワークの拡張性は低い。
日本語資料数
Playframeworkの資料数は約105件だったため標準である。
2つのフレームワークのセキュリティ
Javaのフレームワークでは、Playセキュリティレベル2、Springがセキュリティレベル4という結果なった。この結果からPlayはセキュリティ水準が高く、Sprigはセキュリティ水準が低いと言える。SpringはSQLインジェクションがリスクレベルhighで検出された。ユーザ自身で、エスケープ処理で対策する必要がある。
Playはリスクレベルhighの、脆弱性は検出されなかった。Playはバージョン1.0.1以降のテンプレートでは、自動的にエスケープ処理を行ってくれる仕様となっており、application.confファイルでescapelnTemplates有効にすることで自動エスケープ処理を行ってくれる。そのため、クロスサイトスクリプティングやSQLインジェクションといった脆弱性に強いと言える。自動的に行ってくれる点から開発者が意識しなくてもセキュリティ対策を施してくれるため、Springよりもセキュリティレベルが高い。
総合比較
今回の評価結果から、フレームワークでとりあえずWebアプリケーションを開発したいのなら「PlayFramework」を薦める。拡張性があまりなく、多機能ではないが、その分Webアプリケーションに特化しており、使用しやすいだろうと考える。
また、高機能でセキュリティや、ネイティブアプリケーション開発に重点を置いた開発するならSpringBootをおすすめする。SpringBoot以外に様々なプラグインや別のフレームワークが存在する。そのためすべてと互換性を持つため、開発の幅が広い。それらを組み合わせて高機能なアプリケーションを開発したい、言語知識が高い人はSpringBootを薦める。