> couldn't we write what we have into disk, since we have already spent the computation power to parse the protocol and schema?
That would trigger further re-compilation, which we are trying to avoid. We might, when the file is present but with a newer date, check its size. If it's not the same size, then we should re-write it anyway, as the schema has probably changed even though the date is wrong. We could even compare the content before re-writing, and only re-write if the content is different, but that's more expensive and probably overkill. If a workspace becomes confused and folks are seeing unexpected problems, 'ant clean' should always repair things. So I'd suggest checking the size as a double-check, but wouldn't bother checking the content.
> we are not sure if we should really prevent the javac and jar from running
You shouldn't have to do anything explicit to stop these. The javac task will only compile things if .java files are newer than corresponding .class files. For jar, if we pass update="true" then it will incrementally update changed files in the jar rather than re-writing the entire jar.