You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by Gilles Scokart <gs...@gmail.com> on 2009/06/24 21:09:52 UTC

JDK version for log4j1.2.X

Looking on the mailing list [1] and on bugzilla [2] I got the info that
log4j 1.2.x target JDK 1.1.  The website [3] doesn't say something
different.

However, when I look in the code, I see some usage of classes that only
exists in 1.2 (HashMap and ThreadLocal for instance, and there is probably
others).
The usage of the targeting in the compilers is just completely broken,
because the compiler just produce byte code in the targeting format, but
doesn't check if you are using new classes/methods.  It unfortunately
doesn't check the 'since' tags of the methods (the Sun compiler at least).

So, I'm afraid the target target 1.1 specified in the pom [4] should be
changed (or you should find a 1.1 build environment, or at least a 1.1 test
environment).



[1] http://markmail.org/message/whsluupp4nub7hb3
[2] https://issues.apache.org/bugzilla/show_bug.cgi?id=42189#c18
[3] http://logging.apache.org/log4j/1.2/faq.html#1.3
[4] http://svn.apache.org/repos/asf/logging/log4j/trunk/pom.xml



Gilles Scokart

Re: JDK version for log4j1.2.X

Posted by Curt Arnold <ca...@apache.org>.
Should update the FAQ since it still mentions log4j 1.3 which has been  
discontinued.

The target parameter indicates the byte-code format to be generated in  
the compile step.  It implies the minimum JRE revision below which  
loading is prohibited.  It does not indicate the suggested,  
recommended or tested minimum JRE.

The current log4j 1.2.x builds generate JDK 1.1 compatible byte-code.   
Some features such as AsyncAppender require JDK 1.2 features, but as  
long as those appenders are not used, it should be theoretically  
possible to use log4j in a JDK 1.1 compatible environment.

There is problems some very early JRE's where they either will not  
load valid byte-code that was generated by later compilers and early  
compilers where they would not successfully compile valid source  
code.  The minefield of problems makes it very frustrating to build or  
test on Sun environments earlier than JDK 1.3.

The byte-code format changed at version JDK 1.4 and Java 5.  The byte- 
code formats for JDK 1.1-1.3 are identical except for the version  
declaration.  Changing the byte code format from 1.1 to 1.2 or 1.3  
would only stop earlier JVM's (or more likely environments that are  
compatible with earlier JVM's) from attempting to load log4j.  All  
that would occur from bumping the version from 1.1 to 1.2 would be to  
prevent any hypothetical users on a JDK 1.1 compatible platform from  
using that release.

JDK 1.4 is used for release builds and testing.  JDK 1.3 can build and  
log4j using Ant (but not Maven which requires JDK 1.4) and the release  
build from the Maven build works fine.  I don't think I could get JDK  
1.2 or 1.1 to run the tests using a bat file on Windows, but that was  
due to defects in the environment.

log4j 1.2.x does not intentionally use any features later than JDK 1.2  
(though we might have relaxed that a few years back so maybe there is  
something that depends on JDK 1.3).  log4j-extras can contain things  
that require JDK 1.4 or later features.

Hope that makes things clearer.

On Jun 24, 2009, at 2:09 PM, Gilles Scokart wrote:

> Looking on the mailing list [1] and on bugzilla [2] I got the info  
> that log4j 1.2.x target JDK 1.1.  The website [3] doesn't say  
> something different.
>
> However, when I look in the code, I see some usage of classes that  
> only exists in 1.2 (HashMap and ThreadLocal for instance, and there  
> is probably others).
> The usage of the targeting in the compilers is just completely  
> broken, because the compiler just produce byte code in the targeting  
> format, but doesn't check if you are using new classes/methods.  It  
> unfortunately doesn't check the 'since' tags of the methods (the Sun  
> compiler at least).
>
> So, I'm afraid the target target 1.1 specified in the pom [4] should  
> be changed (or you should find a 1.1 build environment, or at least  
> a 1.1 test environment).
>
>
>
> [1] http://markmail.org/message/whsluupp4nub7hb3
> [2] https://issues.apache.org/bugzilla/show_bug.cgi?id=42189#c18
> [3] http://logging.apache.org/log4j/1.2/faq.html#1.3
> [4] http://svn.apache.org/repos/asf/logging/log4j/trunk/pom.xml
>
>
>
> Gilles Scokart


---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org


Re: JDK version for log4j1.2.X

Posted by Gilles Scokart <gs...@gmail.com>.
I have to correct myself, ThreadLocal is not used.

But HashMap is used in AsyncAppender since at least 1.2.14, In LoggingEvent
since 1.2.15 and more recently in EnhancedThrowableRenderer (not yet
released).


Gilles Scokart


2009/6/24 Gilles Scokart <gs...@gmail.com>

> Looking on the mailing list [1] and on bugzilla [2] I got the info that
> log4j 1.2.x target JDK 1.1.  The website [3] doesn't say something
> different.
>
> However, when I look in the code, I see some usage of classes that only
> exists in 1.2 (HashMap and ThreadLocal for instance, and there is probably
> others).
> The usage of the targeting in the compilers is just completely broken,
> because the compiler just produce byte code in the targeting format, but
> doesn't check if you are using new classes/methods.  It unfortunately
> doesn't check the 'since' tags of the methods (the Sun compiler at least).
>
> So, I'm afraid the target target 1.1 specified in the pom [4] should be
> changed (or you should find a 1.1 build environment, or at least a 1.1 test
> environment).
>
>
>
> [1] http://markmail.org/message/whsluupp4nub7hb3
> [2] https://issues.apache.org/bugzilla/show_bug.cgi?id=42189#c18
> [3] http://logging.apache.org/log4j/1.2/faq.html#1.3
> [4] http://svn.apache.org/repos/asf/logging/log4j/trunk/pom.xml
>
>
>
> Gilles Scokart
>