おすすめJavaフレームワーク11選!一括まとめ

  • このエントリーをはてなブックマークに追加
  • Pocket
java-framework

Javaでシステムを開発するにあたり、フレームワーク選びは重要なポイントのひとつだ。

しかし、Javaフレームワークには種類が多々あるため、どのフレームワークが良いのか迷ってしまうこともある。

そこでこのページでは、代表的なフレームワークから注目のフレームワークまで、11種類のフレームワークをまとめて紹介していこう。

Javaフレームワーク11選

フレームワークとはシステム構築に便利な機能やライブラリや構成などがまとまった骨格だ。これを使えば、「正しい構成」のプログラムが初心者の方でもすぐに作れる。

下記のページではJava以外の言語に関してフレームワークをまとめている。こちらもご参考に。

それでは、本題のJavaフレームワークをまとめてご紹介していく。

Struts

struts

https://struts.apache.org/

フレームワークの概要

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でシステム構築するにあたっては、脆弱性を把握したうえで構築するようにしよう。

JSF(Java Server Faces)

jsf

https://javaserverfaces.java.net/

フレームワークの概要

JSFは2004年に開発されたJavaベースのWebアプリケーションフレームワークで、JavaEEの仕様にも採用されているJavaの標準フレームワークだ。

フレームワークの特徴

Strutsと同じくMVCモデルを採用したフレームワークだが、StrutsのようにURLによってアクション(プログラム)が決まる「アクションベースフレームワーク」ではなく、表示する画面に対応するサーバーサイドのクラス(バッキングBean)によって処理が行われる「コンポーネントベースフレームワーク」という違いがある。

また、MVCモデルのView(表示)にはJSPで実装されるケースが多いが、JSFは「XHTML」というXML形式のHTMLで実装される。JSPはサーブレットの処理なしでは正しく表示されないが、XHTMLの場合はブラウザでそのまま表示されるので、デザインの確認がしやすいフレームワークという特徴も持っている。

Spring Framework

spring

https://projects.spring.io/spring-framework/

フレームワークの概要

Spring Frameworkは2003年にRod Johnsonによって開発された、DI(Dependency Injection)コンテナと呼ばれる、環境に依存する機能を外部から提供可能とする方法が特徴的なオープンソースのフレームワークだ。

フレームワークの特徴

Springはオブジェクトの関連付け、生成、登録などを管理する「Coreモジュール」、JavaBeansへのアクセス機能を提供する「Context モジュール」、MVCモデルでの開発を提供する「Web MVCモジュール」など7種類のモジュールで構成されている。

また、SpringはWebアプリケーションだけでなく、Javaプラットフォームで動作するさまざまなアプリケーションに適用することができるフレームワークだ。

Springを採用しているシステムも比較的多い。使い勝手もいいので、覚えておいて損はない。

SAStruts(Super Agile Struts)

sastruts

http://sastruts.seasar.org/

フレームワークの概要

SAStrutsは日本のオープンソースプロジェクトであるSeaserプロジェクトがStrutsをベースとして開発されたフレームワークだ。

フレームワークの特徴

Strutsを使った開発では設定ファイルの設定が煩雑になりがちであるが、SAStrutsでは設定ファイルの自動生成機能により、設定ファイルの設定作業に必要な時間が大幅に軽減されるのが特徴だ。

また、プログラムを書き換えた場合にはアプリケーションサーバーの再起動が必要な場合が多いが、SAStrutsではホットデプロイ機能によりアプリケーションサーバーの再起動をすることなく実行できる。これにより、スピーディーなプログラミングを行うことができるのだ。

Play Framework

playframework

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リソースやメモリ使用量も少ないため、ハードウェアの負担をおさえたシステムの構築ができるのも特徴だ。

Java EE(Java Platform, Enterprise Edition)

javaEE

http://www.oracle.com/technetwork/jp/java/javaee/overview/index.html

フレームワークの概要

Java EEは1999年に登場した大規模システム向けのフレームワークだ。初期のバージョンではJ2EE(Java 2 Platform, Enterprise Edition)と呼ばれていたが、バージョン5からはこの名称に変更となった。

フレームワークの特徴

言わずと知れたJava標準仕様のフレームワークで、ServletやJSP、EJBやJavaの各種APIなど、企業システムの構築に必要な機能がまとめて提供されている。標準仕様と言うと使いにくく難しいイメージを持つかも知れないが、近年では使いやすさや生産性の向上が見られている。

特に最新版のJavaEEは使い勝手がよく、人気も上がってきている。

スタンダードなJavaによる安定感のあるWebアプリケーション開発を行いたいのであれば、Java EEで開発するのが良いだろう。

Apache Wicket

apache wicket

http://wicket.apache.org/

フレームワークの概要

Apacheソフトウェア財団が提供しているApache Wicketは2005年に開発されたWebアプリケーションフレームワークだ。「Wicket」とは、「小さい門」「窓口」などを意味する。

フレームワークの特徴

他のフレームワークは出来るだけソースコードの記述を抑えようと、設定ファイルなどにアプリケーション設定を書くことで作業負担を減らそうと言う傾向があるが、Apache WicketではそのほとんどをJavaで記述するという特徴がある。

