この記事の要点
- フレームワークとは、アプリケーションやシステムを開発する際に、共通して必要になる一連の部品を整理して提供したもの
- ライブラリとは、アプリケーションやシステム開発でよく使われる部品、機能そのもの
- フレームワークやライブラリの利用によって、一から自分で作るよりも早くて高品質なアプリケーションを提供できる
以前、javaの特徴や案件別の必要スキルなどを解説していました。
Javaでアプリケーションを開発する際、必要な機能を自分で実装することも大切ですが、もしかするとその機能はすでに誰かが提供してくれているかもしれません。
フレームワークやライブラリは、アプリケーション開発のハードルをぐっと下げてくれる、便利な存在で、使わないのはもったいないです。
当記事では、フレームワーク、ライブラリの言葉の意味と、よく使われるものをご紹介します。
目次
フレームワークとは
フレームワークとは、アプリケーションやシステムを開発する際に、共通して必要になる一連の部品を整理して提供したものです。
例えば、ログインの仕組みや、DBとのやり取り、セッションの管理といったことは、多くのWebアプリケーションで必要になるものです。
フレームワークでは、これらの機能を実現するための土台がすでに提供されていて、あとは個別のアプリケーションに合わせて調整するだけでよくなります。
このように、フレームワークを用いることで、アプリケーションやシステムの開発全体がぐっと簡単になるところが、大きなメリットです。
ライブラリとは
ライブラリとは、アプリケーションやシステム開発でよく使われる部品、機能そのものです。
例えば、Javaでは標準ライブラリが数多く提供されています。
「java.util」パッケージでは、各種コレクションや日付を取り扱う機能が、「java.lang」パッケージでは、Stringクラスなどの文字列操作機能やラッパークラスなどが提供されています。
その他、標準にはない外部のライブラリを使えば、画像処理やグラフ生成、機械学習といった機能も簡単に導入できます。
ライブラリをダウンロードしてきてimportするだけで、便利な機能を使えるので、実装の手間や時間を削減できるところがメリットです。
フレームワークとライブラリの違い
フレームワークとライブラリの違いは、フレームワークはアプリケーションの大枠、土台を提供しているのに対して、ライブラリは個別の部品を提供しているという点です。
ケーキ作りで例えると、フレームワークは土台となるスポンジや、生クリーム、いちごといった、ケーキ作りに欠かせない素材をセットで提供してくれるものです。
ライブラリは、サンタの砂糖菓子やチョコプレートなど、ケーキに乗せる素材そのものです。
どれも自分で作ろうと思えばできないことはありませんが、1から全部手作りするのは相当大変ですよね。
スポンジやサンタの砂糖菓子は、ほとんどの場合、自分で作るよりもスーパーで買う方が早くて見栄えが良いでしょう。
同じように、フレームワークやライブラリの利用によって、一から自分で作るよりも早くて高品質なアプリケーションを提供できます。
おすすめフレームワーク3選
Javaのおすすめフレームワークを3つご紹介します。
- Spring Framework(スプリングフレームワーク)
- Apache Struts(アパッチストラッツ)
- Spark Framework(スパークフレームワーク)
Spring Framework(スプリングフレームワーク)
Spring Frameworkは、今Javaのフレームワークで最も知名度が高いものです。
DI(Dependency Injection)、AOP(Aspect Oriented Programming)といった機能が提供されているのが特徴です。
簡単に説明すると、DIはJavaのインスタンス管理を引き受けてくれる機能、AOPはログ出力などの「○○が終わったら毎回実行する」といった処理を簡単に実現できる機能です。
Spring Frameworkは初期設定がかなり大変なのが長らくデメリットとされてきましたが、近年では「Spring Boot(スプリングブート)」の登場によって、それも改善されました。
(ややこしいですが、Spring BootはSpring Frameworkを使いやすくするためのフレームワークです。)
Apache Struts(アパッチストラッツ)
Strutsは、Spring Frameworkが流行する前までは採用率の高いフレームワークでした。
今でもStrutsで動いているシステムは数多くあります。
Springほどできることは多くありませんが、Springよりもずっと理解しやすく、初心者の方が利用する際のハードルも低いと言えます。
Struts1で深刻な脆弱性が発見されたため、Struts2が提供されています。
利用するバージョンには注意が必要です。
Spark Framework(スパークフレームワーク)
Spark Frameworkは、小規模開発に適したフレームワークです。
ラムダ式とstaticメソッドを使って、シンプルにプログラムを記述できます。
提供している機能は少ないものの、初期設定が簡単で、気軽にアプリケーション開発をスタートできる点が人気となっています。
おすすめライブラリ3選
Javaは標準ライブラリが豊富に提供されているので、まずはそこに欲しい機能が提供されていないか確認しましょう。
標準以外のライブラリは、性能や品質がピンからキリまで様々です。
業務で使う際は、著作権や利用実績などをしっかり確認してから使いましょう。
ここでは、よく使われる標準以外のおすすめライブラリを3つご紹介します。
- Log4j(ログフォージェイ)
- Apache Commons(アパッチコモンズ)
- Jackson(ジャクソン)
Log4j(ログフォージェイ)
Log4jは、Javaアプリケーションで簡単にログ出力するためのライブラリです。
エラーログ、警告ログ、情報ログを分けて設定することで、必要な時に必要なレベルのログを出力できます。
パフォーマンスにも配慮されており、世界的に広く利用されています。
ただし、2021年に脆弱性が発見されています。
利用するときは必ず最新バージョンを取得するように注意してください。
Apache Commons(アパッチコモンズ)
Apache Commonsは、Javaでよく使われる処理をまとめて提供してくれるライブラリです。
例えば、文字列が空かどうか判定するために、StringUtils.isEmptyメソッドが提供されています。
標準のStringクラスにもisEmptyメソッドはありますが、こちらはその文字列がnullでないか確認する手間がかかります。
このように、ちょっとした便利機能が豊富に提供されていて、あるのとないのとでは快適さが結構変わります。
Jackson(ジャクソン)
Jacksonは、JSON形式のデータを高速で処理するためのライブラリです。
Webアプリケーションを開発していると、JSON形式のデータを数多く処理する必要があります。
その際、自前で実装せずに、しかも高速にデータをやり取りできます。
JSONを使うアプリケーションなら、ほぼ必須といえるライブラリです。
まとめ
Javaのフレームワークやライブラリを使うと、自分で作るより高性能、高品質なものを簡単に開発できます。
これによりアプリケーション開発のハードルが大きく下がります。
もし自前での開発に行き詰まりを感じている場合は、ぜひ便利フレームワークやライブラリが提供されていないか確認してみてください。
また、Javaでの開発をもっと効率的に行いたいときは、IDE(統合開発環境)を使うことを強くおすすめします。
IDEを使用すると、面倒な環境構築作業が簡略化でき、コーディングから実行、デバッグまでを1つのソフトで完結できます。
IDEの便利な機能や、Java開発におすすめのIDEをご紹介しているので参考にしてください。