Javaライブラリは、Java開発をするエンジニアにとって不可欠なものです。
しかし、どのようなライブラリがあって、どれを選べばよいのか、わからない方もいるでしょう。
本記事では、Javaライブラリの種類や使用メリット、各種ライブラリの一覧情報、おすすめのフレームワークなどを紹介します。
目次
1.Javaライブラリとは
プログラミングにおける「ライブラリ」とは、プログラムを集めて1つにまとめ、呼び出して使えるようにした格納ファイルを意味します。Javaライブラリは、Javaの開発で使用する機能をライブラリとして集めたものです。「Javaクラスライブラリ」と呼ぶ場合もあります。
ライブラリはその機能を独立して実行することができず、あくまでも補助的な役割を担うのが特徴です。Javaライブラリの場合、「.jar」の拡張子が付くJARファイルで提供されます。
Javaライブラリを使うときは、すべてを1からインストールする必要はありません。Java開発に使う「JDK(Java 開発キット)」を導入する際に、「標準ライブラリ」がすでに組み込まれています。
また、JDK以外にもJavaの開発環境を構築できる「Eclipse(統合開発環境(IDE))」があります。Eclipseにも初期のライブラリが含まれています。そのため、必要性の高いライブラリは再取得する必要がありません。さらに追加でフレームワークを入れることもできます。
初心者の場合、必要な日本語化プラグインなどを用意した「Pleiades All in One」を導入することで、初期設定の手間を省いてライブラリを使えます。
ライブラリの種類
Javaライブラリには、「取得方法の種類」と「役割の種類」の2つの分類の仕方があります。
取得方法の種類
まず、取得方法の種類は以下の2つです。
標準ライブラリ
外部ライブラリ
JDKで最初から開発環境に入っているものが「標準ライブラリ」です。
一方、それ以外に手動で組み込むものは「外部ライブラリ」と呼ばれます。別途、開発で必要となるライブラリは外部から追加する形で新規ライブラリを組み込むため、こうしたものを「外部ライブラリ」と呼びます。
役割の種類
次に、役割から区別した種類では、データベースやグラフィック、ネットワーク、セキュリティなど使われる用途や分野によって種類分けされるものです。取得方法の種類とは大きく異なり、これには多くの種類があります。そのため、外部ライブラリを導入する場合は、必要なものを自分で選んで組み込む必要があるのです。
フレームワークとの違い
JavaライブラリとJavaで使われるフレームワークには、大きな違いがあります。まず、一般的にライブラリはプログラムの部品で、フレームワークは開発の「雛形」となる土台です。
ライブラリは必要に応じてその部品を使用するイメージです。例えば、Javaライブラリなら必要に応じて使うプログラム数を調整したり、別の部品を組み合わせて使ったりします。それに対し、フレームワークはすでに半分完成したプログラムを個別に仕上げるイメージとなります。
フレームワークを使うと1からシステムを作るよりも短い時間で完成します。しかし、自由度は高くありません。Java開発では、ライブラリとフレームワークを必要に応じて使用目的や場面・状況で使い分けます。
2.Javaライブラリでできること
Javaライブラリを組み込むことで、Java開発でできることが増えたり、開発効率が高まったりします。
特にフリーランスエンジニアにとっては開発案件の幅を広げるスキルアップの機会です。そこで、以下にJavaライブラリでできる主要な機能を3つ挙げます。
文字列の操作
まずJavaの開発環境には、文字やファイルの操作ができる標準ライブラリがあります。例えば「Stringクラス」と呼ばれるもので、最初にStringのコードで宣言して記述することができます。
クラス名が「String」で変数名が「str」です。「new String」のようにnew演算子でも記述可能です。文字列の操作はさまざまな場面で使われるため、分割・結合や置き換えなどをよく使う場合は、nullの問題を避けやすいメソッドや独自の「StringUtilsクラス」を使った外部ライブラリ(Google Guavaなど)の導入も検討します。
日付の操作、数値計算
次に、標準ライブラリ搭載の機能でよく知られる日付の操作や数値計算です。日付の操作は、日付を「年、月、日、時間、分、秒」の値で捉えて、日付の現在時刻やタイムゾーン、フォーマットなどの機能を使うことが可能です。日付ライブラリは、主に「Date Time API」で利用することができます。最新版のものを利用するのがおすすめです。
ただし、古いライブラリによっては日付機能のすべてを網羅しておらず、タイムゾーンや地域対応ができないケースもあります。「Date Time API」はJava 8からのパッケージに採用されているものです。
また、数値計算は、関数や対数、平方根、行列など数学で使う式の解を示すために計算を実行する「マス(math)ライブラリ」です。簡単な基本計算から複雑な計算までできます。具体的には、staticの修飾子と各種メソッドを使用して決まった計算内容を指定する方法です。
例として修飾子と型が「static double」のメソッド「abs(double a)」では、aの絶対値を計算して値を返します。これらをMathクラスでライブラリとして実行します。
画像処理
3つ目は、画像処理のできる標準ライブラリです。画像処理とは、ファイルを操作して画像ファイルを書き込みや読み込みをすることです。応用的な画像処理は外部ライブラリが通常となりますが、Javaには標準で「javax.imageio」があり、これらの各クラスとプラグインがパッケージとしてまとめられています。
具体的には、staticメソッドを通じて画像ファイルのイメージI/O操作を実行することが可能です。そのため、イメージ形式を変換しての実行や書き込み・読み込みのプロセス制御などを行えます。
その他
上記に挙げた標準ライブラリ以外にも、さまざまな外部ライブラリがあります。例えば、メインのGUI(グラフィカル・ユーザー・インターフェース)やCSVファイルの操作、構文解析、JSONファイルの形式変換、SSHプロトコルの操作、機械学習などです。
システム開発に必須ではありませんが、ライブラリがあると便利で必要に応じて導入することが開発効率を高めます。
3.Javaライブラリを使用するメリット
Javaライブラリを使うことには、以下の3つのメリットがあります。
実装作業の短縮やコードを減らす
1つ目のメリットは、実装部分となるコーディング作業の短縮や実際のコード量を減らせることです。
もともとライブラリには、部品を提供して機能を実行する役割があります。Javaでコードを書く際に、ライブラリがあれば、その機能の個別プログラムをコード記述せず使えます。
つまり、ライブラリから実行する場合、エンジニアは面倒な長いコードを書く必要もなくなるのです。使用の際に、コードをコピーする必要もありません。
搭載されたJava開発の機能を活用できる
2つ目のメリットは、1から機能を組み込んでシステム構築しなくても、ライブラリの機能を活用できることです。
本来、Javaはプログラミング言語の中でもオブジェクト指向で拡張性が高く、新たな機能を追加することも難しくありません。しかし、機能を組み上げる作業は時間がかかります。
既存のJavaライブラリの機能を活用しつつ無駄な作業を省くことで、メインの開発部分に集中できます。
複雑なタスクの処理を可能にする
3つ目のメリットは、複雑なタスクでも処理が可能なことです。
システムを開発する際に、簡易コードを書いてJavaライブラリから部品として実行することができます。複雑な処理をさせたい場合でも、ライブラリを呼び出す記述をするだけで自動的に実行されるのです。
複雑なタスクは論理構造を考えるのも大変ですし、コード記述が多ければバグも発生しやすくなります。そういったリスクも同時に減らせるのです。
4.【厳選】おすすめのJavaライブラリを搭載したフレームワーク5選
ここでは、数多くあるJavaライブラリをまとめて使えるフレームワークを厳選し、おすすめのものを5つ紹介します。
Spring Framework
「Spring Framework」は、2004年に登場して以来、多くの企業が採用しているJavaライブラリのフレームワークです。Javaアプリケーションのサーバー上にWebアプリ開発を効率的に行える魅力があります。
また、「依存性注入(DI)」の機能により、実装処理の付け替えと分離が可能です。そのため、デバッグや追加・拡張が容易です。
ちなみに、過去に人気のあった「Apache Struts」のフレームワークが脆弱性やセキュリティホールの問題が起こり、現在ではその代替として「Spring Framework」が利用されることもあります。
ただし、大規模開発に対応したフレームワークということもあり、多彩な機能を用途によって切り替える使い方が難しいという問題があります。
Spring Boot
先のSpring Frameworkには、複雑な機能の問題があり、それを補うために開発されたのが「Spring Boot」のフレームワークです。機能をスリム化して、その動きの軽さを実現しています。2014年にリリースしてから、エンジニアの間で瞬く間に広く知られるようになりました。
例えば、手動で設定が必要な設定や初期設定を自動で行う機能です。また、ビルド構成を簡易化する依存性注入(DI)の初期スターターが用意されています。それから、スタンドアロンのSpringアプリケーションを作成することも可能です。
JUnit
「JUnit」は、ユニットテストを自動化するJavaライブラリのフレームワークです。ユニットテストとは、「単体テスト」を指します。
「ユニット(単体)」ごとに、正常に機能が実行されているか確かめるテストのことです。テストケースを作成したり、アサーション(条件を満たした記述)をチェックします。
1997年に開発されたこともあり、長くJavaのライブラリとしてユニットテストとして使われています。Javaのシステム開発分野では、すでになくてはならない存在です。
Spark Framework
「Spark Framework」は、Javaを使って実装したマイクロフレームワークです。マイクロフレームワークとは、機能を絞って特定の作業に特化したフレームワークのことです。
規模の小さいプロジェクトのWEBアプリ開発に向いています。特に「Java Virtual Machine (JVM)」を活用しやすく、Spark(ラムダ式とstaticメソッド)の簡素なコードで効率的にコーディングできるのが魅力です。
また、内部サーバーを使い実行できるため、複数のデータセットで動かすことができます。
Google Guava
「Google Guava」は、Google社が開発したオープンソースによるJavaライブラリです。同時に、ユーティリティ系のフレームワークでもあります。オープンソースの理由は、GitHubで開発されているためです。
代表的な機能として、文字列操作やファイル操作、アノテーション、Cache(キャッシュ)の取得・削除などがあります。
コーディング時のコード記述を短くすることに優れており、処理も軽くて使いやすく、機能の近いApache commonsの代替として使用することも可能です。
関連記事
5.Javaライブラリの導入手順
ここで気になるのが、Javaライブラリの導入のやり方です。そこで、Javaライブラリを導入する際の手順を以下に解説します。
手順1.使用予定のライブラリのダウンロード
まずは、使いたいJavaライブラリを決めてダウンロードします。ダウンロードが必要なライブラリは基本的に外部ライブラリが対象です。そのため、具体的にどのような機能が使えるか事前に調べて決める必要があります。
手順2.ダウンロード済みライブラリのインストール
次に、ダウンロードを済ませた外部ライブラリを開発環境のプロジェクトにインストールします。
例えば、Eclipseを使用する場合はプロパティの「Javaビルド・パス」のメニューから「外部JAR」を選んでインストールすることが可能です。
上記は一例で、開発環境のバージョンや種類(IDE、JDKなど)にあわせて、外部ライブラリのインストール方法の操作マニュアルを都度チェックする必要があります。
手順3.ライブラリの実行
最後は、インストールしたライブラリの実行です。コマンドラインツールを使用してライブラリのパスを指定したコンパイルと実行を行います。
ちなみに、MavenやGradleなどのビルド管理用ツールを使う場合は、最初にツールをダウンロードします。次に、コマンド操作から環境変数のパスを設定し、JARファイルを追加・インストールします。
6.Javaライブラリの確認方法と一覧
Javaライブラリを確認するには、標準ライブラリなら統合環境のIDE、JDKのライブラリやパッケージを確認します。
また、初期の開発環境導入時に入っていない外部ライブラリは、個別に確認して前述の導入手順でインストールします。
以下は、セットで付属する「標準ライブラリ」と注目度の高い「外部ライブラリ」の一覧です。
標準ライブラリ一覧
Swing(GUI操作)
Scanner(文字や数値の入力解析)
javaパッケージ
java.lang(基本の言語機能)
java.util(複数のユーティリティ機能)
java.io(ファイルやストリームの入出力)
java.math (高い精度の計算)
java.net(ネットワーク通信)
java.nio(バッファや非同期I/O)
java.text(テキストの解析やフォーマット)
java.time(日時のAPI)
外部ライブラリ一覧
OpenCSV(CSVの操作)
Super CSV(CSVファイルの操作)
OpenCV(画像処理)
JFreeChart(グラフ描画)
JavaFX(GUIアプリのインターフェース作成)
Jackson(JSONとJavaオブジェクトの互換)
JSON In Java(List型、Map型を互換)
JavaParser(コード構造の解析)
JSch(SSHプロトコルのサポート)
Apache Mina SSHD(カスタム性の高いサーバー構築)
Tribuo(機械学習)
TensorFlow(ニューラルネットワーク)
Deeplearning4j(ディープラーニング)
7.Javaのライブラリ作成の仕方
Javaライブラリは、既存のものを使うだけでなく、新たに作成することもできます。そこで、ライブラリの作成の仕方を以下に解説します。
プロジェクト作成
まずは、開発環境(JDK、IDE)のソフトウェアを起動して、プロジェクトを作成します。上記ソフトウェアの機能から新規プロジェクトの立ち上げで作成することも可能です。
パッケージ作成
次に、プロジェクト内のパッケージを作成します。ライブラリは基本的にプロジェクトとパッケージ、クラスの構成で、複数のクラスをプロジェクトでまとめることが可能です。
このとき、クラス名が他と被らないように、パッケージ名は「リバースドメイン名」を使用します。リバースは「逆」を意味し、ドメイン形式を後ろから記述したものです。例えば、「~.com」を「com.~」という形で逆順にします。
クラス作成
パッケージ名を作成したら、今度はクラスを作成します。クラス名をつける際は、わかりやすさを重視して、基本はファイル名と同じにします。
英語の表記ルールと同様に、太文字で開始し、役割や属性の名称を自分で決めます。例えば、「ログイン処理」の役割からクラス名を決める場合は、大文字と英語で「LoginProcess」といった具合に英語で名付けるのです。
メソッド作成
クラスの後は、メソッドの作成です。メソッドとは、オブジェクト指向において処理の手順を示す用語です。ライブラリの機能を利用するにはこのメソッドのコーディングが欠かせません。
試験コードの作成
メソッドのコードを記述して作成したら、実際にライブラリの動作試験を行うコードを仮作成します。あくまでも試験的な実行のため、その場の実行コードを用意します。
JARファイル作成
最後は、JARファイル(拡張子「.jar」)を作成します。ライブラリを他のライブラリなどと同じように使用するためには、JARファイル化が必要です。
開発環境でライブラリを作成している場合は、簡単にJARファイルで保存することができます。一度作成したファイルは、変更などを加える場合にリリース情報を変更して、ファイルを更新することで管理します。
8.Javaライブラリのよくある質問
ここでは、Javaライブラリに関する疑問や悩みなどの質問に回答します。
Javaライブラリを使わずに開発できる?
Javaライブラリを使用しない開発はもちろん可能です。これを「スクラッチ開発」と呼びます。
独自開発の手法で、ライブラリやフレームワークを使用せず、1からシステムを組み上げます。しかし、スクラッチ開発には時間と費用がかかるため、ライブラリを使用するのが一般的です。
ただし、Java開発の魅力は、その自由度の高さにあるため、他のプログラミング言語に比べると、スクラッチ開発しやすい特徴もあります。
JavaライブラリでAIの機械学習は使える?
Pythonのライブラリでなくても、JavaライブラリでAIの機械学習は使えます。理由は、機械学習のできるJavaライブラリがあるからです。
例えば、外部ライブラリの一覧で挙げた「Tribuo(機械学習)」「TensorFlow(ニューラルネットワーク)」「Deeplearning4j(ディープラーニング)」などが代表的です。特に「Deeplearning4j」はAI向けのJavaライブラリとしてよく使われています。そのため、AI開発にライブラリを活用したいエンジニアの方におすすめです。
JavaライブラリはどのJavaバージョンでも使える?
いいえ、Javaライブラリは、そのバージョンによって使えるJavaバージョンが異なります。Javaライブラリは普段からバージョンにあった更新がされています。最新のバージョンには、最新のバージョンに対応するJavaライブラリが必要です。
すでにインストールされている場合は、アップデートを確認してバージョンの対応状況をチェックすることです。
関連記事
Javaプログラミングで何ができる?始め方や基本文法、練習サイト5つを紹介
JavaScriptライブラリとは?おすすめの使い方や導入方法などわかりやすく解説
9.まとめ
今回は、Javaライブラリでできることや代表的な標準・外部ライブラリの紹介、おすすめのフレームワークなどを取り上げました。Javaライブラリは、Java開発をスムーズかつ効率的に行うために必要なものです。
ライブラリの種類には、開発環境の初期についてくる「標準ライブラリ」と「外部ライブラリ」があり、多彩な機能は外部ライブラリをインストールして使うのが基本となります。
本記事ではよく使われる標準ライブラリや外部ライブラリを一覧にしているので、使いたいものを選ぶことです。加えて、厳選したライブラリ機能を活用できるフレームワークもあります。
導入方法を参考に、開発環境に取り入れてシステム開発の効率化を目指しましょう。
本記事が皆様にとって少しでもお役に立てますと幸いです。