DRYな備忘録

Don't Repeat Yourself.

恥じらいながら学ぶJavaとデザインパターン【0: HelloWorld】

背景

ウェッブ系のプヨグヤマになって3年目になりましたが、僕の処女言語はJavaScriptで、サーバサイドは業務ではPHPしか書いたことありません。お恥ずかしい限りです。目的はJavaを学ぶというより、デザインパターンをちゃんと学ぼう、その場しのぎのエンジニアはもうやめようと思ったから。デザインパターンをちゃんと学ぶなら、Java言語で学ぶデザインパターン入門だろうということで、必要なのでJavaしようと思った。見栄を張っていてもできないものはできないし、必要なものは必要なので、恥ずかしいけど一歩目からやる。

Hello, Java

なんかうろ覚えの知識でこんなファイルをつくった

hello.java

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

コンパイルjavacコマンドだったと思われ

問題1)コンパイルエラーメッセージが文字化けしとる

% javac hello.java
hello.java:1: �N���X HelloJava �� public �ł���A�t�@�C�� HelloJava.java �Ő錾���Ȃ���΂Ȃ�܂���B
public class HelloJava {
       ^
�G���[ 1 ��

ファック。さっそくしばきたい気持ち

調査

ファイルエンコーディングUTF-8だし、シェルの$LANGUTF-8だったので、javacの文字エンコーディングの問題っぽいなということで、以下を実行。

% javac -J-Dfile.encoding=UTF-8 hello.java
hello.java:1: クラス HelloJava は public であり、ファイル HelloJava.java で宣言しなければなりません。
public class HelloJava {
       ^
エラー 1

ビンゴですね

問題2)クラス名とファイル名は同じでなければならない

で、コンパイルエラーが読める文字になったところで、

クラス HelloJava は public であり、
ファイル HelloJava.java で宣言しなければなりません。

ウッ、頭が...そういえばそうだったような気が...

% mv hello.java HelloJava.java
% javac -J-Dfile.encoding=UTF-8 HelloJava.java
% ls -la
total 16
drwxr-xr-x  4 otiai10  staff  136  7  6 21:50 .
drwxr-xr-x  7 otiai10  staff  238  7  6 21:37 ..
-rw-r--r--  1 otiai10  staff  423  7  6 21:50 HelloJava.class
-rw-r--r--  1 otiai10  staff  121  7  6 21:38 HelloJava.java

実行はjavaコマンドだったような気が...

% java HelloJava
Hello,Java!
%

ハロージャバ。とりあえずデザインパターンの勉強進めれる状態にはなった。

雑感

積み重ねる以外に高くする方法は無い

DRYな備忘録として