実行環境(WinからMacなど)が変わる事によりソースを修正する必要はないけど、コンパイルはしなおす必要があるって感じなんですか??
すごく初歩的な質問ですいません…よろしくお願いします。
javaで作成したプログラムはコンパイルするとバイトコードという
ファイル(.classファイル)を作成します。このファイルがJavaVM
下で動作します。よって、これを移植すればOSが異なっていてもコ
ンパイルする必要はないと思います。JavaVMはOS毎に異なりますの
で、これはそれぞれインストールする必要があります。あと、java
のソースファイルでクラスパスの設定などをしているのであれば
(移植元.classファイルが複数あり、異なるディレクトリに存在し
ているのであれば)、移植先もそれに合わせて実行環境を構築したほ
うがいいと思われます。
御返信ありがとうございます。
基本は不要なのですが、複雑な構成(環境)から
作り直す(リコンパイル)しなくてはいけないケースも多いということですよね?
勉強になりました! ありがとうございました!
↑
プラットフォームごとにコンパイルし直す必要はなく、コンパイルしてできたJavaバイトコードを、Java仮想マシンと呼ばれるソフトウェアが各プラットフォーム間の違いを吸収して実行するそうです。
御返信ありがとうございます。
JVMが違いを吸収してくるんですねー。
勉強になりました。ありがとうございます!
"Write once, run anywhere" (WORA、「一度(プログラムを)書けば、どこでも実行できる」)
を謳っていますので、基本的には再コンパイルの必要はありません。
ただし、JVM毎に若干ですが動作しようが違うことがあるので、
まったく同じ動作にしようと思えばプログラム的な工夫がだいぶ必要です。
御返信ありがとうございます。
WORAとはいえ、やっぱり謳い文句通りという訳には
いかないんですね!!
貴重なご意見ありがとうございます!!
Javaバイトコードのコンパイルは原則不要です。
但し、Javaのバージョンの違いや、Javaバイトコード
のコンパイラの不具合や、Javaバイトコードの互換性、
Java実行環境の互換性の違いがある場合があります。
100%完全にコンパイルなし、ソース修正なしでの動作保障
されているわけではありません。
例:
http://java.sun.com/j2se/1.4/ja/docs/ja/guide/plugin/developer_g...
Java関連用語
御返信ありがとうございます。
そうですよね! 以前SEの人が「WinからMacに移して再コンパイルした」とか言ってたような気がしたんです! WORAって言葉は知ってたので 「あれ?」と思い今回質問させて頂きました。
貴重なご意見ありがとうございます!!
御返信ありがとうございます。
WORAという言葉は知ってるんですが、実際本当にそうなのでしょうか?