Java フレームワークの最新事情 2020年

 フラン健史郎 | 2020/04/24 - 21:58
目次

    あるプログラム言語でソースコードが書けるようになったら、次に取り組むべきは、その言語の主要なフレームワークの習得です。

    なぜならば、実際の業務では、多くの場合、フレームワークを利用して開発作業を進めることが多く、フレームワークの習熟度が、そのプログラマーの評価に直結することも多いためです。

    そこで今回は、汎用プログラミング言語として、様々な分野で利用されるJavaで利用されているフレームワークについてご紹介したいと思います。

    Java フレームワークとは? ライブラリーの違いも解説

    プログラム初心者からよく受ける質問として、「フレームワークとライブラリーの違いを教えてください」というものがあります。

    実は、この質問は非常に答えるのが難しいです。例えば、Wikipediaには「(フレームワークは)具体的な実装を再利用可能な形で隠蔽しているという点でライブラリーとよく似ており、両者の間に明確な境界は無いし、分類のための明確な基準も無い。」と書かれています。

    それでも、この二つの違いを説明するとすれば、一般的な理解としては、システムを車に例えるとすれば、フレームワークは「外装パーツ」、ライブラリーは「エンジンや座席など内部パーツの集合体」のようなものです。

    まずは、フレームワークから見てきましょう。

    フレームワークは大枠です。車は車、自転車は自転車、WebシステムはWebシステムといった風に、構造を決める存在です。

    フレームワークにはいくつかの機能がありますが、一番、分かりやすいポイントは、ある種のフォーマットである、という点です。例えば、WebシステムをWebシステムとして、動作させるためには、一定のお作法やルールが存在します。

    フレームワークは、そのためのお作法やルールを開発者に強制する仕組みと言えます。逆に言えば、そのフレームワークを利用しているうちは、みな、同じお作法やルールでプログラムしていくので、「人によってコーディング規約がバラバラになる」「特定の重要な要素を入れ忘れて、バグになった」などの大規模開発で起きがちなミスを防ぐことが可能です。

    ですので、大規模開発ほどフレームワークが重要です。Rubyが良い例ですが、フレームワークが充実しているからこそ、主要なプログラム言語としての地位を築いたものも存在します。

    次にライブラリーですが、こちらは、あくまでパーツの集合体です。

    例えば、Javaで画面に文字を表示させるために使うメソッドとして「System.out.print()」を利用する方が多いと思います。ご存じない方のために解説すると「System.out.print(”Hello!”);」とソースコードを書いて実行すると、画面に「Hello!」と表示してくれるメソッドです。

    みなさん、普段はあまり意識していないと思いますが、「()の中を画面に表示するためのプログラム」が別に存在し、そのプログラムを“借りて”使っている形になります。このような便利なプログラム集めたものがライブラリーです。

    あくまで、ライブラリーはパーツ(メソッド)の集合体ですので、ライブラリーを導入したものの、そのライブラリーに収録されたデータを使わない、という選択肢をとることが可能です。あるいは、「System.out.print()」が気に入らないなら、もっと別の、提供されるライブラリーの異なるメソッドに変えても、基本的には問題ありません。

    なお、フレームワークもライブラリーもJava ArchiveまたはJARというファイル(拡張子は「.jar」)で展開されることが多いです。

    厳選! Javaフレームワーク ベスト3

    フレームワークについて理解できたところで、利用シーンの多い人気Javaフレームワーク5つをご紹介したいと思います。

    ①Spring Framework

    アスペクト指向プログラミング(AOP)や依存性注入(DI)など、本来、Javaにはない特徴を追加するためのフレームワークが「Spring Framework」です。

    車なら車、自転車なら自転車、WebシステムならWebシステムといった風に、構造を決める“普通のフレームワーク”と少し異なる特殊な存在です。構造を決める“普通のフレームワーク”と併用されることも多く、フレームワークとライブラリーの中間的な存在という認識を持っているプログラマーも多いです。

    登場したのは2004年ですが、AOPやDIという新たな概念が好まれて、現在は、「Spring Framework」をベースに、さらに進化したSpring BootやWebアプリケーションフレームワークのSpring MVCなどの関連フレームワークも生まれています。

    ②Play Framework

    Rubyの人気を押し上げたWebアプリケーションフレームワークRuby on Railsのような、軽量フレームワークとして登場しました。

    現在のPlay Framework 2.x系は軽量フレームワークというには、少々仕様が重くなってしまいましたが、ポストJavaの一つと言われるJVM言語の一つである、Scalaで記述されており、ScalaでもJavaでも利用できるフレームワークとして、注目が高まっています。

    ③Apache Struts

    Apache Strutsはオープンソースプロジェクト支援で有名なApacheソフトウェア財団にて開発が進められているWebアプリケーションフレームワークです。

    オープンソースのWebアプリケーションフレームワークとして、一時はもっとも人気の高いフレームワークでしたが、人気が高いがゆえに、多くのハッカーに目を付けられてしまいました。2017年には、GMOの子会社からクレジットカード情報が36万件分流失するなど、いくつかの個人情報窃盗事件で犯人はStrutsのセキュリティーホールを利用したことが、知られています。

    そうしたこともあり、ここ数年は新規開発での利用は減っていますが、Strutsを採用しているWebサイトは多く、今なお主要なフレームワークの一つと言えます。

    Java フレーム ワークのメリットとデメリット

    Javaに限らずですが、フレームワークには、大規模な開発が楽に進められる、というメリットがあります。

    その理由は、上でも触れましたが、フレームワークによって、必要な機能は提供されるため、複雑なプログラミングを行わなくて済むうえに、フレームワークの強制力によって、コーディングの品質が一定になるためです。

    ただし、フレームワークを使うことで、「システムの図体が大きくなってしまう」というデメリットもあります。フレームワークはいわば全部乗せの基本フォーマットなので、開発したいものによっては、使う予定のない余計な機能など、フレームワークを使うが故の無駄が、どうしても発生してしまいます。

    複雑な機能が必要ないのであれば、わざわざ、フレームワークを使わない、という選択をして、開発を進める場面もあります。

    Java フレーム ワークの将来性

    現在、Javaで主流になっているのはSpring BootやSpring MVCなどSpring Frameworkやその流れをくむフレームワーク群です。

    Apache Strutsのように、高い人気があったにも関わらず、セキュリティーの問題から、シェアを落としてしまった例もあるため、必ずしもSpring Frameworkが絶対安定とは言えませんが、デファクトスタンダードとなりつつあると言えます。

    ただ、Javaが登場して今年で25年。ポストJavaを狙うJVMプログラミングが登場し、Play Frameworkのように、Java以外のJVMプログラミング言語に積極的に対応するフレームワークが登場したのは気になるところです。

    今後、RubyとRuby on Railsのような理想的な組み合わせが生まれたとすると、JavaとJava向けフレームワークは一気に下火になる可能性もあります。

    まとめ:フレームワークのウォッチは怠らない!

    繰り返しになりますが、フレームワークを利用して開発作業を進めることが多く、フレームワークの習熟度が、そのプログラマーの評価に直結することが多いです。

    ですから、フレームワークの動向についても興味・関心を持ち、どのようなフレームワークが注目を集めているのか知り、キャッチした情報をもとに、扱えるフレームワークが増えるように学びましょう。

    今すぐシェアしよう!

    B!


    上部へ戻る