Re: Incremental Java Compile
This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
---910079544-178468139-1273400612=:31162
Content-Type: TEXT/PLAIN; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8BIT
On Sat, 8 May 2010, Joshua Maurice wrote:
On May 7, 9:08?pm, "Mike Schilling" <mscottschill...@hotmail.com>
wrote:
Joshua Maurice wrote:
If anyone else cares, I managed to inadvertently stumble across a
solution. On impulse, I asked a co-worker at lunch. It seems that
class files do not contain sufficient information with default javac
options. However, when compiled with -g, it contains a listing of all
types used in the compile.
Are you sure?
$ javac -version
javac 1.6.0_16
$ echo "class Foo {public static final int X=23;}" >Foo.java
$ echo "class Bar {public static final int Y=Foo.X;}" >Bar.java
$ javac -g Foo.java Bar.java
$ grep Foo Bar.class
$
I can see no sign of Bar.class containing any mention of Foo.
When combined with Ghost Dependencies, I think this can result in a
correct incremental build at the file level which will not cascade
endlessly downstream. I'm working on the finishing touches to my
prototype now.
You realize that you're now going to recompile a class when it refers to
another class to which a comment was added.
Yes. I'm pretty sure that it would be better than doing a full clean
build or a cascading jar-dir-unit incremental build.
The previous time we discussed this, the idea came up of looking at
changed class files to see if the changes were consequential -
essentially, if the change changed the interface of the class (added a
method, changed a method's signature, changed the value of a constant,
etc). If you did that, you could filter the changes so that only
consequential ones triggerd recompilation of dependents. That would avoid
the unnecessary recompilation Mike mentions, wouldn't it?
tom
--
All roads lead unto death row; who knows what's after?
---910079544-178468139-1273400612=:31162--