Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

Javaでプログラム開発を行う際、jarという拡張子のファイルを見かけたことがある方も多いと思いますが、jarファイルの役割については理解出来ているでしょうか。

本記事では、Javaプログラミング初心者の方向けに、jarファイルの概要から基本的な使い方についての情報をご紹介していきます。

Javaのjarファイルって何?


Javaでのプログラム開発を行っていると必ずと言って良いほど、拡張子が「.jar」となっているファイルを見たことがあるかと思います。

このjarファイルについて、まずは基本情報から確認していきましょう。

jarファイルとは

jarファイルは、「Java Archive」ファイルの略称で、「アーカイブ」つまりJava開発で利用するファイルをまとめて保管しているファイルということになります。

具体的には、jarファイルはコンパイル済みのclassファイルや画像などのファイルを、zip形式に圧縮してまとめたファイルです。

jarファイルはなぜ利用される?

Javaのシステム開発では、いくつものファイルが組み合わさることでシステムとして稼働するように構築していきます。

全てのファイルを1つにまとめると容量が非常に大きくなってしまうことも少なくありません。

ファイルを圧縮して1つのファイルにまとめることで、大幅に容量の節約が可能となります。

さらに、jarファイルはzip形式のファイルと異なり、jarファイルの状態で使用することが出来るメリットがあります。

zip形式のような解凍作業は不要で、利便性が高くなっている点もjarファイルが利用される要因です。

jarファイルの基本的な使い方


jarファイルの作成や展開、実行といった基本的な使い方について確認していきたいと思います。

「jar」コマンドを基本に、それぞれの処理に応じたオプションを付与する形で実行します。

ポテパンダの一言メモ

今回掲載する内容はMac環境のターミナルで動作確認を行っています。
基本的には同様のコマンドをWindows環境でも利用出来るかと思いますが、必要に応じて適宜読み替えをお願いします。

サンプル

今回のサンプルでは「Document」配下に「sample」フォルダを作成し、下記のファイルを格納しています。

sample $ ls
3176675_s.jpg	Main.java	Sub1.java

Main.javaとSub1.javaの記述内容は下記の通りです。

Main.java
import java.io.*;

public class Main {
    public static void main(String[] args) throws Exception {
      Sub1 sub1 = new Sub1();
      System.out.println(sub1.content);
    }
}
Sub1.java
public class Sub1 {
  String content = "Sub1クラスからの出力です。";
}

「Main.java」から「Sub1.java」に記載した文字列を呼び出して、ターミナルに出力出来るように記述しています。

classファイルの作成

Javaのソースコードを実行するためには、「.java」拡張子のファイルを「.class」ファイルにコンパイルする必要があります。

まずは用意したサンプルファイルを、下記コマンドでコンパイルしておきましょう。

javac Main.java 

コンパイルに成功すると下記のように、同一フォルダにclass拡張子のファイルが出力されていることをご確認頂けます。

sample $ javac Main.java 
sample $ ls
3176675_s.jpg	Main.class	Main.java	Sub1.class	Sub1.java 

jarファイルの作成

次にjarファイルを作成するコマンドについてご紹介していきます。

新規でjarファイルを作成する例としては、下記のようなコマンドが挙げられます。

jar -cvfm jarファイル名 マニフェストファイル名 圧縮するファイルを指定

「jar」コマンドはjarファイルを作成する基本となるコマンドで「-」の後ろの「cvfm」がオプションです。

よく利用されるオプション一覧
  • -c: jarファイルの新規作成
  • -v: コンソールに処理内容を表示
  • -f: jarのファイル名指定
  • -t: jarの中身を一覧表示
  • -x: jarファイルの展開
  • -u: jarファイルの更新
  • -m: マニフェストファイルの指定
  • -C: 指定ファイルの取り込み

サンプルでは下記のように記述してみます。

jar -cvfm sample.jar manifest.mf .

今回の場合、現在のディレクトリにあるファイルを全て「sample.jar」というファイル名で圧縮するという意味合いになります。
※出力情報をコンソールに表示するオプションも追加しています。

実行した結果が下記のように表示されます。

sample $ jar -cvfm sample.jar manifest.mf .
マニフェストが追加されました
Sub1.classを追加中です(入=284)(出=244)(14%収縮されました)
manifest.mfを追加中です(入=17)(出=17)(0%収縮されました)
.DS_Storeを追加中です(入=6148)(出=275)(95%収縮されました)
3176675_s.jpgを追加中です(入=118125)(出=116590)(1%収縮されました)
Main.javaを追加中です(入=179)(出=136)(24%収縮されました)
Sub1.javaを追加中です(入=82)(出=84)(-2%収縮されました)
Main.classを追加中です(入=514)(出=340)(33%収縮されました)

lsコマンドでディレクトの中身を確認してみると、指定したファイル名でjarファイルが作成されていることをご確認いただけます。

sample $ ls
3176675_s.jpg	Main.java	Sub1.java	sample.jar
Main.class	Sub1.class	manifest.mf

マニフェストファイルはjarを実行する際に必須となるため、マニフェストファイルの作成方法についても合わせて学んでおきましょう。

マニフェストファイルを作成する

マニフェストファイルは、「.mf」拡張子のファイルです。

ファイル内部には下記のように、Mainメソッドを有するクラス名を記述します。

Main-Class: Main

[Main-Class:クラス名]の形式で記述します。

今回の場合、Mainメソッドを有するクラスが「Main.java」であるため、「Main」と指定しています。

ポテパンダの一言メモ

文末で必ず改行するようにしてください。
改行しないと正しく実行出来ない場合があるようです。

jarファイルの実行

では作成したjarファイルを実行してみたいと思います。

jarファイルの実行は「java -jar」と記述し、ファイル名を指定することで実行可能です。

sample $ java -jar sample.jar
Sub1クラスからの出力です。
ポテパンダの一言メモ

ちなみにマニフェストファイルを作成せずにjarファイルを作成して実行した場合、下記のようなエラーが出力されますので確認しておいてください。

sample $ java -jar sample.jar
sample.jarにメイン・マニフェスト属性がありません

jarファイルを展開する

jarファイルの中身についてもtオプションを利用して確認しておきましょう。

jar -tf sample.jar

tオプションが展開を意味し、fオプションでファイル名を指定しています。

実行した結果が下記の通りです。

sample $ jar -tf sample.jar
META-INF/
META-INF/MANIFEST.MF
Sub1.class
manifest.mf
.DS_Store
3176675_s.jpg
Main.java
Sub1.java
Main.class

今回の場合、カレントディレクトをそのままjarファイルとして圧縮しているため、jpgファイルやjavaファイルなども含まれています。

さいごに: Javaでのプログラミング開発には欠かせないjarファイルの役割を理解しよう


本記事では、Javaでのプログラミング開発には欠かせないjarファイルに関する情報と基本的な使い方についてご紹介してきました。

最近はIDEを利用した開発が大半で、jarファイルを利用してはいるけれども実際の使い方については理解できていないような方も増えています。

今回ご紹介したような基本となる使い方を理解して、曖昧な理解のままjarファイルを利用しなくて良いように学習を進めていきましょう。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。