/*Java入門*/ Hello Worldをプリントすることから見るJava言語の基本特徴


JavaでHello Worldをプリントする

ソースコード:

HelloWorld.java
public class HelloWorld { // クラス名とソースコードファイル名は同名とする
    public static void main(String[] args) { // Javaはmainメソッドをプログラムの起点とする
        System.out.println("Hello World!"); // 標準出力はSystem.outで表現される
    }
}

実行結果:

% javac HelloWorld.java # クラスファイルにコンパイラ
% java HelloWorld # クラスファイルを解釈し実行
Hello World!

この例から見るJavaの基本特徴

完全にオブジェクト指向(object-oriented)

Javaはオブジェクト指向を前提としたプログラミング言語で、手続き型プログラミング(procedural programming)をサポートしないです。
=> Javaはすべての処理にクラスが必要です。
=> Hello Worldをプリントすることだけでもあるクラスに含めないといけないです。

同じくオブジェクト指向言語であるC++は、手続き型プログラミングもサポートしているのでクラスなしでHello Worldをプリントすることができます:

hello.cpp
#include<iostream>

int main() { // C++もmainメソッドをプログラムの起点とする
    std::cout << "Hello World!" << std::endl; // C++はcin, coutでデータを入出力する
    return 0;
}

実行結果:

% g++ hello.cpp -o hey # 実行ファイルにコンパイラ
% ./hey # 実行ファイルを実行
Hello World!

プラットフォーム非依存(platform-independent) / Write Once Run Anywhere

Java言語はコンパイラ(compiler)とインタプリタ(interpreter)両者をサポートしています。
Javaプログラムを作成して実行するまでの流れは以下になります:

  1. ソースコード(.javaファイル)を作成する
  2. Javaコンパイラ(javac)でコンパイルしてクラスファイル(.classファウル)を生成する
  3. インタプリタ(JVM, Java Virtual Machine)でクラスファイルを解釈して実行する

ここのクラスファイルはバイトコード(byte code)で、OSに依存しなくてどこでも実行できる特性を持っています。