[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/ )