On Aug 16, 2005, at 1:58 PM, Mark Womack wrote:

We can make it so that log4j is compatible with 1.2 and happy when it runs.
Just compile using jdk 1.2 instead of jdk 1.3 or 1.4.

That should be possible, but I suggested using Jikes while producing the distribution since it seemed to be an adequate and less complicated solution.

I made attempts to compile under JDK 1.2, but that required rebuilding Ant 1.6.5 or reverting to an Ant 1.5 that doesn't suffer (and more significantly) from the same problem, applying the change to LoggingReceiver to work-around its compiler bug, and assembling the necessary jar and tweaking the classpath since quite a few of which have been added to JDK in 1.3 and later and are assumed to be in the build environment.


I think the messages
we are seeing are related to compiling the release lib with 1.4 instead of 1.2 (or 1.1 in the case of 1.2.12). And they are non-fatal warnings, not
errors.

I have not seen them result in log4j not properly functioning. But Ant builds suffering from the same issue are failing to function, so I think the issue should be addressed.


I have to imagine that compiling with jdk 1.2 (or 1.1) will
generate compatible byte code for that jdk. And it appears that Ant will support compiling with different jdk's while itself runs in jdk 1.4. I don't know if there is any performance penalty for running jdk 1.2 byte code
in 1.3/1.4.

If you feel comfortable configuring Ant to use a classic compiler while running on a later VM, that would be an option. I'd assume that you'd be specifying -Dbuild.compiler=classic and need to make sure that JDK javac was on the path and that tools.jar was not on the classpath (likely by running under a JRE and not a JDK). However, switching to an earlier javac seems equivalently disruptive as switching to jikes.

My understanding is that any performance penalty would be at class load time and not run-time. If there was a performance penalty, then the user is free to recompile the jar with whatever compiler they prefer.



Assuming the above, the question still remains.  Is there a compelling
reason to dump jdk 1.2 compatibility besides easing the building and testing
requirements?

I haven't seen a compelling reason. However, I think the consensus is that the threshold for abandoning JDK 1.2 compatibility on the 1.3 branch is not high.

Hopefully, not to confound the issue even more, but my expectation is that when we start the log4j 2.0 branch we'd set the target as JDK 1.5, though possibly provide variants that would run on earlier JDK's. For example, I'd expect log4j 2.0 to use StringBuilder (non synchronized equivalent of StringBuffer) in the source code. We could consider providing alternative builds that would tweak the source code to use StringBuffer.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to