【Javaフレームワーク徹底比較】2017年おすすめランキングTop3

java-framework
井上 慎也
書いた人 井上 慎也

Javaは人気のプログラミング言語ですが、開発時にフレームワークの種類が多すぎてどれを使うべきか、またどれを学習すべきか、中級レベルのエンジニアでも悩ましいですよね。

トレンドを理解しておかないと、結局すぐに使えなくなってしまった場合、「学習に費やす時間も無駄になってしまう」ということも起こりかねません。

実際にJavaのフレームワークのひとつである「Seasar」は2016/9/26をもってサポートを終了することになっています。

そこで今回は、特にプログラミング入門者から中級者の方を対象として、Javaのフレームワークの選び方とオススメのフレームワークについて解説していきます。

  • Javaフレームワークとはなんなのか
  • どんな種類があるのか
  • 2017年Javaのフレームワークは何を使うべきか

上の内容を抑えられるようになっています。

今後のキャリアを考えたりアプリ開発を行ったりする上で、失敗しない為に是非検討してみてください。

【おすすめ記事】

そもそもJavaフレームワークって?

そもそも前提としてフレームワークというものが分からない方もおられるかも知れませんので簡単に解説しておきます。

フレームワークとはプログラミングでアプリ開発をする際に、土台として提供されているものです。

自分でプログラミング言語を全て書く場合、莫大な量のソースコードを用意する必要があり、アプリ開発をする為にものすごく時間がかかってしまいます。

そこで、アプリ開発に必要なものをまとめて提供してくれているフレームワークを使って、スムーズに開発を行っていくことがスタンダードな方法になっています。

フレームワークとはどういうものか詳しく知りたい方は次の記事も御覧ください。

Javaフレームワークが使えるメリット

Javaのフレームワークを使うと何が嬉しいのかも見ておきましょう。

開発期間を短くできる

Javaの言語を使った仕事は、比較的しっかりと時間をかけて開発するものが多いですが、開発にかかる時間は短いに越したことはありません。

多くの人が利用して信頼できるフレームワークを導入することで、大部分のコードは用意する必要がなくなる為開発期間を短くすることが出来ます。

多人数開発にも参加しやすくなる

特にJavaは多機能な言語なので、同じ動作のアプリでも様々な作り方が出来ます。

つまり、人によって書くコードの内容が全然違うということが起こります。

しかし、フレームワークを利用することで、考え方を統一出来るのでチームでの開発がスムーズに行えるようになります。

フリーランスとしても仕事が取れる

フレームワークはプログラミング言語とは全く別の知識になります。

特定のフレームワークを使用した経験があれば、そのノウハウを活かして仕事を獲得することも出来ます。

特に採用されているフレームワークの経験があれば即戦力として開発に参加できるようになれます。

Javaフレームワークを使うデメリット

Javaフレームワークのメリットだけでなく、デメリットも把握しておきましょう。

コーディングスキルが比較的向上しづらい

Javaフレームワークとは先ほど説明したように、Javaのコードをパッケージ化したもので効率よくコーディングを進めることができます。

ただ、Javaのフレームワークを使うと、そのフレームワーク特有の書き方に合わせて書くことになるので、開発を0から始めた人と比べるとスキルの向上は期待できません。

Javaの深い理解が得られづらい

先ほどの話と少しかぶりますが、Javaフレームワークを使って開発をするとJavaの本質的な理解が得られづらいです。

それはなぜかというと、理解していなくても「こういうものだ」という一言で片付けてしまい、なぜ動いているか分からないまま開発できてしまうからなんです。

このように「たまたま動いているだけ」という状態が理解を遅くする原因にもなります。

フレームワークによる脆弱性が避けられない

まず以下をご覧ください。

 Equifax の情報漏えい事例で利用された脆弱性攻撃コードの一例です。
20170925comment02_png__1254×202_出典:トレンドマイクロ(CVE-2017-5638 を突く脆弱性攻撃コード)
トレンドマイクロは、2017 年 7 月 11 日、Apach Struts で確認された別の深刻な脆弱性「CVE-2017-9791」(2017 年 7 月に「S2-048」で更新プログラムを公開)に対応するセキュリティフィルタをリリースしました。2017 年 9 月に入り、「CVE-2017-12611」(2017 年9 月 9 日に「S2-053」で更新プログラムを公開)を含め、Apache Struts の脆弱性が相次いで公開されました。弊社は、公開されている脆弱性攻撃ツールを確認し、それらがトレンドマイクロのDigital Vaccine フィルタによって防御可能か検証しました。その結果、フィルタを更新していない状態で、検証したすべての脆弱性攻撃を防御できただけでなく、ほぼ 2カ月にわたって侵入の試みを防御していたことがさらなる解析から確認できました。(出典:トレンドマイクロ)