実際にシステムを作るにはJavaだけでなくServlet、JSP、設定ファイルなど多くの設定が必要で煩雑になるケースが多いが、Apache Wicketでは基本的にJavaさえ知っていればシステム構築ができる。設定ファイルもweb.xmlだけで済むので、シンプルにJavaによる開発をしたい場合におすすめのフレームワークだ。

Dropwizard

dropwizard

http://www.dropwizard.io/

フレームワークの概要

DropwizardはアメリカのSNSであるyammerのWebサービス提供のために作られた、比較的新しいフレームワークだ。

フレームワークの特徴

サーブレットコンテナ「jetty」が組み込まれているため、tomcatなどのアプリケーションサーバーを準備する必要がない。また、多くのWebシステムでは動作時に複数のJARファイルというコンパイルされたJavaの圧縮ファイルが必要になるが、Dropwizardでは1つのJARファイルだけで動作することができる。

新しいフレームワークで日本での使用事例はまだまだ少ないが、近年注目を集めているフレームワークのひとつだと言える。

ZK

zk

https://www.zkoss.org/

フレームワークの概要

ZKはブラウザとWebサーバの非同期通信を行うAjaxを取り入れた、AjaxWebアプリケーションフレームワークだ。

フレームワークの特徴

ZKはMVCモデルで言うところのViewの部分である「プレゼンテーション層」の開発効率を高めるフレームワークだ。ユーザーインターフェースが豊富で、画面で発生したボタンクリックなどのイベントはAjaxで管理されている。ZKを使った開発の際にはJavaScriptの知識は必要となるが、Ajaxを多用するシステムを構築するなら、ZKは選択肢のひとつとなるだろう。

Ninja web framework

ninja web framework

http://www.ninjaframework.org/

フレームワークの概要

Ninja web frameworkは2012年に登場したフルスタックのWebマイクロフレームワークだ。

フレームワークの特徴

手軽にWebアプリケーションを作成することができ、シンプルなプログラミングモデルも特徴。

マイクロフレームワークとは、あらゆる開発に対応できるとは限らないが、軽量かつ迅速な開発が可能なフレームワークのことで、Ninja web frameworkも例にもれず短いサイクルでのシステム開発を行うことが可能だ。

Spark Framework

spark

http://sparkjava.com/

フレームワークの概要

最後に紹介するのはNinjaと同じくマイクロフレームワークであるSpark Frameworkだ。GitHubの統計ではこのSpark Frameworkがマイクロフレームワークの中でも人気が高い。

フレームワークの特徴

Spark Frameworkはシンプルなプログラミングや迅速なシステム開発を行うことができるフレームワークだ。膨大なアノテーション記述や設定ファイルが不要な構成となっており、開発者の負担は大幅に軽減されている。

必要最小限の機能しか実装されていないため、大規模Webシステムの構築には不向きだと言えるが、中~小規模のWebシステムであれば問題なく使えるだろう。

なお、同じ「Spark」という名のフレームワークに分散処理フレームワークである「Apache Spark」があるので、混同しないように気を付けよう。

状況に応じたフレームワーク選びを

11種類のJavaフレームワークを紹介したが、いかがだったろうか?

基本的にはどのフレームワークでもさまざまなシステムに対応できるが、フレームワークによってコーディング内容や設定などの作業量に大きく差が出ている。

フレームワークを選ぶ際には、開発スケジュールや対応できる技術者の人数、そしてメンテナンス性などを考慮したうえで選ぶようにしよう。

  • このエントリーをはてなブックマークに追加
  • Pocket

このページの続きや関連ページは下記から一覧で確認できる。

短期間でエンジニアになる方法

・「まったくの初心者だけどエンジニアになりたい!」

・「プログラマーとして転職をしたい!」

という方はリナックスアカデミーの資料を見てみてください。短期間で未経験からエンジニアになることができるスクールとして15年間選ばれ続けてきた理由やノウハウが載った資料です。

エンジニアの入り口に立つために必要な勉強技術の最新動向本当に使えるIT資格学習に役立つ国からの奨励金などの情報が詰まっています。

無料で2,3日中にお手元にお届けします。


資料を見てみる

SNSでもご購読できます。

コメント

  1. ARTS Laboratory より:

    この度はWebアプリケーション開発を効率化する新Javaフレームワーク「LaBee Framework」を公開しました。
    LGPLライセンスでソースコードをオープンソース公開しており、個人・企業問わずどなたでも無償で利用出来ます。
    特徴として
    高機能な入力(イベントドリブン呼び出し)、出力(様々なレスポンス種類)を簡単なコードを書くだけでMVC動作を実現出来てしまいますので 実装者はビジネスロジックの中身に専念して効率良く開発していく事が出来ます。
    またポップアップウインドウ表示や ウインドウ間のデータ受け渡しなどWebアプリケーション画面で必要とする画面機能やSQL生成実行機能、パラメータ入力チェック機能、ログ出力機能等、様々な機能を持っています。

    1. リナックスアカデミー より:

      ご紹介ありがとうございます。リンク先の確認を随時できないため、リンクは弾くようになっております。ご了承ください。

コメントを残す

*