しがないOLのはじめてのJava

java_logo2

ごあいさつ

こんにちは、クニ吉です。最近、Javaを勉強し始めました。
今までやっていたVBAと違い、かなり四苦八苦しています。。。そんな非エンジニアの私(今のところ)がJavaに挑戦をする過程を、自分の備忘録として書いていこうと思います。ということで、これまた超初心者向けになりますので、ご容赦ください。

はじめに

本ブログの構成

  • Javaとは
  • Javaダウンロード・インストール方法
  • プログラムを実行するまでの流れ
  • おわりに

前提

本ブログはMacでの作業をベースにしています。
「ターミナル」のことをWindowsでは「コマンドプロンプト」と呼んでいたりと、名称や手順に多少差異があるかと思いますので、予めご了承ください。

Javaとは

JavaはOSなどのプラットフォームに依存しないとされるプログラミング言語です。
「Write once, Run anywhere(一度書けば、どこでも実行できる)」というスローガンを掲げ、Javaで書かれたものはWindowsでもMacでもLinuxでも動かすことができます。

なぜそんなことができるのか

Javaはコンパイル言語のひとつで、プログラマがテキスト形式で書いたソースコード(.java)をコンパイラ(javac)という変換器でバイナリ形式(バイトコード(.class))に変換します。(この変換作業を「コンパイル」と言います。)
ソースコード(テキスト形式)は人間が読んで理解出来るもので、バイトコード(バイナリ形式)は人間が読んで理解できない、コンピュータが処理・記憶するためのものです。

そしてこのバイトコードを実行することで書いたプログラムが動くのですが、JavaはJava仮想マシン(Java Visual Machine = JVM)と呼ばれるものがバイトコードを実行します。これがどの環境でも動かせる秘密です。

JVMはプラットフォーム毎(Mac用、Windows用等)に用意されており、JVMがプログラムを動かすための仮想環境を作ることで、それぞれの環境の差を埋めています。 例えば、Windows上でプログラムを実行する場合、Windowsがバイトコードを直接実行するのではなく、Windows用JVMがバイトコードを実行します。

Javaソースコード実行までのイメージ

Javaに関連するツール

では、コンパイラやJVMなどを利用するためにはどうすればよいか。
Javaで開発するために必要なもの、関連ツールについて少しご紹介します。

JRE(Java Runtime Environment)

前述のJVMを中心に関連するプログラムファイルや設定ファイルをパッケージされたものがJava実行環境(Java Runtime Environment = JRE)です。Javaで作られたアプリケーションを動かすために必要なものなので、開発者だけではなく、Javaアプリケーション利用者はインストールする必要があります。(PDFを表示するためにAdobe Readerをインストールするイメージ)
JREは自由に取得することができます。

JDK(Java Development Kit)

JREを含み、コンパイラ(javac)やデバッガ(jdb)等、Javaで開発をするために必要ものをパッケージされたものがJava開発キット(Java Development Kit = JDK)です。開発者向けですので、JREとは違って開発をしないアプリケーション利用者はインストール不要です。こちらも自由に取得することができます。

IDE(Integrated Development Environment)

前述のJDKは最低限必要なものということで、コンパイラやテキストエディタ、デバッガなどはそれぞれバラバラに利用することになり、結構面倒なものです。そこで、コンパイラやテキストエディタ、デバッガなどをまとめて操作できるものが統合開発環境(Integrated Development Environment = IDE)です。これがなくても開発はできますので必須ではないものの、開発するならインストールしておくべきツールです。理由は最後の方にも少し触れています。ちなみに私は「IntelliJ IDEA」を使っています。

Java関連ツールのイメージ

JDKダウンロード・インストール方法

1.JDKダウンロードにアクセスします。
2.Java Platform(JDK)をクリックします。

3.「Accept License Agreement」を選択し、作業環境に応じたJDKをダウンロードします。
Macの場合「Mac OS X」のみなのでわかりやすいのですが、Windowsなどはファイルが複数あります。これはbit数によってダウンロードするファイルが異なりますので、作業環境のbit数を確認しましょう。
Windowsであれば「コントロールパネル」→「システム」の「システムの種類」という項目で確認できます。32bitであれば「Windows x86」を、64bitであれば「Windows x64」のファイルをダウンロードします。

4.ダウンロードしたファイルを展開し、表示されたウィンドウの指示に従ってインストールします。

5.ターミナルを起動し$ java -versionと入力してJavaがインストールされているかを確認します。このコマンドは、Javaのバージョンを確認することができます。

実行結果:
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)

Javaプログラムを実行するまでの流れ

JDKをダウンロードしましたので、このセクションではバイトコード生成(コンパイル)までの手順と、プログラムの実行手順を書いていきます。 「Javaとは」で掲載した「Javaソースコード実行までのイメージ」図をもう一度見てみましょう。

Javaソースコードの作り方

プログラムの記述

