目次
もくじ

Windows-Linux間の互換性

実行ファイルは共通

コンパイル後の hoge.class は共通に使える。Windows環境でコンパイルしたものとLinux上でコンパイルしたものを混在させての動作もプログラム自体には問題ない。

ただしコンパイルしたjava(javacのこと)のバージョンと,実行する環境のjavaのバージョンが異なると動かないことはある。

再コンパイルは要注意

ソースファイル( hoge.java など .java ファイル)の中に日本語の文字(正確には基本ラテン文字(ASCII)以外の文字)が含まれなければどちらの環境でコンパイルしても問題ない。

ただし,日本語の文字が含まれている java のソースをコンパイルする時には日本語の文字コードの種類(エンコーディング方法)が問題になる。javaコンパイラはソースの文字コードは、自分の置かれたOSが使う文字コードと同じであると仮定してコンパイルするからである。(日本語がコメントだけでも同様)

ひとつのOSの上で文字コードの環境を変更せずにコンパイルするなら、文字コードを意識する必要はない。

プログラム(*.java)の中に日本語がある場合は次のうちいずれかを行う。

データ

読み込むデータについては、また別に対応が必要になる.

特に文字コードを考慮せずにプログラムした場合は,Shift_JIS環境で実行するとShift_JISを仮定し、UTF-8環境ではUTF-8を仮定してファイルを読むようになる。これはこれで便利なのだが,Shift_JIS環境で書いたデータをUTF-8環境へ持ってきてそのまま使うわけには行かない。文字コード変換などをしてデータも合わせて用意する必要がある。

文字コードを決めてどちらの環境でも同一の文字コードで読むように設計することも可能である。

ファイルを読み込んでからプログラムの中で文字コードを判別するのは難しくどうしても誤判定が残る。

コンパイル時に文字コードを指定する方法

Windows環境でUTF-8環境(学校)で作られたソースをコンパイルする場合

$ javac -encoding UTF-8 Hello.java

UTF-8環境(学校)でWindows環境で作られたソースをコンパイルする場合

$ javac -encoding Shift_JIS Hello.java

つまりはコンパイラにファイルのエンコーディング方法を教えればよい。

javaで使える文字コードの呼び名

Shift_JISSJIS シフトJIS(JDK 1.2~JDK 1.4.0では Shift_JISSJIS ではなく MS932 の別名)
Windows-31JMS932 シフトJISにWindows拡張文字を含ませたもの
ISO-2022-JP ISO2022JP:いわゆるJIS
EUC-JP, EUC_JP 日本語EUC
UTF-8UTF8 Unicodeの符号化の一種

Javaプログラミング(Feb.2009)
聖愛中学高等学校
http://www.seiai.ed.jp/
Aug.2003 初稿?