【Java】ライブラリ、API、フレームワークの違い

みなさん、こんにちは!
こうへい(@kohei72901660)です。
よく開発現場でライブラリ、API、フレームワークとかよく聞く言葉かと思います。その違いについて曖昧だっだのでまとめたいと思います。
違いを知る前に(雑談)
ライブラリ、API、フレームワークがあるとコーディングにかける時間は削減することができることは皆さん知っていますよね!
私は正直言葉の意味が曖昧でした笑
開発現場で単語が出てきても、ふ~ん(すまし顔)で受け流してましたね笑
私だけでしょうか?共感できる人いたら嬉しいです!笑
それはさておき、ただ頼まれた機能をコーディングするだけなのは新人の時ぐらいで、ライブラリ、API、フレームワークをうまく使いながらシステムを構築する必要が出てきます。
実際にそうなったときに私は直面しました。。
基本的なことかとおもいますが、違いを理解していることでスムーズに会話も進めることができると思いますのでまとめてみたいと思います。
ライブラリとは
単体では意味をなさいがシステムに組み込むことで機能を使うことができます。つまり、システムを制御する箇所は自分で書いて、一から書くとめんどくさい機能はあらかじめライブラリとして配布されているので、その機能を使うことができるということです。
javaの場合ですとクラスごとに.classファイルがあり、その集合体でクラスライブラリといったりします。クラスライブラリは.jarファイル(java アーカイブ)で配布されているかと思います。
API(Application Programming Interface)とは
OSが提供する機能やwebサービス(Twitterとか)を使うことを可能にします。
javaの場合はクラスライブラリ経由でOSのAPIにアクセスするみたいです。
クラスライブラリとも呼ぶことがあります。
そう、ライブラリとも言うんです笑
外部の機能にアクセスするためのクラスライブラリといったところでしょう。
フレームワークとは
システムを制御する部分のことを言います。
つまり、制御する部分はフレームワークをつかって、呼び出し先は自分で作成します。機能を拡張していくといった感じかと思います。
フレームワークを用いる理由としては、開発現場のエンジニアによってスキルの違いやコーディングの癖があったりします。その違いがあると保守にかける工数が多くなってしまうので、書き方に決まりを持つことで保守性を高めるのが理由かと思います。また、システムを制御するインタフェースを作るのは難しいので、単純に開発工数削減につながるのかと思います。
どんな形式のファイル?
おそらくライブラリもAPIもフレームワークもすべて.jarファイルで配布されているかとおもいます。
jarファイルなので、javaクラスの集合体なんですね!つまり、クラスライブラリ!
あとは、APIはフレームワークの中に組み込まれていたりします。(多分)
だから、境界線があいまいになるのか。。。
もしかして曖昧なのは僕だけかもしれませんが笑
インストール方法
Maven等のビルドツールでインストールするのが一般的かと思います!
配布サイトから直接ダウンロードして、jarファイルをクラスパスに通しても大丈夫かと!
最後に
まとめてみましたが、すべて便利な機能をまとめたものなんです!
使い方が違うだけといったところでしょう。
参考になったら幸いです!
次はMavenでのインストール方法とかまとめようかなと思ってます!
人気記事①:【決定版】Java初心者におすすめの入門書5選【結論:関連技術も学ぶべき】
人気記事②:現役エンジニアがおすすめするプログラミングスクール5社:無料あり
