2. Javaアプリケーションの実行
JDKのインストールが終わったところで、早速Javaアプリケーションを作って実行してみましょう。Javaアプリケーションを作成して実行する手順は、次のとおりです。
- Java言語で書かれた「.java」拡張子を持つテキストファイル(ソースファイル)を作成
- ソースファイルをコンパイル(書かれたソースコードを解析してJavaが実行できるバイトコードファイルに変換)し、「.class」拡張子を持つファイルを作成
- クラスファイル(「.class」拡張子を持つファイル)のmainメソッドの実行
2.1. Javaソースファイルの作成
それではJavaソースファイルを作成してみましょう。まず、任意のフォルダに「.java」拡張子を持つファイルを作成します。このファイルはテキストファイルなので通常のテキストを編集するソフト(Windowsならメモ帳、Macならテキストエディットなどのテキストエディタ)を立ち上げて保存時に「.java」拡張子で保存するか、もしくは何も書かれていないテキストのファイルを作成して拡張子を「java」と変更することでJavaのソースファイルを作成することができます。今回は「HelloWorld.java」というファイルを作成します。
次に作成したHelloWorld.javaをテキストエディタで編集します。作成したソースファイルにJavaのソースコード(プログラミング言語で書かれた処理の記述)を記述します。Javaの文法については次回の連載以降に細かく説明していくのでHelloWorlod.javaのサンプルと同じように書いてみてください。その際に次のことに注意してください。
- 大文字と小文字は区別します。
- アルファベットおよび記号は半角のみを使います。
- ソースコード中の空白は半角スペースのみで全角スペースは使いません。
- 字下げ(インデント)は空白のみでおこなっても、「Tab」キーを使ったタブ文字のどちらでも構いません。
また、ソースファイルの文字コードはJavaがサポートしている文字コードなら何でもよいのですが、最近の開発では多くの現場でUTF-8が使われているので、この連載でもUTF-8で記述されていることを前提として話しを進めていきます。
public class HelloWorld { public static void main(String[] arg) { System.out.println("Hello World!!"); } }
今回はこのHelloWorld.javaをWindowsだと「ドキュメント」フォルダに、Macだと「書類」フォルダの中に、それぞれ「sample」というフォルダを作って、そこに保存します。
WindowsまたはMacに標準装備されているテキストエディタの場合、JavaのファイルをUTF-8で保存するにはちょっとした設定が必要です。主に行う設定は次のとおりです。
Windows(メモ帳)の場合:
Javaソースファイルの保存時に次の設定が必要になります。
Mac(テキストエディット)の場合:
Macのテキストエディットの場合、デフォルトだとファイルのフォーマットがリッチテキストになっていてJavaのソースファイルとして認識されないフォーマットになっています。また自動で誤字などを修正する機能がソースコードのキーワードを誤字と認識して自動で変換することもあります。つまり、そのままでは入力していない不要な文字や自動修正が入ってしまい、Javaソースファイルとして使えなくなってしまいます。そこでこの現象を防ぐために、テキストエディットで新規ファイルを開いたら、次の設定を行う必要があります。
環境設定を開くにはまず、テキストエディットで編集しているファイルを選択した状態にして画面上部のメニューに「テキストエディット」を表示させます。そしてそこから「環境設定…」を選択すると環境設定が開きます。ここではフォーマットを「標準テキスト」を指定しています。次にオプションがデフォルトのままだと自動でミススペルや特定の文字などが変換されるので、その機能をオフにします。これを指定しておかないとダブルクォーテーション「"」などが自動で書き換えられて、後で説明をするコンパイルを行う際に失敗してしまいます。
また、ファイルの最初の保存時にエンコーディングの指定があるので、そこで「Unicode (UTF-8)」を選択します。
2.2. Javaソースファイルのコンパイル
コンパイルとは人が読めるJavaのソースファイルを解析し、Javaが実行できる形式に変換されたクラスファイル(「.class」拡張子を持つファイル)を作成することです。コンパイルを行うにはインストールしたJDKが持っているjavacコマンドを実行します。それでは前述のHelloWorld.javaをコンパイルしてみましょう。
1. Windowsの場合はコマンドプロンプト、Macの場合はターミナルを開きます。そしてコンパイルを行うため、HelloWorld.javaのあるフォルダをカレントディレクトリ(コマンドプロンプトもしくはターミナルが現在指しているフォルダの場所)にします。カレントディレクトリにするには次のcdコマンドを実行します。
cd HelloWorld.javaがあるディレクトリ(フォルダの場所)
例えば、今回はWindowsだと「ドキュメント」フォルダに、Macだと「書類」フォルダにsampleフォルダを作ってHelloWorld.javaを保存しているので、次のように入力してカレントディレクトリを指定します。
cd C:\Users\ユーザ名\Documents\sample
cd /Users/ユーザ名/Documents/sample
またコマンドを打つ際の注意事項として、ユーザ名以外の英数字や記号およびスペースは半角で入力します。
もしユーザ名に空白が含まれている場合は「"」(ダブルクォーテーション)で入力するディレクトリを囲います。コマンド上での空白は入力値の区切りなど特別な意味があるためダブルクォーテーションで囲うことにより、囲まれている部分を一つの入力値として認識させます。またMacの場合は空白の前にバックスラッシュを入れることでも対応可能です。
2. カレントディレクトリを指定したら、次のjavacコマンドを実行してソースファイルをコンパイルします。今回はファイルをUTF-8で記述しているのでオプションに「-encoding UTF-8」をつけています。
javac -encoding UTF-8 HelloWorld.java
ただしWindowsの場合、環境変数のPathにJDKのbinフォルダの指定がないと、javacコマンドを認識できずエラーになります。
そこで、JDKのbinフォルダにあるjavac.exeを実行するために、Windows版では次のように、最上位のディレクトリである「C:\」からjavac.exeがあるディレクトリまでを指定して実行してください。
JDKインストールフォルダ\bin\javac -encoding UTF-8 HelloWorld.java
デフォルトでJDKをインストールした場合は、次のようになります。
"C:\Program Files\Java\jdk1.8.0”\bin\javac -encoding UTF-8 HelloWorld.java
JDKインストールフォルダのPrograme Filesには空白が含まれているため、「"」(ダブルクォーテーション)でJDKのディレクトリを囲む必要があります。
もし、WindowsでもMacのようにjavacコマンドだけで実行できるようにする場合は、環境変数「Path」にJDKのbinフォルダを追加すれば、直接「javac」と入力するだけでjavacコマンドを実行できるようになります。
1. Widows7の場合は画面左下の「スタート」ボタンから「コントロールパネル」を、Windows8.1の場合はスタート画面から「デスクトップ」にはいって画面右側で画面の外から左にスワイプし、「設定」から「コントロールパネル」を選択します。
2. 「システムとセキュリティ」→「システム」を選択してシステムのウィンドウの左側にある「システムの詳細設定」を選択します。
3. 「詳細設定」タブの「環境変数」ボタンをクリックして環境変数ダイアログを開きます。
4. PCにログインしているユーザの環境のみPathを影響させる場合は「ユーザ環境変数」の「新規」ボタン(すでに変数「Path」がある場合は「編集」ボタン)をクリックし、PC全体に影響を及ばしてよい場合は「システム環境変数」の「Path」を選択し「編集」ボタンをクリックします。
新規の場合は変数名に「Path」を入力し、その変数値に「%Path%;JDKのインストール先\bin」と入力します。編集の場合はすでにある変数値の右に「;」+「JDKのインストール先\bin」と入力し「OK」ボタンをおしてダイアログを閉じます。Pathの「;」セミコロンは複数指定している場合の区切り文字になります。
3. javacコマンドを実行してコンパイルが正常に終了したら、HelloWorld.javaファイルを置いたフォルダを見て「HelloWorld.class」のファイルが作成されていることを確認してください。
後述するパッケージを作ってソースファイルを作成した場合、カレントディレクトリにするのはパッケージのフォルダを置いているディレクトリになります。そしてコンパイルをする際に指定するものは、パッケージの最上位のフォルダから対象のソースファイルまでです。例えば、「jp.codezine.java.sample01」というパッケージにHelloWorldのソースファイルがある場合、javacコマンドは次のようになります。
javac jp\codezine\java\sample01\HelloWorld.java
パッケージについては後で簡単に説明していますのでそちらを参照してください。パッケージの詳細は次回に説明する予定です
2.3. Javaクラスファイルの実行
コンパイルが成功したら、次はそのコンパイルされたJavaのクラスファイルを実行します。先ほどのJavaのソースファイルをコンパイルしたカレントディレクトリより、javaコマンドを実行します。javaコマンドではクラスファイルの「.class」拡張子は不要です。クラス名だけ指定します。HelloWorldのクラスファイルを実行するには、次のコマンドを入力してくだい。
java HelloWorld
実行結果に次のものが表示されたら、HelloWorldアプリケーションの作成に成功しています。
Hello World!!
後述するパッケージを作ってクラスファイルを作成した場合、javaコマンドで指定するクラス名は
パッケージ名+「.」+クラスファイル名
となり、次のように記述します。
java パッケージ名.クラスファイル名
パッケージについては後で簡単に説明していますので、そちらを参照してください。パッケージの詳細は次回に説明する予定です。