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

Javaは数あるプロラミング言語の中でも、幅広い分野で多く使われている言語で、組み込みアプリケーションやスマホアプリ、Webアプリなど、用途は多岐に渡ります。

この記事では、普段は eclipse などの統合開発開発環境を使っていて、あまり意識しないが、Java のソースコードをコンパイルしたり、実行したりする上で重要な Java コマンドについて解説します。

Javaコマンドとは?

前述のように、Java コマンドとは Java アプリケーションのコンパイルや起動するためのコマンドだ。

主に Java ソースをコンパイルする時はjavacコマンド、Java アプリケーションを実行するときはjavaコマンドを用います。

「javac」コマンドでソースコードをコンパイル

まず、コンパイルするためのソースコードを準備します。

次のコードは、コンソール上に「Hello Java」と表示する基本のサンプルコードです。テキストエディタ等で次の内容をコピーして、「Main.java」というファイル名で保存しましょう。

class Main {
    public static void main(String args[]){
        System.out.println("Hello Java!");
    }
}

ファイルの準備ができたら、作成した Java コードをコンパイルしましょう。
コンパイルというのは簡単にいえば、ソースコードをコンピュータが読めるような言語に翻訳する操作のことです。

ターミナル(Windowsの場合はコマンドプロンプト)を起動し、サンプルコードを作成したディレクトリを表示します。

cd <ファイルを作成したディレクトリ>

次に、javacコマンドでコンパイルを行います。

javac Main.java

コンパイルが正常に終了すると、同じディレクトリに「Main.class」という名前でクラスファイルが生成されます。

ポテパンダの一言メモ

クラスファイル(.class)とは、Javaで書かれたソースコードを、コンピュータが分かる言語に置き換えたファイルで、Java仮想マシン (JVM) はこのクラスファイルを読み込みプログラムを実行します。

外部ファイルを読み込むには?

実際のアプリケーション開発では、単一のJavaのソースコードで完結することはなく、外部のライブラリなどを読み込む必要があり、その場合は、オプション指定して参照先のクラスファイルやJARファイルを指定します。

javacコマンドの使用方法は、次のようにjavac -helpと入力することで、コマンドの使用方法をコンソール上に出力できます。

$ javac -help
使用方法: javac <options> <source files>
使用可能なオプションには次のものがあります。
  -g                         すべてのデバッグ情報を生成する
  -g:none                    デバッグ情報を生成しない
  -g:{lines,vars,source}     いくつかのデバッグ情報のみを生成する
  -nowarn                    警告を発生させない
  -verbose                   コンパイラの動作についてメッセージを出力する
  -deprecation               非推奨のAPIが使用されているソースの場所を出力する
  -classpath <path>          ユーザー・クラス・ファイルおよび注釈プロセッサを検索する位置を指定する
  (以降省略)

例えば、ログ出力のライブラリとしてよく用いられる「log4j」をクラスパスに指定して、Javaのソースコードをコンパイルする場合は、次のようなコマンドを使用します。

$ javac -classpath c:\jakarta-log4j-1.2.8\dist\lib\log4j-1.2.8.jar Main.java

クラスパスはファイル名を完全パスで指定する方法の他に、ワイルドカードを使用して、複数まとめて指定することが可能です。

例えば「lib」フォルダ直下にある、.classファイルやJARファイルなどの外部依存のライブラリなどを、まとめて指定する場合は、次のように-classpathオプションを指定します。

javac -classpath 'lib/*:lib/sublib/*' Main.java

「Javaコマンド」でアプリを実行

コンパイルができたら、次は「java」コマンドを使用して作成したJavaアプリケーションを実行してみます。

上で作成したクラスファイル(Main.class)を実行して、コンソール上に「Hello Java」と表示させてみます。

cd <クラスファイルを作成したディレクトリ>
java Main

実行すると、次のようにコンソールに「Hello Java」の文字が出力されれば成功です。

Hello Java

外部ファイルを読み込む

javacでコンパイルする時も同様でしたが、作成したアプリケーションが外部のクラスやライブラリ(JAR)に依存している場合は、実行時に-classpathオプションで外部ライブラリのパスを指定してあげる必要があります。

java -classpath path/to/lib Main

また、-classpathオプションは省略して次のように-cpオプションとして書くこともできます。

java -cp path/to/lib Main

引数を渡してJavaを実行する

コマンドで Java アプリケーション実行する時に、引数を指定できます。

まず、サンプルコードを次のように編集して、渡された引数の情報をコンソールに表示できるようにします。

class Main {
    public static void main(String[] args){
        for (int i = 0; i < args.length; i++) {
            System.out.println(String.valueOf(i) + ":" + args[i]);          
        }
    }
}

引数は、javaコマンドの末尾に指定します。また複数の引数を指定する時はスペースで区切って指定します。

引数を2つ指定して Java コマンドを実行する場合は、次のように記述します。

java Main Java Python

複数のクラスまとめたJARファイルを作成する

アプリケーションの規模が大きくなるにつれて、javacでコンパイルするクラスの数も多くなってきます。Java は分割コンパイルする言語であるため、Java のクラス1つにつき、クラスファイル(.class)が作成され、大規模なシステムであれば数千個以上のクラスファイルが作成されることが大いにあります。

分割コンパイルによるメリットもありますが、ひとつのプログラム(システム)はひとつのファイルにまとまっていた方がバージョン管理や配布をするときに便利です。

こういう時のために、Javaではjarコマンドを使用して複数のクラスファイルやリソースファイルをまとめて Java アーカイブ (JAR ファイル, *.jar)として、ひとつのファイルにパッケージできます。

jarコマンドの使い方

実際にjarコマンドを使用して、複数のクラスファイルをまとめて1つの JARファイルを作ってみましょう。

まず、次の2つのクラスを作成・コンパイルし、クラスファイルを生成しておきます。

//「Person.java」
package myapp;

public class Person {
  private String name;

  public Person(int age, String name) {
    this.age = age;
  }
}
//「Main.java」
package myapp;

public class Main {
    public static void main(String args[]){
        Person person = new Person();
    }
}

クラスファイルの準備ができたら、次のjarコマンドを実行し、2つのクラスファイルを1つのJARファイルにまとめます。

jar cfe MyApp.jar Main *.class ./myapp/*.class

まとめ

Javaのコマンドを使用して、ソースコードをコンパイルする方法や、アプリを実行する方法などを解説してきました。

普段は eclipse などの統合開発開発環境(IDE)を使って効率的に開発した方がよいため、あまりコマンドを利用するシーンは少ないかもしれませんが、時には統合開発環境(IDE)が使えない時もあるため、今回紹介したコマンドの存在について、是非知っておきましょう。

【関連記事】
Javaアプリの5つの種類や開発手順、サイト・本などまとめて紹介!

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

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

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

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

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

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

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

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

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

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

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