1.テキストエディタの準備をします。
コードを書くのにテキストエディタが必要になります。標準のテキストエディタ(メモ帳)でも作ることはできます。私の使っているIDE(以下、IntelliJ)では、すでにテキストエディタが準備されていますので、別途用意する必要はありません。

2.テキストエディタを起動し、以下のコードを入力します。
これは実行すると「Hello, World!」と表示されるプログラムです。

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

ファイルの保存

テキストファイルを保存します。保存時にはファイル名を指定しなければいけませんが、このファイル名は何を指定しても良いわけではありません。先ほどのコードの1行目に注目してください。

public class HelloWorld {

この中の「HelloWorld」という部分は「クラス名」と呼ばれるもので、ファイル名はこのクラス名と同じ名称にしなければいけません。さらに拡張子は「.txt」ではなく、「.java」とします。今回の手順では「HelloWorld.java」というファイルとして保存する必要があります。

保存ルール
  • ファイル名はクラス名と同じ名称にしなければならない
  • 拡張子は「.java」にしなければならない

今回作成したファイル「HelloWorld.java」は「src」というフォルダを作って、保存することにします。

コンパイルしてクラスファイル(バイトコード)を生成する

「HelloWorld.java」というjavaソースコードができましたので、これをコンパイルしてバイナリ形式のファイルを生成します。このバイナリ形式のファイルを「クラスファイル」と呼びます。

1.ターミナルを起動します
2.$ cd [フォルダ名]コマンドで、ソースコードを保存したディレクトリへ移動します。 今回は「src」というフォルダにjavaソースコードを保存していますので、以下のようなコマンドになります。

$ cd src

3.$ lsコマンドでディレクトリの中身を確認します。今は先ほど保存した「HelloWorld.java」のみ表示されます。

$ ls

実行結果:
HelloWorld.java

4.$ javac [コンパイルするファイル名]コマンドでコンパイルを実行します。 このjavacというのが、コンパイラになります。このコマンドは、コンパイラ(jabvac)にHelloWorld.javaというファイルをコンパイルしてね、とお願いをしています。

$ javac HelloWorld.java

実行後は特にメッセージなどは出ませんが、コンパイルされています。

5.$ lsコマンドでクラスファイルが生成されているかを確認します。

$ ls

実行結果:
HelloWorld.class    HelloWorld.java

先ほどはなかった「HelloWorld.class」というファイルが追加されています。これがクラスファイルになります。

プログラムを実行する

では、生成したクラスファイルを実行して、プログラムを動かしてみましょう。

  1. ターミナルを起動します。
  2. コンパイルと同じように$ cd コマンドで実行したいファイルが保存されているディレクトリへ移動します。
  3. $ java [拡張子なしのクラスファイル名]コマンドでクラスファイルを実行します。この時、javaソースコードに書いていたプログラムが動きます。今回は「Hello, World!」と表示されるプログラム」でしたので、ターミナルには「Hello, World!」と表示されます。
$ java HelloWorld

実行結果:
Hello, World!

以上が、プログラムを実行するまでの流れとなります。

実務としてのJavaプログラムの生成と実行

Javaソースコードの作成やコンパイル方法を見てきましたが、実はこれらの手順を実務で使うことはほとんどなく、実務ではGradleというJavaビルドツールや先にご紹介したIntelliJなどのIDEを使います。 今回記載したプログラムは非常に簡単なものですが、実際にはもっと複雑でたくさんのクラスファイルが存在し、それらが組み合わさってひとつのアプリケーションが出来上がります。
これらたくさんのファイルを保存したり、コンパイルしたり、管理したり、、ひとつひとつ手作業で行うのはコストもかかるし容易ではありません。 IntelliJやGradleなどのツールは、そういった作業を簡単にできるようエンジニアを支援するためにあります。

なぜ実務で使われないような手順をこちらに記載したかというと、Javaはどんな風に作られて実行されているのかという仕組みを理解するためです。 ツールは「支援をする」というだけで、仕組みは同じです。

おわりに

ということで、今回はJavaプログラミングを始める準備部分を書いてみました。
最初に書いた通り、私も始めたばかりなのでこのブログは自分の備忘録として、情報整理として書いています。
私は事務員上がりなので、良くも悪くもプロの方々とは視点が異なると思います。(つまづくポイントが違うとか)でも、そういった視点は今だけの「宝」だと思って、私のようにエンジニアじゃないけどプログラミングやってみたいな〜、興味あるな〜という方々がプログラミングを始めるきっかけになるようなブログにできればいいなと思います。

  • とある会社のおっさん社員

    Hallo Worldってスペルが違うのはご愛嬌? Hello Worldが正しいと思いますが。。。。

    • kunikichi

      ご指摘ありがとうございますm(_ _)m
      修正いたしました。(お恥ずかしい限りです;)

  • Masataka Higashijima

    業務ではIDE使ってGradleでビルドやテストもやってしまうところですが、きちんとjavac使ってコンパイルしてるところがいいです
    基本操作を知った上で便利な道具を使うのって大事だと思います

    • kunikichi

      お読みいただき、ありがとうございます。
      ご感想いただけて嬉しいです。