プログラム学習はとにかく手を動かすことが大事です。STEP1で早速Javaプログラムを動かしてみましょう。
簡単なのですぐにできますよ!
このサイトでは基本的にWindowsをベースに説明していきますが、Macでも問題なく学習できます。
ちなみに、就職すると会社から支給される開発用PCはWindowsがほとんどです。私も仕事ではWindowsを使用していますし、今まで一緒に仕事してきた人もほとんどWindowsでした。(Windowsの方が価格が安いからでしょうね。)
※動画では撮影の関係上、Macを使用しています。
1.開発環境を準備する
Javaの実行環境とJavaの開発環境の導入手順について説明して行きます。
1.1.JDKをダウンロードする
JDK は Javaの実行環境とJavaの開発環境をパッケージしたソフトウェアです。JDK をインストールした PC では、Java プログラムの実行とJava のソースコードをコンパイルすることが可能になります。
こちらのページを見てJDKのダウンロードと環境変数の設定を行ってください。
JDKのダウンロード手順
2.プログラムを動かしてみる
それではプログラムを実際に作り、動かしてみましょう。
コマンドプロンプトにHello, World!!
という文字列を表示させる、簡単なプログラムです。
2.1.Javaプログラムを実行する手順
まず、プログラムを実行するまでの簡単な流れをみてみましょう。
1.ソースコードの作成(テキストファイルHello.javaを用意する。)
2.ソースコードをコンパイルする(javac
コマンドでHello.javaをHello.classにコンパイルする。)
3.プログラムを実行する(java
コマンドでHello.classを実行する。)
それぞれの手順や詳しい説明は後述します。ひとつひとつの手順はそれほど難しいものではあり ませんので、各手順を確実に踏んでいけば最後にコマンドプロンプトにHello, World!!
と表示されるはずです。
2.2.フォルダを準備する
ソースコードを作成する前に、作成したソースコードの置き場所(保存場所となるフォルダ)を作成してください。
Cドライブの直下に自分の名前のフォルダを作成し(以下の例ではjavatoreとします)、さらにその下にsrcという名前のフォルダを作成しましょう。srcはsource codeを略したものです。srcフォルダに以降作成するソースコードを保存しましょう。
「環境変数」の画面に戻るので、OKボタンをクリックし、画面を閉じてください。
2.3.ソースコードを作ろう
それではソースコードを作成しましょう。ソースコードはテキストファイル[1]です。ですからソースコードはテキストエディタ[2]を使って作成します。テキストエディタはさまざまなものが利用可能ですが、ここでは「サクラエディタ」を使ってソースコードを作成していくことにしましょう。「サクラエディタ」が起動できたら、以下のソースコードを打ち込んでみましょう。
打ち込む際には、いくつかの点に注意しなくてはいけません。大文字と小文字を間違えると違う意味になってしまいます。また「:」と「;」や「.」と「,」などは間違えやすいので、注意してください。 ここでは、ひとつひとつの単語の意味などは理解できなくても大丈夫です。
[1] 文字データを扱うファイル。人が読むことのできる文字と、改行などの制御文字のみで構成されている。
[2] 文字データを編集するためのソフトウェア。シェアウェアの「秀丸エディタ」、フリーウェアの「サクラエディタ」などが代表的。
public class Hello { public static void main(String args[]) { System.out.println("Hello, world"); } }
これがコマンドプロンプトにHello world!
と表示させるプログラムのソースコードです。間違いなく打ち込めたら、Hello.javaと名前をつけて先ほど作成したフォルダへ保存しましょう(ツールバーのファイル → 名前をつけて保存 → 保存先をsrcへ指定、ファイル名をHello.javaとして保存ボタンを押す)。拡張子.javaはそのファイルがJAVAソースファイルであることを表しています。
2.4.コンパイルしてみる
作成したソースコードをコンパイルしましょう。
コマンドプロンプトを起動して下さい。起動できたら、カレントディレクトリを移動します。カレントディレクトリとは簡単に説明すると「今、作業をしているディレクトリ(フォルダ)」のことで、コマンドプロンプトの左側の>
より左側に表示されています。これから行う作業はHello.javaをコンパイルすることですから、Hello.java がおいてあるsrcフォルダがカレントディレクトリとなります。カレントディレクトリの移動はcd
コマンドで行います。cd 移動先ディレクトリの絶対パス
で移動することができます。cd
コマンドを入力してみましょう。
cd c:\javatore\src
正しく入力できていれば、カレントディレクトリの表示がC:\javatore\srcに変わっているはずです。
それではコンパイルをしてみましょう。コンパイルはjavac
コマンドで行います。最後のcはcompilerのcです。javac ソースファイル名
でコンパイルができます。コマンドを入力してみましょう。
javac Hello.java
何も表示されなければコンパイルは成功です。srcフォルダの中にHello.classというファイルができているはずですので確認しましょう。これがソースコードがコンパイルされたクラスファイルです。プログラムを実行するときはこちらのファイルが読み込まれます。文字通り、人が書いたソースコードをコンピュータが読めるようにコンパイル(翻訳)したわけです。
2.5.プログラムを実行してみる
ではプログラムを実行してみましょう。
プログラムを実行するのはjava
コマンドです。java クラスファイル名
で実行されます。クラスファイル名は.classを省いた名前です。コマンドを入力してみましょう。
java Hello
Hello, world!
と表示されていれば、プログラムは正常に動作しています。うまくいかないときは次のようなことを確認してみましょう。
Hello.classファイルは、カレントディレクトリにありますか。Hello.javaの中に誤字などの誤りがありませんか。java
コマンドは大文字、小文字を区別します。誤字はありませんか(javac
コマンドは大文字と小文字を区別しません)。
以上でプログラムの実行は終わりです。どんなプログラムを動かすときでも以上の手順は同じです。最初はすこし面倒に感じますが、慣れてくればそれほど時間のかからない作業ですので、ソースコードのHello, world!
の箇所を漢字やカタカナにしてみるなど、いろいろ試してみましょう。
2.6.クラスパスを設定する
クラスパスを設定します。1.1.のJDKのダウンロード手順で設定したPathはJDKの各種ツールを使うためのパスです。ここではコンパイルしたクラスファイルを使うためのクラスパスを設定します。手順は1.1.のJDKのダウンロード手順で環境変数画面を表示させる箇所までは同じですので、その手順に従って環境変数画面を表示させて下さい。
システム環境変数のCLASSPATHという項目を見つけ出し、編集ボタンをクリックします。
※存在しなければ、新規ボタンをクリックして下さい。
環境変数名の編集ダイアログボックスが表示されるので、1.1.のJDKのダウンロード手順でbinフォルダを設定したときと同じ要領で今度はsrcフォルダのパスを設定し、OKボタンをクリックします。
※新規ボタンを押下した場合には、変数名にはCLASSPATHと記入して下さい。
[1] ファイルの所在を示すための文字列で、どのドライブの何というフォルダにあるのかを示す。ドライブ名から、すべてのパスを略さずに示したもの。
【クラスパス(CLASSPATH)の設定について】
クラスパスを設定したディレクトリ(上記の例では、C:\javatore\src)にクラスファイル(上記の例ではHello.class)を配置しなければ、正しく実行されません。
クラスパスを設定しないでjava
コマンドを実行にするには、クラスファイルのある位置に移動してからjava
コマンドを実行しなければいけません(クラスパスを通していなければ、前述の例では、C:\javatore\srcに移動してからjava Hello
を実行しなければいけません)が、クラスパスを通すことにより、どの場所からでも、java
コマンドが実行可能(前述の例では、cd C:\javatore
でC:\javatoreに移動してjava Hello
を実行することも可能。)となります。
要するにクラスパスとは、クラスファイルを配置する場所です。クラスパスが通っていないディレクトリにクラスを配置してjava
コマンドを実行すると、NoClassDefFoundError
やClassNotFoundError
となってしまいます。逆にクラスパスが通っていれば、どの場所からでも実行できます。
「プログラムを動かしてみよう」はここまで。
ここから先はJava言語についての説明になります。時間があるときに目を通しておけばよいでしょう。
3.Java言語の特徴
ここでは、Java言語の特徴であるオブジェクト指向言語、マルチプラットフォームについて説明します。
3.1.オブジェクト指向言語
オブジェクト指向とは、Javaの代名詞とでも呼ぶべき重要な概念です。「オブジェクト」という他の言語にはあまりない概念をJavaは基本として持っています。オブジェクトを一言で説明するのは難しいのですが、強いて言うなら「もの」のことです。一言で「もの」と言われても理解は難しいですが、ソフトウェアの中で現実世界の物事を、形として、「もの」として表現しようという概念です。自分の身の回りにある世界を考えてみてください。
人間社会をオブジェクト指向の考え方で眺めると、1人ひとりの人間をオブジェクトと考えることができます。独立した人間が集まって社会というシステムを構築しています。人はそれぞれ自分の役割を持っています。1人でできない仕事は会話を通してコミュニケーションを行い、ほかの人々と協力して成し遂げようとします。
例えば、会社の中では自分の役割は明確に決まっています。仕事を依頼されたら自分1人で解決できない問題はほかの人に協力してもらって解決します。組織をオブジェクトと考えることもできます。ある組織に仕事の依頼がきたら、その組織内で解決できなければほかの組織に協力を要請して自分の組織の責務を成し遂げます。
組織の粒度は、小はグループ・課から大は会社レベルで考えることもできます。どの企業も単独で仕事をすることはできず、ほかの企業と協力し合って社会に貢献することができるわけです。
つまり1つひとつのオブジェクトは独立して存在し、それぞれ固有の役割・責務を持っています。それらは孤立した存在ではなく、互いにメッセージを通じて協調動作を行いながら、全体として1つの仕事を行っている姿がオブジェクト指向の基本的考えです。
オブジェクト指向言語は、人間にとってわかりやすいプログラミングが書け、プログラムの再利用ができるなどの優位性を持っています。ソフトウェア開発に高効率が求められる昨今では大変便利な言語なのです。
3.2.マルチプラットフォーム
Javaは、数多くあるコンピュータ言語の一つです。 我々が話す言葉が日本語、英語、フランス語、ドイツ語、スペイン語など、国が違うと言葉も違うように、コンピュータのプログラムにおいてもJavaだけでなくCやCOBOLなど様々な言葉があります。また、同じコンピュータ言語でもコンピュータの種類が違うと、同じように働かなかったりします。その中でJavaは、異なった種類のコンピュータでも同じように働くコンピュータ言語なのです。
このことはインターネットが普及する以前であれば、それぞれのコンピュータは1台ずつ動かしていることが多かったのでそれほど切実な問題ではありませんでした。しかし現在のようにインターネット上で異なったOS[1]が同時に働いたり、データやメール交換などする必要性があると、インターネット上でも活用できる、汎用性のあるプログラム言語が切望されます。
そこでJavaの最大の特徴である、「Write once, Run anywhere.」(一度記述すればどこででも実行可能)が活用されます。これは環境に左右されず、高い汎用性を持っているJavaの一番の武器です。Javaは「Java仮想マシン(JavaVM)[2]」という考え方をもっています。Java自身の中に仮想のコンピュータを用意し、これをプログラミングするのです。また、裸のソースコードではなく、コンパイラによってコンパイル[3]し、そこで生成される実行環境を選ばない「バイトコード[4]」を取り扱うようにしたことで、JavaVMは軽量/高速となりました。
Mac[5]でもWindows[6]でもUNIX[7]でも、Javaはそれぞれのマシン固有の機能を一切使わず、JavaVMに用意された機能だけでプログラムを書きます。そして、Mac用のJavaならば、そのバーチャルマシンの機能をMacの機能に置き換えて動くようにしてある、というわけです。だからJavaで作ったプログラムは、(そのマシンにJavaがインストールしてあれば)どんな機種、どんなOSでも全く関係なしに動くのです。このことは、プラットフォームに依存しないという特徴で「マルチプラットフォーム」とも呼ばれます。
Java仮想マシン(JavaVM)は、実行する目的のファイルを探すのに「クラスパス[8]」として指定されている「場所」から探索します。それ以外の場所にあるファイルを実行しようとしても、そのファイルを見つけることが出来ません。しかし、その場所に実行したいファイルを置いてさえいればどの場所からでも実行することが可能になります。
[1] キーボード入力や画面出力などの出力機能・ディスクやメモリの管理などの基本的な機能を提供し
コンピュータシステム全体を管理するソフトウェア
[2] Javaバイトコードを実行環境にあわせたコードに変換し実行するソフトウェアのこと
[3] 人間が作成したソースコードをコンピュータ上で実行可能なコードに変換する事
[4] 特定のOSやハードウェアに依存しないように定義された命令の集合によって記述された実行形式のプログラム
[5] アップルコンピュータのマッキントッシュと共に登場したOSのこと
[6] 米国マイクロソフト社の開発したOSのこと
[7] アメリカAT&T社のベル研究所で開発されたOSのこと。代表的なものに、米国マイクロソフト社のSolaris・IBM社のAIX・Linus Torvalds氏のLinuxなどがある。
[8] 環境に合わせた実行コードの保管場所を示すもの