Javaソースの基本スタイルを初めてのJavaのHowToWriteJavaクラスでご理解頂けたかと思います。
本章では、javaソースファイルの文字コード、最小クラス、呼び出しクラスなどを理解して頂きます。
まず、最初にJavaプロジェクトで決めることは、ファイルの文字コードを何するかです。
Javaアプリケーション、Webアプリケーションに利用される主な文字コードをピックアップしました。
※.基本:基本エンコーディングセット (lib/rt.jar)、拡張:拡張エンコーディングセット (lib/charsets.jar)
java.nio API 用の正準名 |
java.io APIと java.lang API 用の正準名 |
エンコード セット |
説明 |
---|---|---|---|
UTF-8 | UTF8 | 基本 | 8 ビット Unicode (UCS) Transformation Format 世界のHTMLファイルの多くが「UTF-8」文字コードを利用されています。 UnixOS、LinuxOS、MacOSの多くがUTF-8をデフォルトエンコードとしています。 一番開発現場で、採用されやすい文字コード |
EUC-JP | EUC_JP | 拡張 | JISX 0201、0208、0212、EUC エンコーディング、日本語 LinuxOS 古いディストリビューションのデフォルトエンコードでした。 2017年時点では、LinuxOSの最新ディストリビューションはUTF-8が採用されています。 そのため、過去に製造されたシステムでは運用時使う可能性はあります。 |
Shift_JIS | SJIS | 拡張 | Shift-JIS、日本語 WindowsOSの場合によく利用される文字コード |
windows-31j | MS932 | 拡張 | Shift-JIS、日本語 Shift_JISにWindows拡張文字を含ませたもの WindowsOSにおいて、Javaのデフォルトエンコード |
javacコマンドは、一覧表のどちらのコードを指定してもコンパイルできます。
2017年2月時点の私の見解です。
IT生涯学習Techで提供するソースファイルは、全て「utf8」で記載しています。
改行コードは、「WindowsOS」の「CRLF」にしております。
最小のJavaクラスを作ってみましょう。
BoxOnly.java
/**
* Copyright 2017 hoge.
* 本ソースファイルの著作権は株式会社hogeに所属します。
* 株式会社hogeの許可なくして、本ソースファイルの
* 配布、改修、コピー、利用を禁止します。
* 会社名 :株式会社hoge
* 組織名 :システム開発部
* プロジェクトコード :education
* バージョン :1.0
* 最終更新日時 :2017/02/10 17:21
*/
//package宣言部
package jp.co.yourcompany.education.samples;
//import 宣言部
/**
*
* このクラスは、Javaクラスですが、
* 何のプロパティ、コンストラクタ、メソッド、メインメソッドを持ちません。
* @author Raita.Kuwabara
*
*/
public class BoxOnly {
//定数宣言部
//プロパティ宣言部
//デフォルトコンストラクタ宣言部
//主処理宣言部 public method
//ローカル処理宣言部 private method
}
このサンプルは、基本スタイルであるコメントとパッケージ宣言とタブ、不要な空白スペースを取り除けば、
クラスの箱だけできる最も最初のクラスです。まさに「箱だけ(BoxOnly)」ですね。
「c:¥projects¥src¥main¥java¥jp¥co¥yourcompany¥education¥samples」ディレクトリに
このBoxOnly.javaを配置して実際にコンパイルをしてみましょう。
BoxOnly.javaのコンパイル
c:¥projects¥education>javac -d deploy¥classes
-s src¥main¥java -encoding UTF8
src¥main¥java¥jp¥co¥yourcompany¥education¥samples¥BoxOnly.java
c:¥projects¥education>
エラーが出ずにきちんとコンパイルされました。
「c:¥projects¥deploy¥classes¥jp¥co¥yourcompany¥education¥samples」を確認して下さい。
BoxOnly.classファイルがjavacコマンドで生成されています。
次にjavaコマンドでBoxOnlyクラスを動かせるか確かめてみます。
BoxOnly.javaの実行
c:¥projects¥education>java -cp deploy¥classes jp.co.yourcompany.education.samples.BoxOnly
エラー: メイン・メソッドがクラスjp.co.yourcompany.education.samples.BoxOnlyで見つかりません。
次のようにメイン・メソッドを定義してください。
public static void main(String[] args)
またはJavaFXアプリケーション・クラスはjavafx.application.Applicationを拡張する必要があります
javaコマンドを実行すると、上記のようにpublic static void main(String[] args)
を定義して下さいとエラーがでます。
javaソースファイルには、public static void main(String[] args)
は必須ではないかと思ってしまいますよね。
javaコマンドからjavaクラスを直接実行する場合のみ必要です。
実際のこのクラスを使ったサンプルをみて下さい。
ExecBoxOnly.java
/**
* Copyright 2017 hoge.
* 本ソースファイルの著作権は株式会社hogeに所属します。
* 株式会社hogeの許可なくして、本ソースファイルの
* 配布、改修、コピー、利用を禁止します。
* 会社名 :株式会社hoge
* 組織名 :システム開発部
* プロジェクトコード :education
* バージョン :1.0
* 最終更新日時 :2017/02/10 17:21
*/
//package宣言部
package jp.co.yourcompany.education.samples;
//import 宣言部
/**
*
* このクラスは、Javaの全体の構成を分かり易くした
* 何も処理できません。
*
* @author Raita.Kuwabara
*
*/
public class ExecBoxOnly {
//定数宣言部
/**
* 主処理の終了メッセージ
*/
public static final String MESSAGE_END_JA = "-------- END method------------";
/**
* 主処理 BoxOnlyクラスのインスタンスを生成し終了メッセージを出力する。
*/
public void executeBoxOnly(){
initBoxOnly();
outputEndMessage();
}
/**
* BoxOnlyクラスのインスタンスを作成する。
*/
private void initBoxOnly(){
BoxOnly boxonly = new BoxOnly();
}
/**
* 終了メッセージを出力する。
*/
private void outputEndMessage(){
System.out.println( MESSAGE_END_JA );
}
/**
* javaコマンドで起動されるmainメソッド
* @param args
*/
public static void main( String[] args ) {
ExecBoxOnly execBoxOnly = new ExecBoxOnly();
execBoxOnly.executeBoxOnly();
}
}
このクラスではpublic static void main(String[] args)
が記述されています。
このクラスがjavaコマンドから起動できるクラスであることを意味します。
このクラスをコンパイルして、実行してみます。
ExecBoxOnly.javaのコンパイルと実行
c:¥projects¥education>javac -d deploy¥classes -cp deploy¥classes -s src¥main¥java -encoding UTF8
src¥main¥java¥jp¥co¥yourcompany¥education¥samples¥ExecBoxOnly.java
c:¥projects¥education>java -cp deploy¥classes jp.co.yourcompany.education.samples.ExecBoxOnly
-------- END method------------
c:¥projects¥education>
コンパイルが通り、BoxOnlyクラスをnew
して利用できている事が分かります。
クラスの定義
public class HogeHoge {
//やりたい処理
}
class
宣言部の前にpublic
を必ずつけると理解して下さい。public static void main(String[] args)
メソッドは、javaコマンドが実行されるクラスのみ宣言する。public static void main(String[] args)
メソッドは記述されていない。インスタンスの生成HogeHoge hogehoge = new HogeHoge();
パッケージの宣言package パッケージ名;
javacコマンド、javaコマンドについては次頁で説明します。