[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends-ml 12292] Re: [ ズームイン Java]final について( Re: 4/8 のズームイン Java 参加できないので)
高橋(智)です。
"TAKAHASHI,Toru" wrote:
snip
> 完全に依存関係を認識する構築環境はあるのでしょうか?
大昔のJBuilderからの伝統なのですが...
以下、手順です。
後半に、javacを利用した場合に、あるクラスの static final の値を変更したケースにおいて、
「依存関係が無くソースも変更していないので再コンパイルが不要なハズのクラス(.java)」が
再コンパイルされる模様も掲載しました。
(※antコマンドはjavacを利用しますよね?)
1) 最初に、JBuilderをIDEとして起動し、新規プロジェクト(deptest.jpx)を作成する。
2) test1.ConstValクラス, test2.ConstTest2クラス, test3.ConstTest3クラス の3つの
クラスを作成する。ソース(.java)は以下の通り。
-------------------------------------------
package test1;
public class ConstVal {
public static final String VAL = "X";
}
-------------------------------------------
package test2;
import test1.*;
public class ConstTest2 {
public static void main(String[] args) {
System.out.println(ConstVal.VAL); // static final を参照
}
}
-------------------------------------------
package test3;
import test1.*;
public class ConstTest3 {
public static void main(String[] args) {
System.out.println("dummy"); // ダミー
}
}
-------------------------------------------
3) IDEとして起動したJBuilderを終了!!
4) jbuilderコマンドをIDEの起動用に使うのではなく、プロジェクトファイル(.jpx)をメイク
する用に使用する。
(※内部ではbmjコマンド[Borland Make]またはbcjコマンド[Borland Java Compiler]を利用??)
------------------------------------------------------------------------
C:\home\ken\deptest>jbuilder -build deptest.jpx
JBuilder 2006 Enterprise
Borland プロダクトライセンスオーナー: Tomohiro Takahashi, Borland Japan
Copyright 1996-2005 Borland Software Corporation. All rights reserved.
12.0.206.0
deptest.jpx をビルド中...
Java の依存関係を調査中...
ConstVal.java をコンパイル中...
ConstTest2.java をコンパイル中...
ConstTest3.java をコンパイル中...
deptest.jpx ビルド完了。
------------------------------------------------------------------------
5) test2.ConstTest2 を起動し、X と表示されることを確認する。
------------------------------------------------------------------------
C:\home\ken\deptest\classes>java test2.ConstTest2
X
------------------------------------------------------------------------
6) エディタを使って ConstVal.java の VAL を、"X" から "Y" に変更する。
7) jbuilderコマンドを使ってメイクする。
変更による影響のないConstTest3.java(test3.ConstTest3クラス)はコンパイルされない!!
------------------------------------------------------------------------
C:\home\ken\deptest>jbuilder -build deptest.jpx
JBuilder 2006 Enterprise
Borland プロダクトライセンスオーナー: Tomohiro Takahashi, Borland Japan
Copyright 1996-2005 Borland Software Corporation. All rights reserved
12.0.206.0
deptest.jpx をビルド中...
Java の依存関係を調査中...
test1 の調査中...
ConstVal.java をコンパイル中...
test2 の調査中...
ConstTest2.java をコンパイル中...
test3 の調査中...
deptest.jpx ビルド完了。
------------------------------------------------------------------------
8) test2.ConstTest2 を起動し、Y と表示されることを確認する。
------------------------------------------------------------------------
C:\home\ken\deptest\classes>java test2.ConstTest2
Y
------------------------------------------------------------------------
付記:エディタを使って ConstVal.java の VAL を、"X" から "Y" に変更した後に、すべての
.javaファイルをjavacを使ってコンパイルしてみる。変更による影響もなく、ソースも
変更されていない ConstTest3.java が再コンパイルされ、.classファイルが再生成される!!
---------------------------------------------
C:\tmp\valtest>javac -verbose test1\*.java
[test1\ConstVal.java を構文解析開始]
...
[test1.ConstVal を確認中]
[test1\ConstVal.class を書き込み完了]
C:\tmp\valtest>javac -verbose test2\*.java
[test2\ConstTest2.java を構文解析開始]
...
[test2.ConstTest2 を確認中]
[.\test1\ConstVal.class を読み込み中]
...
[test2\ConstTest2.class を書き込み完了]
C:\tmp\valtest>javac -verbose test3\*.java
[test3\ConstTest3.java を構文解析開始]
...
[test3.ConstTest3 を確認中]
...
[test3\ConstTest3.class を書き込み完了]
---------------------------------------------
--
高橋智宏
Java読書会( http://www.javareading.com/bof/ )