プログラマー必見!知っておきたい代表的なJavaのフレームワーク

ある程度の規模のシステムを開発する上では必須となっているフレームワーク。
Javaにも他の開発言語と同様にたくさんのフレームワークがあり、短期間で質の高い開発を可能にする方法といえるでしょう。
このフレームワークを使いこなすのと使いこなさないのでは、エンジニアとしてのスキルは大きく変わります。
この記事ではJavaで知っておきたい代表的なフレームワークをご紹介します。
Spring Framework
Spring FrameworkはRod Johnson氏がリリースしたオープンソースのフレームワークです。Springとも言われています。軽量で開発効率が良いため注目のフレームワークとなっています。ドキュメントが充実しており、大手企業により多数の採用もニュースとなっています。
大規模なシステムで採用実績があるため、安心して利用できます。現在Javaのフレームワークの中で大きくリードしているのがこのSpring Frameworkといえます。
- DI(Dependency Injection)
クラスで必要となってくる他のクラス生成をSpringに実行させることができます。
Springは生成したクラスを設定ファイルにより自動で結合することができます。
この機能により単体テストが実行しやすくなり、再利用性が高まります。 - AOP(Aspect Oriented Programming)
AOPアスペクト指向プログラミングによりクラスを横断するような機能をアスペクトとして分離していきます。
そうしてアスペクトだけを集めることでプログラミングが柔軟に行える特徴があります。
Java EE
Java標準仕様のフレームワークです。安定性があり使いやすいためJavaの主要なフレームワークとなっています。Java EEはオープンソースのフレームワークの良い点を吸収しており、生産性を高めてきています。
過去のバージョンでは様々な課題があり生産性も悪かったのですが、現在は改善し主要なフレームワークとして注目されています。
Java EEはエンタープライズシステムを 構築する標準仕様をまとめたものでWebアプリケーションだけではなく幅広いシステム構築に対応できます。以下に対応しているカテゴリを紹介します。
- Webアプリケーション
- エンタープライズアプリケーション
- Webサービス
- 管理・セキュリティ
Play Framework
Play FrameworkはGuillaume Bort氏によりリリースされたJavaとScala向けのWebアプリケーションフレームワークです。Ruby on Railsなどのフレームワークの良い点を取り入れた軽量で高い生産性のあるフレームワークです。また、MVCアーキテクチャを採用しています。
Ruby on Railsの高い生産性を取り入れていることが特徴です。繰り返し同じ処理を記述しないことを実現するためにリファクタリングを行います。
そのためには充実したテスト環境が必要です。また、エラー情報も詳細に記述されるべきです。さらにJavaのフレームワークでは設定ファイルのXMLの記述が膨らんで負荷が大きくなることがありますが、Ruby on Railsと同様に設定ファイルではなくフレームワークの規約で対応し、設定ファイルへの記述を減らしています。
- テスト環境の充実
- 詳細なエラー情報の出力
- 設定ファイルより規約で対応
Apache Struts2
Apache Struts2は過去JavaのWebアプケーションフレームワークとしてデファクトスタンダードだったStrutsの後継フレームワークです。MVCアーキテクチャを採用しています。
Strutsは2013年にサポートを終了しており、脆弱性が発見されても対応されない状況です。後継としてApacheはStruts2を推奨しています。しかし、Struts2では重大な脆弱性が発見されたことが何度かあります。
また、Struts1から2へ移行も互換性がなく容易ではないです。そもそもStruts2のベースはWebWorkというフレームワークを元にしているためです。こういった状況もあり、現在はStruts2はデファクトスタンダードにはなっていません。
Apache Struts2はWebアプリケーションフレームワークです。
- MVCアーキテクチャ
- プラグイン機能により機能追加が可能。
- アノテーション機能によりxmlファイルの記述を軽減
- DIコンテナ機能によりクラス間の依存関係を外部ファイルに記述
まとめ
Javaにおいて知っておくべきフレームワークをご紹介しました。代表的なフレームワークの特徴を理解できたのではないでしょうか。
Javaによる開発や勉強していく際に参考になれば良いです。
短期間で質の高い開発を可能にする方法として、フレームワークがあります。フレームワークを使用することで生産性の向上につながり、従来よりも圧倒的に速いスピードでプログラムをつくることができます。
その反面、学習コストがかかってくるということを知っておいたほうが良いでしょう。もちろん、フレームワーク特有の書き方などがあるわけですから、勉強は必要です。
プログラマーとして、プログラミングの技術を上げたいのであれば、フレームワークだけに頼らず、フレームワークを使用しない場合の書き方についても学ぶべきです。
フレームワークを使えば簡単、という意識はNGです。安易にフレームワークを使用すれば、一見誰でも実装できるように考えてしまいがちですが、フレームワークの仕組みや構造をきちんと理解していないと、いざ支障が出てきた際に対処できなくなってしまいます。
構造や仕組みを理解したうえで、上手にフレームワークを活用するようにしましょう。