この記事のランク | |
---|---|
読む時間 | 3分 |
重要度 |
Java(ジャバ)は1996年にリリースされたプログラミング言語で、アメリカのRedMonkが調査した人気ランキングでは、トップ3に入るほどシェアの高いプログラミング言語です。
JavaはWindowsやMacなど環境を選ばず利用できる汎用性の高さや、堅牢なセキュリティ、オブジェクト指向という複数人で作業分担して作業効率化できるのが特徴です。
その汎用性の高さから幅広い分野の開発現場で使われており、システム会社の新卒者はもれなく研修でJavaを勉強するなど、業界でも強みとなるプログラミング言語になります。
この記事では、これからJavaをはじめる方に向けて、オススメのフレームワークをご紹介します。
下記の記事でJavaの特徴や書き方について解説していますので、ぜひ参考にしてください。
Twitter(@nana_korobi04)でも情報発信していますので、
フォローいただけると嬉しいです!
Spring Framework(スプリング・フレームワーク)
Javaのフレームワークの中で最も利用者が多く、ドキュメントやチュートリアルなどが充実しており、学び易い点もSpringの魅力です。
Spring Frameworkでできること
プログラムの依存性を無くす
Springには、DIコンテナ(Dependency Injection)という機能があり、これは日本語に訳すと「依存性の注入」となります。
依存性の注入とは、あるプログラムを作成する際に他のプログラムに依存しているコードを分離して、プログラム実行時に外から注入する方法です。
具体的には、依存先のプログラムを設定ファイルに記述して、プログラム実行時に、その設定ファイルを見て、呼び出しをする橋渡しの機能が「DIコンテナ」なのです。
そうすることで、依存先のプログラムが起因して発生するコンパイラ時のエラーを防いだり、コードを変更する場合も最小限の変更で済むため、保守性や拡張性が高くなります。
同じ処理が共通化できる
Springには、AOP(Aspect Oriented Programming)という機能があり、「アスペクト指向プログラミング」と呼ばれます。
アスペクトは「見方」といった意味があり、プログラム全体を俯瞰して見たときに、複数のプログラムで同じ処理を行なっているものは共通化できるという考え方です。
例えば、ロギング処理と呼ばれるログを出力する処理は、どのプログラムでも必要な機能ですが、各プログラムに同じロギング処理のコードを記述するのは非効率です。
そのため、横断的な処理を分離して、新たなプログラムとして一つにまとめ、設定ファイルにその共通化したプログラムと実際に処理を行う箇所を記述することで、それぞれのプログラムに重複したコードを記述せずに済みます。
Spring Frameworkのメリット
仕様変更に柔軟に対応できる
前述でご紹介した、「DIコンテナ」や「AOP」により仕様変更が発生した場合に、該当処理を特定しやすいことや、改修部分が集約されているため、柔軟な対応ができます。
また、「DIコンテナ」により、新たに処理を追加する場合でも、既存のプログラムを組み合わせるなどで再利用が可能となり、開発工数を削減することができます。
テストが簡単にできる
Springには、プログラミングのバグの検証を行うことができる専用のテストプログラムが備わっています。
それにより、作成したプログラムが正しく動いているか事前に確認することができるため、システムに統合する前にプログラム修正し、手戻りを減らすことできます。
Spring Frameworkのデメリット
使いこなすのに時間がかかる
Spring Frameworkを利用するためには、環境構築が必要で、さらに多数の機能を使い分けるために様々な初期設定を行うハードルの高さがあります。
しかし、Spring Frameworkに含まれるSpring bootというフレームワークを使うことで、これまで時間のかかっていた環境構築を簡略化することができ、機能を使うための初期設定も可能な限り自動化されています。
Apache Struts(アパッチ・ストラッツ)
デファクトスタンダードと呼ばれるほどシェアを占めていたフレームワークでしたが、現在は他のフレームワークに取って代わられ段々とStrutsの機会は減ってきています。
ですが、世の中のシステムはStrutsで開発されているものが多くあり、システム開発の現場では目にする機会が多いフレームワークですので、他のフレームワークへ移行する際にもStrutsの知識は必要になってきます。
Apache Strutsのメリット
システムの保守性や効率性が上がる
Strutsは、当時では珍しいMVCシステムデザインという仕組みが取り入れられています。
MVCシステムデザインとは、Model、View、Controllerというプログラムを3つの機能に分けるシステム設計の考え方です。
- Modelはデータベースに情報を登録したり取得する具体的な機能
- Veiwは取得したデータを画面に表示する機能
- ControllerはModelとViewの間でデータを橋渡しする機能
このように、それぞれの役割にプログラムを分けることにより、ソースコードが管理しやすくなり、保守性やコードの再利用がし易いというメリットがあります。
プログラムが簡単に記述できる
Strutsはカスタムタグという機能が備わっており、頻繁に使われるソースコードをタグとして定義することにより、ソースコードの記述が簡素化することができます。
カスタムタグを活用することで、一からプログラムを作る必要がなく、記述方法による差異も少ないため一定の品質が保てることもメリットです。
Apache Strutsのデメリット
バージョンによって脆弱性がある
Strutsにはバージョン1と2があり、それぞれで脆弱性が検出されており、総務省のサイトにも下記のバージョンを利用しないよう注意喚起されています。
- Apache Struts 1系
- Apache Struts 2.0.0 から 2.3.16.1
適切なバージョンに更新することで回避はできますが、Strutsを導入しているJavaの開発プロジェクトに参画した場合は、バージョンが上記に該当していないか意識しておきましょう。
play framework(プレイ・フレームワーク)
play frameworkは、Zenexity社から2007年にリリースされ、Rubyの「Ruby on Rails」やPythonの「Django」から大きく影響を受けているフレームワークです。
JavaとScalaを用いて作られており、Javaの基礎的な知識があれば、他のフレームワークよりもスムーズに使い始めることができます。
play frameworkでできること
高速で開発ができる
前述したSpringやStrutsに比べて、フレームワーク自体が軽量であり、他のフレームワークでは時間が掛かっていた環境構築の時間短縮や、少ないコードで開発を行えるため、導入コストや学習コストが低い点が大きな違いです。
play frameworkのメリット
コンパイルの作業が不要
Javaは、人間が記述したソースコードをコンピュータが理解できるようにバイナリコードに変換するコンパイルという作業が必要となりますが、play frameworkは自動コンパイルの機能があり、コンパイルの作業が短縮できます。
play frameworkのデメリット
日本語の情報が少ない
公式的に発信されている情報やコミュニティは英語が中心で日本語の情報が少ないため、個人ブログやシステム会社が発信している情報が主な収集源となります。
まとめ
今回はJavaのフレームワークの中でも、特に業界のシェアを占める3つのフレームワークを紹介しました。
これからJavaを始める方も、既にJavaに携わっている方も、この3つのフレームワークは知識として持っておくと良いでしょう。