Javaは1995年に公開されて以来数多くのフレームワークが生まれ、今では「種類が多すぎてどれを選べばいいか分からない」という声も聞こえてくるほどです。
この記事では2020年のおすすめJavaフレームワークを厳選して4つ紹介します。
Contents
フレームワークを使うメリット
フレームワークのメリットは1からプログラムを全て自分で書く場合に比べ、圧倒的に生産性が上がることです。
さらに、フレームワークにはMVCやMVVMパターンなど、決められた実装パターンでプログラムを書くような取り決めがある為、複数の人が関わるシステム開発でもプログラムの書き方が統一され、システムの品質を一定に保つことが可能になります。
Java有償化の影響は限定的
2018年9月26日にリリースされたOracle Java 11からライセンスが変更されました。簡単に言うと、Oracle JDKを商用利用する場合は月額制のサブスクリプション契約を結ぶ必要があり、今後はOracle JDKを使うだけで費用が発生するようになりました。
Javaを今後も無償利用する場合はOracle公式からは「OpenJDK」へ移行することを推奨していますが、半年ごとの新バージョンリリースで前のバージョンのサポートが終了するポリシーのため、セキュリティが求められるシステムでの利用には注意が必要です。
Javaが有償化され「もうJavaは終わりでは?」と囁かれることもありましたが、実際のところJavaで作られた既存システムの多くはサブスクリプション契約を結んで使い続けたり、無償のOpenJDKに移行したりすることで現在も利用されています。また「Spring Framework」などの大規模システム開発で高い生産性を発揮するフレームワークなどの根強い人気、Androidアプリの開発で利用など、今後もJavaの人気は続いていくと見られています。
Javaのおすすめフレームワーク4選
それでは、2020年版のおすすめJavaフレームワークを4つ紹介していきます。
Spring Framework
2020年現在、Javaのフレームワークで圧倒的に人気なのが「Spring Framework」です。
Spring Frameworkの特徴であるDI(依存性の注入)を用いることでクラスのインスタンスの生成と依存関係の解決をコードから切り離すことができ、これにより「コードの可読性」「保守性」「テストの容易性」を向上させるメリットがあります。
Spring Bootで開発が手軽
SpringBootはSpring Frameworkアプリケーションを手軽に作成できるフレームワークです。
Javaの開発では「XML地獄」と呼ばれるほど、XMLに色々な設定を記述しなければならないフレームが多いです。Spring Bootではこうした問題を解決するため、最低限のXMLの設定だけてアプリケーションの実行が行えるようになっています。
また、Eclipse ベースのIDE(統合開発環境)であるSpring Tool Suite(STS)を使うと、GUIの画面で必要な機能を選択するだけでさらに手軽にSpring Frameworkのアプリケーションが作成できます。
Javaでシステム開発するならSpring Frameworkは第1候補
以下のグラフは、2020年7月現在の主要なJavaフレームワークの人気をGoogleトレンドで調査した結果です。Spring Frameworkは長年人気があり、Javaフレームワークのデファクトスタンダードの地位を確立しつつあります。
JSF(Jakarta Server Faces)
JSFはWebアプリケーションを作るためのフレームワークで、企業向けのJavaプラットフォームのJakarta EE(旧:Java EE)に含まれているため、新たにライブラリなどを入れることなく使用できるのが特徴です。
UIコンポーネントを作るためのタグライブラリや、入力値の検証を行うバリデーション、ナビゲーション機能、メッセージの国際化など、豊富な機能を備えています。
安定感を重視するならJSFは有力な選択肢に
Jakarta EE(旧:Java EE)のアップデートは2〜3年に一度で、他のフレームワークに比べると更新頻度は遅めになります。そのため最新技術などへの対応は遅れますが、安定した動作を求められるシステムではJSFは有力な選択肢になるでしょう。
Play Framework
Play Frameworkはプログラム言語に「Java」または「Scala」を使用するフレームワーク で、「Ruby on Rails」やPythonの「Django」のような生産性をもたらしてくれるフレームワークです。
Spring FrameworkやJSFは大企業の基幹システムなどで多く使用されているのに比べ、Play Frameworkは軽量さや開発の柔軟性を生かしてスタートアップ系の企業などでも使用されています。
Scalaをサポート
Play Frameworkはオブジェクト指向+関数型プログラミングができるプログラム言語「Scala」をサポートしています。
Scalaは先進的な言語設計でシンプルにコードが記述でき、JavaVM上で動作します。そのため、膨大なJavaのライブラリがそのまま使える特徴が人気につながっています。
コンパイルが不要で実行可能
Javaはコンパイルが必要なプログラミング言語ですが、Play Frameworkではコンパイルが不要でJava(Scala)のソースが更新されると即座に変更内容が反映されます。
Apache Struts
Apache Strutsは2001年から開発され、Javaのフレームワークの中で歴史が長いフレームワークです。
最初にリリースされた「Struts 1」は既に2013年にサポートが終了しており、脆弱性の問題から使用することはお勧めしません。2020年7月時点では「Struts 2.5」が最新バージョンとなっており、特に理由がなければ最新版のリリースを使うことをおすすめします。
Apache Strutsの特徴には、次の4つが挙げられます。
・流行りのMVCアーキテクチャ
・プラグイン(外部jarファイルの追加)で機能追加が可能。
・アノテーション機能(AOP)により、XMLの設定を軽減
・DI(依存性の注入)により、クラス間の依存関係を外部化
生産性は高いが、セキュリティに注意!
Strutsは生産性が高く、長い歴史の中で企業でも愛用されているため開発経験者も多いです。しかし、脆弱性が度々見つかるフレームワークとしてもStrutsは有名です。
個人情報などを扱うシステムなどでは、Spring Frameworkのプロダクトである「Spring MVC」などの別のWebフレームワークの利用も検討したほうがよさそうです。
まとめ
2020年版のおすすめJavaフレームワークを解説してきました。
現状は「Spring Framework」の人気が定着し、他のフレームワークの人気を圧倒している状況です。
2020年春から大手通信キャリアが5G通信サービスを開始しました。今後は5G通信網の普及によりWebコンテンツにも大きな変化があることが予想されており、Javaフレームワークにも大きな変化が訪れるかもしれません。
今後も最新のJavaフレームワークの情報をキャッチしていきましょう。