
JavaでHello worldをやってみよう!3つの方法を丁寧に紹介します
Hello world(ハローワールド)とは、“Hello, world.”などの文字列を画面に表示するだけの、ごく短いプログラムのことです。プログラミング言語を学ぶ時の最初の一歩としてや、プログラミング言語のインストール後の動作確認などでよく使われます。
Hello worldには、プログラミング言語の特徴がよく出ます。もちろん、Javaにも定番のHello worldがあり、Javaとはどういうスタイルのプログラミング言語なのか、実体験してみるにはもってこいのものです。
この記事では、JavaでのHello worldのやり方をいくつかご紹介しつつ、さらにHello worldから学べるJavaの特徴を、初心者にも分かりやすく解説します。
※この記事のサンプルは、Java 12の環境で動作確認しています
1.JavaでのHello worldはこういうもの
では、さっそくJavaのHello worldを紹介します。どどーん!!
HelloWorld.java
class HelloWorld { public static void main(String[] args) { System.out.println("Hello, world."); } }
このプログラムの行数はわずか5行ですが、ここからJavaを学ぶ長い長い旅が始まるのです。せっかくですので、あなたのパソコンでもHello worldを書いて、動かしてみませんか?
2.Hello worldの三つの動かし方
Javaのプログラムを書いて動かす方法は、どんなやり方でも以下の手順となります。
- Javaのプログラムが書かれたテキストファイル(ソースコード、.java)を作る
- Javaコンパイラでコンパイルしてクラスファイル(.class)を作る
- クラスファイルをjavaコマンドで実行する
その上で2019年現在では、Javaのプログラムの書き方・動かし方は大きく以下の三つがあります。でも、やっていることは結局変わらないということは覚えておきましょう。
- テキストエディタでJavaプログラムを書いて、Javaコンパイラでコンパイルして、Javaコマンドで実行する
- Java用の開発環境を使ってプログラムを書き、動かす
- Javaを実行できるオンラインのサービスでプログラムを書き、動かす
ここでは、これらの方法を簡単にお伝えしてみます。
2-1.テキストエディタ + javac + javaで動かす
これがJavaを実行する時の一番基本的な手順です。これは手順が多いですし、自分でコマンドを実行するのでなかなか大変です。
今は、一番最初の入門時点からEclipseなどの統合開発環境を使うのが普通です。でも、このようなJavaが動く仕組みを最初に直接体験しておくと、以降の理解度が結構違ってきます。統合開発環境は、これらの手順を自動でしてくれるのですが、裏の仕組みを知っているかどうかで大違いなのです。
2-1-1.事前準備
では、ここではWindowsの環境でやってみます。Linuxなどでも概ね同じです。あらかじめ、お使いのパソコンにJavaをインストールして、Javaがコンパイル出来て、動かせる環境を作っておいてください。
例えば、以下のようにコマンドプロンプトからjavacとjavaが動かせれば、準備はOKです。なお、表示されるバージョンが少々違っても、このHello worldなら問題はありません。どんなJavaのバージョンでも同じです。
2-1-2.ソースコードを作る
メモ帳などのテキストエディタで、先ほどのプログラムが書かれたテキストファイル(プログラマは、これらのファイルをソースコード/ソースファイルとも呼びます)を作ります。テキストファイルを置くフォルダはどこでもOKです。
ここでとても大事なのはファイル名です。この例では“HelloWorld.java”になります。
ソースコードの“class”の後ろから“{“の前に書いてある文字列をそのままファイル名にして、ファイルの拡張子は“.java”にしてください。
2-1-3.ソースコードをコンパイルしてクラスファイルを作る
次に、作ったソースコードをJavaコンパイラ(javac)でコンパイルして、クラスファイルを作ってみます。
javacの後ろに空白を入れて、ソースコードのファイル名を書いて実行してください。うまくいけば、以下のようにHelloWorld.classというファイルが新しくできると思います。
もしエラーメッセージが出てしまうなら、例えば以下に注意して、ソースコードを見直してみましょう。どうしてもエラーがなくならないなら、最後の手段…コピー&ペーストをしましょう。でも「自分の手で一から書くこと」「自分で解決すること」が、プログラミング言語を学ぶ時には大事なことです。
- 空白や記号、文字に全角が混じっていないか?
- 大文字、小文字を間違えていないか?
- キーワードを分ける空白がきちんとあるか?
→例えば、classHelloWorldや、publicstaticや、String[]argsのようになっていないか? - ファイル名がクラスの名前と違っていないか?
2-1-4.クラスファイルを実行する
では、いよいよクラスファイルを実行してみましょう。Java仮想マシン(javaコマンド)にクラスの名前(.classは付けない)を指定して実行してみましょう。
おお!! ちゃんと“Hello, world.”と表示されましたね。これであなたもJavaプログラマの仲間入りです!! これからいろいろなことをどんどん試していきましょう。
もし、ここでもエラーになる場合は、以下のようなことを確認してみましょう。
- クラスファイルがあるフォルダに移動してjavaを実行しているか?
- クラスの名前を書き間違えていないか?
- クラスに“.class”を付けていたり、“.java”としていたりはしないか?
2-2.統合開発環境(Eclipse)で動かす
ここでは、Javaの統合開発環境“Eclipse(エクリプス)”での、Hello worldのやり方をお伝えします。
Eclipse自体のインストールの仕方はここではお伝えしません。お勧めは、Eclipseを日本語化したPleiadesというプロダクトです。これをパソコンへインストールしておけば、Javaの勉強からWEBアプリ開発まで、一通り行えます。
Pleiades – Eclipse、IntelliJ などの日本語化プラグイン
なお、Javaの統合開発環境は、Eclipseの他にもNetBeans IDEやIntelliJ IDEA、Android Studioなどがありますが、Hello worldをやる程度なら手順はかなり似ていますよ。
2-2-1.ワークスペースとプロジェクトを作る
Pleiadesをインストールして、eclipse.exeを動かしましょう。すると、ワークスペースと言うものの場所をどこにするか聞いてきます。Hello worldをする程度ならどこでもいいので、適当な場所を指定しましょう。
次は、プロジェクトというものを作ります。「ファイル」→「新規」→「Javaプロジェクト」を選び、表示される「新規Javaプロジェクト」のダイアログで、プロジェクト名には適当なものを入れて、完了ボタンを押しましょう。
すると、左側のタブで、作成したプロジェクトが見えるようになるはずです。
2-2-2.ソースコードを作る
プロジェクトにあるフォルダ“src”を右クリックして、「新規」→「クラス」を選びます。表示されるダイアログで、名前に「HelloWorld」を入力し、「どのメソッド・スタブを作成しますか?」の「public static void main(String[] args)」のチェックボックスをチェックして、完了ボタンを押します。
srcの下に新しいファイル、HelloWorld.javaができたでしょうか。では、“public static void main(String[] args)”の行の下に、“System.out.println(“Hello, world.”);”を書き足しましょう。
書き足した後は、忘れずに保存しましょう。保存は「ファイル」→「保存」とするか、キーボードでCtrl(コントロール) + sを押します。なお、タブの部分に“*”が付いている場合は、変更がまだ保存されていませんよとEclipseが教えてくれています。
さて、ソースコード上で赤い線や×マークがあったりしませんか? もしそれらがある場合は、何かしらのエラーがあるということです。2-1-3での注意事項を参照して、よく見直してみましょう。
2-2-3.クラスファイルを実行する
エラーがなくなったなら、さっそく実行してみましょう。実行の仕方はいくつかありますが、作ったHelloWorld.javaを右クリックしてコンテキストメニューを出し、「実行」→「Javaアプリケーション」を選んでみてください。
すると、「コンソール」というタブにメッセージ“Hello, world.”が表示されるはずです。どうでしょうか?
2-3.オンラインIDEで動かす
最近は、パソコンにJavaをインストールしなくても、WEBブラウザ上からJavaを気軽に書いて動かせるようになりました。このような「オンラインIDE」とでも呼ぶべきサービスを提供しているサイトが、今ではたくさんあるのです。
ここでは、それらオンラインIDEの一つ「Codiva」で、JavaのHello Worldを動かす手順をお伝えします。日本語でのオンラインIDEは、例えばpaiza.IO(https://paiza.io/ja)があります。使い方は大体同じです。
2-3-1.Codivaにアクセスする
Codiva(https://www.codiva.io/java)にWEBブラウザでアクセスしましょう。
アカウント作成を促す赤いボタンがありますが、下にある“Try without login”をクリックすれば、アカウント作成をせずに使えます。Hello worldを試してみるくらいなら、それで十分です。
※プログラミング言語を選ぶダイアログはJavaを選びましょう。
2-3-2.Javaの編集を始める
さて、もうHello worldとほとんど同じプログラムがある状態から始まりますが、せっかくなので一から作ってみましょう。
タブの部分にある+ボタンを押しましょう。すると追加するファイル名とフォルダを聞いてくるので、ファイル名にHelloWorldを入力します。ディレクトリはそのままでOKです。
Createボタンを押した後、左のフォルダツリーの中にHelloWorld.javaができているでしょうか。最初は見えないと思いますが、srcを順にクリックしていくと、フォルダの内容を展開できますよ。
2-3-3.Javaを編集する
エディタ画面にHelloWorld.javaが開いている状態になっていると思いますので、内容をちょっとだけ書き換えましょう。“Hello Codiva”を“Hello, world.”に書き換えるだけです。
2-3-4.HelloWorldを実行する
それではHelloWorldを実行してみましょう。上にあるRunボタンを押してください。すると、下の方に“Hello, world.”が表示されるはずです。
とてもお手軽にJavaを動かせたと思いますが、いかがでしたでしょうか。
3.【参考】Hello worldで学ぶJavaの特徴
さて、JavaでのHello worldは動きましたか? 全部で5行と短いプログラムですが、このHello worldにはJavaを学ぶ上でなかなか大事なことが、ギュッと詰め込まれているのです。
ここでは、このJavaのHello worldでぜひ押さえておきたいポイントについて、いくつかお伝えします。
3-1.Javaではクラスファイルを実行する
Javaの大きな特徴の一つは、javacでコンパイルして作ったクラスファイルが、Javaが動く環境の全てで使えることです。これを「Write once, run anywhere(一回書けばどこでも動く)」とも言います。
先ほど作ったクラスファイルは、WindowsでもLinuxでもmacOSでも、Javaを動かせる環境であれば、クラスファイルを持って行けばどこでも実行できるのです。
ただ、今はコンパイルがいらないスクリプト系プログラミング言語が広まったので、わざわざコンパイルをして作るクラスファイルは何が利点なの?と思う方も多いでしょう。ですが、Javaが発表された1995年当時は、環境への依存性が強いC言語が開発の主流だったので、大変すごいことだったのです。
3-2.Javaではクラスが必ず必要
Javaのプログラミング言語としての特徴の一つは「Javaで何かをするには必ず何かのクラスが必要」ということです。C言語のprintfやExcelでのsumなどのいわゆる関数は、それだけで独立しているモノです。でも、Javaでは例えば文字をprintするのにも、必ず何かのクラスが持つ処理を呼び出すのです。
例:PythonでのHello world、クラスのようなものは不要
print("Hello, world.")
先程のソースコードの1行目には、“class HelloWorld”とあります。これは、Javaで「クラス」を宣言する時の構文で、その後ろの“{“から5行目の“}”までが、HelloWorldというクラスの内容です。クラスに限らず、Javaでは“{}”を何かのかたまり、ひとくくりにできるものを宣言する時に使います。
クラスの詳細はここでは触れません。ですが、クラスはJavaやJavaのようなオブジェクト指向プログラミング言語を勉強し、理解する上での大事な考え方なので、きちんと学べばJavaの理解度がグッと深まりますよ。
3-3.mainメソッドはJavaのクラスを実行する時の入り口
Javaのクラスファイルを実行する時は、実行するクラスの“main”(メイン)という名前の処理が呼ばれます。Javaでは処理や、いわゆる関数・手続きのことをメソッド(method)と呼びますので、これをmainメソッドとも呼びます。Javaの勉強をしていけば、mainメソッドとはいずれ顔なじみになるでしょう。
このmainメソッドを起点にJavaが動く仕組みは、どんなJavaのプログラムでも同じです。ですから、動いているJavaのプログラムを処理の順番どおりにさかのぼっていくと、必ず何かのクラスのmainに行きつくのです。これはついつい忘れがちですが、地味に重要なことです。
なお、mainメソッドにくっついている“public static void”とか“String[] args”にも、それぞれきちんとした意味があります。今はおまじないのようなものだと思っていても問題ありませんが、いずれそれらもきちんと学んでいきましょう。
3-4.Javaでの変数の宣言について
JavaはC言語によく似た構文の、ごくスタンダードなスタイルのプログラミング言語です。プログラムに欠かせない変数の宣言は、Javaだと「変数の型 変数名」というスタイルで行います。このHello worldでは、2行目の“String[] args”が変数の宣言をしている部分です。
例:C言語でのHello world、Javaと雰囲気が似ていることが分かりますか?
#include <stdio.h> int main(int argc, char *args[]) { printf("Hello, world.\n"); return 0; }
Javaでは変数の型として、数値、文字列、配列、クラスなどが使えます。このHello worldでの“String[] args”の意味は、String→文字列の、[]→配列で、変数名はargsだよ、ということです(argsは、引数を表す英語argumentsの省略形です)。
そして、Stringの配列argsは、mainメソッドへの引数(ひきすう)です。引数とは処理へのパラメータだと言えば伝わるでしょうか。そして、mainメソッドの引数はちょっと特別なもので、プログラムを実行した時にコマンドラインから渡したパラメータになるのです。
3-5.Javaではモノは親子構造を持つ
3行目の“System.out.println”とは果たしてナニモノでしょうか。これを実行すると画面に文字が出るようなので、そういう機能を持ったナニモノかだということは何となく分かります。でもこの“System”、“out”、“println”、そしてそれらをつないでいる“.”は、一体何なのでしょう。
Javaでの“.”は「持っているモノを区切る文字」だとまずは思ってください。Windowsでパスを区切る“\”に似ています。つまり「Systemはoutというモノを持っていて、そのoutはprintlnというモノを持っていて、そのprintlnを呼び出している」ということです。
そして、このHello worldには出てきませんが、Systemはoutの他にも、err(System.err)だとか、in(System.in)というモノを持っています。このように、クラスは他のクラスやデータから作られているものでもあって、この考え方はクラスを理解する鍵となるものの一つです。
3-6.System.outはJavaでの標準出力
さて、どんなプログラミング言語でも大体出てくるけれど、初心者がよく分からないものが「標準出力」です。Javaでの標準出力はSystem.outで表現されるので、System.out.printlnとはJavaへ標準出力に文字列を出すよう指示する、ということです。でも、標準出力とは結局何なのでしょうか。
標準出力とは、プログラムからのデータ出力先を抽象化したものの一つだと思ってください。Windows、Linux、どんな環境でもプログラムは標準出力というデータ出力先を持っていて、そこに何かを書き込めば、OSが何かのデバイス(例:コマンドプロンプト)に出力してくれます。
標準出力は変数の内容を出力したり、処理の経過を出力したりなど、簡単なデバッグによく使います。前節でお伝えしたSystem.errは標準エラーという別のデータ出力先です。そして、出力があるなら入力があり、System.inが標準入力というものです。標準エラーと標準入力も上手く使えば便利なものです。
例:JavaScriptでのHello world、JavaScriptには標準出力がないので、alertでメッセージを表示しています
<script> alert('Hello, World.'); </script>
3-7.Javaでは()はメソッド呼び出しを意味する
System.out.printlnは、後ろに()が付いていますね。Javaでは文字列の後ろに()を付けると、メソッドの呼び出しになります。()の中に変数などを書くと、呼び出すメソッドへの引数になります。つまり、printlnを文字列“Hello, world.”を引数にして呼び出しているわけですね。
最近のスクリプト系プログラミング言語と違って、Javaでのメソッド呼び出しは()が必要です。プログラマにより好みが分かれるのですが、わずらわしいと感じる人もいれば、メソッド呼び出しが明確なので好きだという人もいます。でも何にしろJavaでは必須なので、慣れていくようにしましょう。
例:RubyでのHello world、処理の呼び出しの時に()がいらない
puts "Hello, world."
Javaプログラマは、メソッドを「呼び出す(call/invoke)」という表現をよく使います。「実行する(execute)」も使いますが、オブジェクト指向に慣れてくると、呼び出すという表現がしっくりくるようになるでしょう。なぜなら、Javaのメソッドは、クラスが実体化したインスタンスの持ち物だからです。
3-8.Javaでは“;”で命令を区切る
3行目は“;”で終わっています。“;”は、Javaでは命令文の終わりを示す記号です。このHello worldはたまたま1行だけですが、普通のプログラムはたくさんの命令文からできていますので、プログラムもたくさんの;で区切られた行からできています。
他のプログラミング言語では、命令の終わりに;などの区切り文字を置く必要がないものも多いですね。むしろ、最近のプログラミング言語では書かない方が多数派です。ですが、Javaは区切り文字が必須です。
例:KotlinでのHello world、命令の後に;がいらない
fun main(args:Array<String>) { println("Hello, world.") }
4.まとめ
この記事では、JavaでのHello worldについてお伝えしました。Hello worldの実行の仕方を、javaコマンド・Eclipse・オンラインIDEの三種類でお伝えしました。
さらに、Hello worldから分かるJavaの特徴も簡単にお伝えしました。もしJavaが初めてのプログラミング言語なら「そういうものなのかな」くらいの感想でしょうが、他のプログラミング言語を学んで比べられるようになれば、「Javaらしさ」のようなものが何となくわかるようになるかと思います。
Javaは、構文そのものはシンプルかつオーソドックスなプログラミング言語です。Javaでつまづく箇所は、オブジェクト指向の考え方に戸惑うか、奥深い標準APIや無数の外部ライブラリの中で迷子になることなどでしょうか。
ですが、一歩ずつ確実に進んでいけば、きっとJavaを使いこなせますよ!!
コメント