Javaでシステムを開発するにあたり、フレームワーク選びは重要なポイントのひとつだ。
しかし、Javaフレームワークには種類が多々あるため、どのフレームワークが良いのか迷ってしまうこともある。
そこでこのページでは、代表的なフレームワークから注目のフレームワークまで、10種類のフレームワークをまとめて紹介していこう。
目次
Javaフレームワーク10選
フレームワークとはシステム構築に便利な機能やライブラリや構成などがまとまった骨格だ。これを使えば、「正しい構成」のプログラムが初心者の方でもすぐに作れる。
下記のページではJava以外の言語に関してフレームワークをまとめている。こちらもご参考に。
それでは、本題のJavaフレームワークをまとめてご紹介していく。
Spring Framework
https://projects.spring.io/spring-framework/
フレームワークの概要
Spring Frameworkは2003年にRod Johnsonによって開発された、DI(Dependency Injection)コンテナと呼ばれる、環境に依存する機能を外部から提供可能とする方法が特徴的なオープンソースのフレームワークだ。
フレームワークの特徴
Springはオブジェクトの関連付け、生成、登録などを管理する「Coreモジュール」、JavaBeansへのアクセス機能を提供する「Context モジュール」、MVCモデルでの開発を提供する「Web MVCモジュール」など7種類のモジュールで構成されている。
また、Springフレームワーク自体が多数のプロジェクトから構成されている。中でもSpring Bootは、Webアプリケーション開発環境を手軽に構築でき、多くのエンジニアから支持されている。
SpringはWebアプリケーションだけでなく、Javaプラットフォームで動作するさまざまなアプリケーションに適用することができるフレームワークだ。
現在のJava開発においては、Springを採用しているシステムは非常に多い。使い勝手もいいので、覚えておいて損はない。
Play Framework
https://www.playframework.com/
フレームワークの概要
Play FrameworkはGuillaume Bortによって開発されたWebアプリケーションフレームワークだ。Javaだけでなく、ScalaというJavaと親和性の高い言語でも使用することができる。
フレームワークの特徴
Play FrameworkはRubyのフレームワークである「Ruby on Rails」、pythonのフレームワークである「Django」に大きく影響を受けたフレームワークで、軽量さと高い生産性が特徴だ。JavaのWebアプリケーション標準仕様であるJ2EEに準拠しておらず、ServletやJSPを使わずに新しいアプローチでのアプリケーション構築を行うことができる。
また、動作時に使用するCPUリソースやメモリ使用量も少ないため、ハードウェアの負担をおさえたシステムの構築ができるのも特徴だ。
JSF(Java Server Faces)
https://javaserverfaces.java.net/
フレームワークの概要
JSFは2004年に開発されたJavaベースのWebアプリケーションフレームワークで、JavaEEの仕様にも採用されているJavaの標準フレームワークだ。
フレームワークの特徴
Strutsと同じくMVCモデルを採用したフレームワークだが、StrutsのようにURLによってアクション(プログラム)が決まる「アクションベースフレームワーク」ではなく、表示する画面に対応するサーバーサイドのクラス(バッキングBean)によって処理が行われる「コンポーネントベースフレームワーク」という違いがある。
また、MVCモデルのView(表示)にはJSPで実装されるケースが多いが、JSFは「XHTML」というXML形式のHTMLで実装される。JSPはサーブレットの処理なしでは正しく表示されないが、XHTMLの場合はブラウザでそのまま表示されるので、デザインの確認がしやすいフレームワークという特徴も持っている。
SAStruts(Super Agile Struts)
フレームワークの概要
SAStrutsは日本のオープンソースプロジェクトであるSeaserプロジェクトがStrutsをベースとして開発されたフレームワークだ。
フレームワークの特徴
Strutsを使った開発では設定ファイルの設定が煩雑になりがちであるが、SAStrutsでは設定ファイルの自動生成機能により、設定ファイルの設定作業に必要な時間が大幅に軽減されるのが特徴だ。
また、プログラムを書き換えた場合にはアプリケーションサーバーの再起動が必要な場合が多いが、SAStrutsではホットデプロイ機能によりアプリケーションサーバーの再起動をすることなく実行できる。これにより、スピーディーなプログラミングを行うことができるのだ。
Struts
フレームワークの概要
StrutsはJavaでもっとも有名なフレームワークだろう。
Apacheソフトウェア財団によって開発されているWebアプリケーションフレームワークだ。2000年に初期バージョンが開発され、現在では別バージョンとなるStruts2もリリースされている。
フレームワークの特徴
StrutsはMVCモデルを採用したフレームワークだ。MVCとは「Model View Controller」の略で、ビジネスロジックを管理する「Model」、表示を行う「View」、ユーザーからの入力を受け取りModelとViewに命令する「Controller」という概念で構成されている、アプリケーションデザインパターンの手法を意味する。
Strutsの特徴は独自のカスタムタグの利用や、Actionクラスとstruts-config.xmlでの画面遷移の管理、バリデータ(入力チェック)機能の提供などが挙げられる。
Struts2ではアノテーションによる設定ファイルの削減や、DIコンテナ機能による外部ファイルでクラスの依存関係を設定できるなどの改良が加えられている。
フレームワークとしての歴史が古い分、Strutsを使用したシステムは多く存在するが、脆弱性の発見などによって別のフレームワークに移行するユーザーも増えている。Strutsでシステム構築するにあたっては、脆弱性を把握したうえで構築するようにしよう。
Apache Wicket
フレームワークの概要
Apacheソフトウェア財団が提供しているApache Wicketは2005年に開発されたWebアプリケーションフレームワークだ。「Wicket」とは、「小さい門」「窓口」などを意味する。
フレームワークの特徴
他のフレームワークは出来るだけソースコードの記述を抑えようと、設定ファイルなどにアプリケーション設定を書くことで作業負担を減らそうと言う傾向があるが、Apache WicketではそのほとんどをJavaで記述するという特徴がある。
実際にシステムを作るにはJavaだけでなくServlet、JSP、設定ファイルなど多くの設定が必要で煩雑になるケースが多いが、Apache Wicketでは基本的にJavaさえ知っていればシステム構築ができる。設定ファイルもweb.xmlだけで済むので、シンプルにJavaによる開発をしたい場合におすすめのフレームワークだ。
Dropwizard
フレームワークの概要
DropwizardはアメリカのSNSであるyammerのWebサービス提供のために作られた、比較的新しいフレームワークだ。
フレームワークの特徴
サーブレットコンテナ「jetty」が組み込まれているため、tomcatなどのアプリケーションサーバーを準備する必要がない。また、多くのWebシステムでは動作時に複数のJARファイルというコンパイルされたJavaの圧縮ファイルが必要になるが、Dropwizardでは1つのJARファイルだけで動作することができる。
新しいフレームワークで日本での使用事例はまだまだ少ないが、近年注目を集めているフレームワークのひとつだと言える。
ZK
フレームワークの概要
ZKはブラウザとWebサーバの非同期通信を行うAjaxを取り入れた、AjaxWebアプリケーションフレームワークだ。
フレームワークの特徴
ZKはMVCモデルで言うところのViewの部分である「プレゼンテーション層」の開発効率を高めるフレームワークだ。ユーザーインターフェースが豊富で、画面で発生したボタンクリックなどのイベントはAjaxで管理されている。ZKを使った開発の際にはJavaScriptの知識は必要となるが、Ajaxを多用するシステムを構築するなら、ZKは選択肢のひとつとなるだろう。
Ninja web framework
http://www.ninjaframework.org/
フレームワークの概要
Ninja web frameworkは2012年に登場したフルスタックのWebマイクロフレームワークだ。
フレームワークの特徴
手軽にWebアプリケーションを作成することができ、シンプルなプログラミングモデルも特徴。
マイクロフレームワークとは、あらゆる開発に対応できるとは限らないが、軽量かつ迅速な開発が可能なフレームワークのことで、Ninja web frameworkも例にもれず短いサイクルでのシステム開発を行うことが可能だ。
Spark Framework
フレームワークの概要
最後に紹介するのはNinjaと同じくマイクロフレームワークであるSpark Frameworkだ。GitHubの統計ではこのSpark Frameworkがマイクロフレームワークの中でも人気が高い。
フレームワークの特徴
Spark Frameworkはシンプルなプログラミングや迅速なシステム開発を行うことができるフレームワークだ。膨大なアノテーション記述や設定ファイルが不要な構成となっており、開発者の負担は大幅に軽減されている。
必要最小限の機能しか実装されていないため、大規模Webシステムの構築には不向きだと言えるが、中~小規模のWebシステムであれば問題なく使えるだろう。
なお、同じ「Spark」という名のフレームワークに分散処理フレームワークである「Apache Spark」があるので、混同しないように気を付けよう。
状況に応じたフレームワーク選びを
このページでは10種類のJavaフレームワークを紹介した。
基本的にはどのフレームワークでもさまざまなシステムに対応できるが、フレームワークによってコーディング内容や設定などの作業量に大きく差が出ている。
フレームワークを選ぶ際には、開発スケジュールや対応できる技術者の人数、そしてメンテナンス性などを考慮したうえで選ぶようにしよう。
この度はWebアプリケーション開発を効率化する新Javaフレームワーク「LaBee Framework」を公開しました。
LGPLライセンスでソースコードをオープンソース公開しており、個人・企業問わずどなたでも無償で利用出来ます。
特徴として
高機能な入力(イベントドリブン呼び出し)、出力(様々なレスポンス種類)を簡単なコードを書くだけでMVC動作を実現出来てしまいますので 実装者はビジネスロジックの中身に専念して効率良く開発していく事が出来ます。
またポップアップウインドウ表示や ウインドウ間のデータ受け渡しなどWebアプリケーション画面で必要とする画面機能やSQL生成実行機能、パラメータ入力チェック機能、ログ出力機能等、様々な機能を持っています。
ご紹介ありがとうございます。リンク先の確認を随時できないため、リンクは弾くようになっております。ご了承ください。