これはJavaフレームワークの一つである「Apach Struts(ストラッツ)」で見つかった脆弱性を狙った攻撃の増加を確認したというものです。

つまり、「 Apach Struts(ストラッツ)」を使ってコーディングを行えば、上記のような脆弱性は免れません。そういった意味で考えれば、脆弱性もデメリットであると言えるでしょう。

とはいえ、フレームワークはデメリットを補ってあまりあるメリットがあるので、利用者もとてつもなく多いです。

侍エンジニアブログ編集部としては、フレームワークを積極的に使うことを推奨しています。

今回あげたデメリットもJavaフレームワークのほんの一部分でしかないので、メリットが大部分を占めているのは間違いないからです。

Javaフレームワークの種類

実際にJavaのフレームワークにはどのような種類のものがあるのか見てみましょう。

比較的検索数が多く知名度が高いと思われるフレームワークには次のようなものがあります。

  • Play Framework
  • Spring Framework
  • Apache Struts
  • JSF
  • Wicket

どのようなことに気をつけて選べば良いのかと、編集部お勧めのフレームワークを紹介していきます。

フレームワークの選び方

目的で選ぶ

フレームワークはそれぞれ「得意とする部分」が違います。

また、最低限を知っていればすぐ使い始められる軽量なフレームワークもあれば、多機能だけれどある程度学習に時間を要する物もあります。

(例えばJSFは見た目に関する機能を提供している)

開発者の知識や開発を担当する機能に応じて、考えると良い場合もあります。

オススメから選ぶ

使用するフレームワークを厳選しようと思うと、実際に基礎を学習して試験的に稼働させたりする必要があり、ある程度の調査時間や知識が必要になります。

ベストな選択がわからない場合は、シンプルに「自分よりできる人がお勧めしているものを使う」という選択肢でも問題ありません。

ひとつ有名なフレームワークを習得したら、他のフレームワークを習得する足がかりにも出来ます。

トレンドや将来性で選ぶ

特別な要件がなければ検索数が伸びている有名なフレームワークを選びましょう。

トレンドなものはコード自体が書きやすかったり、テストがしやすかったりと、「トレンドになるだけの理由」があります。

結局どのフレームワークにも一長一短あるので、ドキュメント(参考にできる情報)も多く開発が活発なトレンドのものを利用するのが良いでしょう。

学習環境で選ぶ

フレームワークには様々なものがありますが、そもそもそのフレームワークを使って「開発メンバーがしっかり開発出来るだけの知識をつけられるか?」というのも重要な問題です。

「いざとなったら実務経験を積んだ先輩や知り合いの詳しい人に相談出来る」
「研修やプログラミングスクールで身につけられる」

といったように、自分または開発メンバーのスキルアップが出来る環境が用意できるかというのも検討材料のひとつになるでしょう。

つまり、もし近くに詳しい人がいるのであればその人が詳しい技術から始めるのが無難ということです。

Javaフレームワークの最新トレンド

それでは実際にJavaフレームワークのトレンドを見てみましょう。

Googleトレンドにて検索カテゴリ「プログラミング」にて、比較的検索数が多い単語の組み合わせで調べています。

※その他の用語等と混同する可能性があるものは”java”も付けています。

青:Spring framework
赤:play framework
黄:JavaServer Faces
緑:Apache Struts
紫:Apache Wicket

世界の検索事情 2005-2017

Spring_framework__play_framework__JavaServer_Faces__Apache_Struts__Apache_Wicket_-_調べる_-_Google_トレンド

Sprintが安定して伸びていてPlay Frameworkも増加傾向にあることがわかります。

JSFやStrutsは昔からある技術なので、新技術登場によりシェアを奪われている為下がっていると読み解けるでしょう。ただ、まだまだ利用されている技術です。

日本の検索事情 2005-2017

Spring_framework__play_framework__JavaServer_Faces__Apache_Struts__Apache_Wicket_-_調べる_-_Google_トレンド

日本においても概ね世界と同じ傾向です。

最近ではStrutsの脆弱性問題により、検索が急増していますが人気によるものではないので、昨年に引き続きやはりSpringの人気は高いと言えますね。

実際に左側の棒グラフである平均人気度動向をチェックすると、やはりSpringが頭一つ分飛び抜けて人気がある印象です。

JavaフレームワークおすすめランキングTop3

ここまでの内容を踏まえて、これから開発や学習するのに学習や採用にお勧めのフレームワークを3つランキング形式で紹介します。

3位:JSF(JavaServer Faces)

JSFとは?

スクリーンショット 2016-03-18 19.42.14
URL:JavaServer Faces.org

公式サイトのフレームワーク紹介には次のように書かれています。

JavaServer™ Faces (JSF) is the standard component-oriented user interface (UI) framework for the Java EE platform. In terms which may sound more familiar, it’s a Java-based web framework.
JSF is included in the Java EE platform, so you can create applications that use JSF without adding any extra libraries in your project.

>JSFはJava EE(Java Platform, Enterprise Edition)という環境で動作する標準的なコンポーネント志向(機能ごとに部品として扱う考え方)のユーザーインターフェイスフレームワークです。JSFはJavaEEに含まれているので、新しくライブラリなどをプロジェクトに追加しなくても使うことができます。

ひとことで言うとユーザーインターフェイス(ユーザーが操作する見た目の部分)を簡単に作ることができるフレームワークで、Struts(ストラッツ)と同じMVCモデルを採用したフレームワークである。
※厳密にはStrutsのMVCモデルとはベースが異なります

メリットとしては、開発チームとデザインチームで分業できる特徴があり、Strutsに比べて分業が行いやすい特徴があります。

オススメ学習書籍

JSFを動作させるJavaEEという環境の学習書籍になります。

JavaEE自体もしっかり学習できれば様々な大規模システムにも対応できます。

JSF単体は入門系のWEBサイトでも十分でしょう。

おすすめ理由

スタンダードに使われている技術で、まだまだその人気は衰えていません。

新しい技術ではないので綺麗なかっこいい画面を作る!ということはあまり得意ではないですが、実際利用している企業が多いので仕事としては利用することがあります。

JSFはシステム全体のうち見た目に関する部分を提供してくれるので、Javaで見た目を作りながら学ぶことができます。

JSFの仕事

キャリアップスという求人サイトでは次のような案件が募集されていました。

スキル度合いですが他のスキルも身につけていけば年収800万円を目指せます。
スクリーンショット_2016-03-18_16_32_10
スクリーンショット 2016-03-18 16.31.40

なお、ベンチャー企業が採用に積極的に使用しているWantedyでは「JavaServer Face」の検索結果は58件でした。

こんな人にオススメ

とりあえず簡単に何かフレームワークに触れてみたい!という人にオススメです。

2位:Play Framework

Play Frameworkとは?

スクリーンショット 2016-03-18 19.44.04
URL:Play Framework 2.3

公式サイトのフレームワーク紹介には次のように書かれています。

Play は、現代の web アプリケーション開発に必要なコンポーネント及び API を統合した生産性の高い Java と Scala の web アプリケーションフレームワークです。

Play の特徴は、ライトウェイト、ステートレス、web フレンドリーなアーキテクチャであること、機能予測のしやすさです。また、Iteratee IO をベースにしたリアクティブモデルのおかげで、スケーラブルなアプリケーションでも CPU、メモリ、スレッドなどのリソース消費が最小限になっています。

Javaおよび関数型言語のScalaというプログラミング言語をサポートしているフレームワークです。
少々難しいことが書かれていますが、ひとことで言うと使いやすくて開発しやすいことに主眼が置かれたフレームワークです。

詳しくは以下の記事にまとめてますので、ご覧くださいね!

オススメ学習書籍

スタンダードな入門書です。

また、Play公式サイトに利用法の解説もあります。

プログラミング入門者には少し難易度が高いですが、入門書を終了してから参照すると良いでしょう。

Java 開発者のための Play
https://www.playframework.com/documentation/ja/2.3.x/JavaHome

おすすめ理由

徐々に伸びてきているFrameworkになります。
軽量な為利用しやすく学習コストも比較的低めです。

さらにおすすめが知りたい方は以下の記事もおすすめです!

Play Frameworkの仕事

例えばForkwellという採用技術の分かる求人サービスで探してみると、次のような仕事が募集されています。

JavaのPlay Frameworkを中心に新しい技術を取り入れて開発しているチームのようです。

こちらも年収800万円くらいまで目指すことができます。

スクリーンショット_2016-03-18_16_27_31

Wantedyでは「Play Framework」の検索結果は309件でした。

こんな人にオススメ

新しい技術を使ってみたい!ベンチャー企業に興味がある!という人にオススメです。

1位:Spring Framework

Spring Frameworkとは?

スクリーンショット 2016-03-18 19.45.38
URL:Spring Framework

公式サイトのフレームワーク紹介には次のように書かれています。

The Spring Framework provides a comprehensive programming and configuration model for modern Java-based enterprise applications – on any kind of deployment platform.

>スプリングフレームワークは近代的なJavaの業務アプリ開発の包括的なプログラミング環境を供給します。

ひとことで言うと、スプリングはカバーしている範囲がとても広い万能型フレームワークです。

詳しく知りたい方は以下の記事を参考にしてみてくださいね!

オススメ学習書籍

サンプルが複数付いている為、動かしながら動作を確認することができます。

おすすめ理由

世界的に伸びていることからすぐに使われなくなることはまずないでしょう。

すでに業務で導入されているところも多く学べば仕事獲得等にも有利に働きます。

また、万能なフレームワークなので様々なシステム構築に対応可能です。

少々学習コストが高いことが難点ですがお勧めのフレームワークです。

さらにおすすめが知りたいという方は以下の記事もおすすめです!

Spring Frameworkの仕事

例えばForkwellには次のような案件があります。

Springを用いて新しい技術も積極採用しているチームのようです。

1500万までという年収も魅力的ですね。

スクリーンショット_2016-03-18_16_27_02

Wantedyでは「Spring Framework」の検索結果は204件でした。

こんな人にオススメ

しっかりした汎用性の高い技術を使いたい!確実に高収入を得たい!という人。

Javaフレームワーク選びに迷ったときは

世界的に人気があり、日本でも様々な企業で利用しているSpring Frameworkを使うのをオススメします。

フレームワークとしてのしっかりした考え方を身につけることが出来ることと、Springさえ使えればほとんどのサービスが構築できるでしょう。

まとめ

おすすめJavaフレームワークはいかがでしたでしょうか?

Javaは就職にも強いですが、Javaの言語知識だけでは作りたいものはほとんど作れません。

この機会にトレンドなフレームワークも学習していろいろなものが作れるようになりましょう。

おまけ

デザイン用のWEBフレームワークなど、今流行のフレームワークも紹介していますのでこちらも合わせてごらんください。

Javaカリキュラム無料公開中!
この記事はJava入門完全攻略ガイド【基礎学習/アプリ開発/仕事獲得】の一部になります。このカリキュラムは、プログラミング入門者が、基礎学習からアプリ開発、さらには仕事獲得まで体系的に学べる内容となっています。

Java学習に必要な情報を一つにまとめていますので効率よくJavaを学ぶことが出来ます。この機会に是非活用していただければと思います。


33歳、未経験だった僕がフリーエンジニアになれた理由
現在フリーでWEBエンジニアをやられている濱口直行さん。33歳で、プログラミングを学び始め、約半年という短い期間で独立までされた学習ログを余すことなくインタビューさせていただきました。

プログラミングを学習中の方はもちろん、独立をお考えの方まで幅広く活用できる記事になっています。この機会に是非活用していただければと思います。


最短でJavaを習得したい方へ

もし、あなたが、

「難しすぎて学習が全然進まない」
「学習量が膨大でゴールが見えない」
「エラーを解決するのに何日もかかってしまう」

など、プログラミング学習やキャリアに関してお困りであれば、まずは『無料体験レッスン』にお申し込み下さい。

あなたにとって、最適の解決策をご提案させていただきます。

詳しくは下の画像から詳しいサービス内容をご確認ください。

cta_bannar-java2

学習者インタビュー

人気記事セレクション

エンジニア転職希望者必見

プログラミング学習者必見

LINEで送る
Pocket

この記事が気に入ったら
いいね!をしてフォローしよう

最新情報をお届けします

書いた人

井上 慎也

井上 慎也

侍エンジニア塾のインストラクター。フリーでWEB制作の受託や自身の事業の傍ら、侍ではWEBプログラミング方法の指導やプログラミング学習コミュニティの運用を行っている。
好きなショートカットキーは、command + w 。愛機はMac Book Pro。ブラウザのタブを大量に開きがち。