You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-user@logging.apache.org by Ceki Gülcü <ce...@qos.ch> on 2002/06/17 23:18:40 UTC
Re: Why is the version number included in the log4j jar file
name?
At 16:29 17.06.2002 -0400, Tom Caulkins wrote:
>Hello,
>
>I've looked through the archives of both the log4j-user and log4j-dev
>newsgroups, and I've not found the answer to my question. If the answer
>is there, and I missed it, my apologies.
This was discussed a few months back although I can't find the reference.
>In previous versions of log4j, the jar file name was simply
>log4j.jar. Now it is log4j-1.2.4.jar. Last month it was log4j-1.2.3.jar.
Indeed.
>Why is the version number now being included?
Because it makes it easy to identify the log4j version being used at a glance.
>Is this a decision that was made by the log4j development team, or is it a
>mandate from Jakarta?
Jakarta usually does not intervene on such matters. (This is one of the
major strengths of the Jakarta project and also one of its main weaknesses.)
>I think it's a bad idea to include a version number in a jar file name -
>any jar file name, not just log4j. I also think it's a bad idea for the
>end-user to rename jar files that are provided by third parties, such as
>Jakarta/log4j. But without renaming, I see these problems:
>
>* All scripts that reference the jar file will need to be modified when
>taking each minor release. This would include scripts to build
>applications, run programs, set classpaths, etc.
Indeed, this is an inconvenience.
>* Multiple versions of the jar file will end up in the system. If it's in
>the Java extensions directories, where class loading order cannot be
>controlled, there will be cases where the wrong version of classes will be
>found. ( I think I may have found some examples of this problem in
>messages to this newsgroup when I searched the archive. )
Is this really really to version numbers in jars? I don't think so.
>Keep in mind that the jar file version is always available in the jar's
>manifest.
True.
>For these reasons, I hope you will consider dropping the version number
>from the log4j jar file name. If this is a Jakarta decision, please let
>me know where I should direct this request.
No, this is the right place.
The change followed a request by Elliotte Rusty Harold in February
2002 (See http://www.cafeaulait.org/2002february.html). Here is his
request:
I have a request to make of the log4j team, as well as all the other
Java programmers at the Apache Project, IBM alphaWorks, Sun, and
everyone else who distributes JAR archives. Could you please attach a
version number to all your JARs? I maintain several systems whose ext
directories I try to keep in sync. However, it's extremely difficult
to do this when there's no straight-forward way to look at log4j.jar
(or xercesImpl.jar, servlet.jar, jedit.jar, saxon.jar, or any of the
several dozen other jar archives I work with on a daily basis) and
quickly tell which version it holds. I personally experience this
problem mostly with XML related jars, but the problem is hardly unique
to XML. It's especially problematic when some other software requires
a particular version of a third-party jar. For instance, IBM
alphaWorks' XML Security Suite works with Xerces 2.0 beta 2 but not
earlier or later versions. The Apache XML Security project works with
the release version of Xalan 2.2 or later. My own XInclude software
works with Xerces 1.4.0 through 1.4.3 but not earlier or later
versions.
Mostly I just add numbers to the jar archives when I copy them into my
ext directory. However, that step is often forgotten, and it's almost
never been done when I'm working with somebody else's system
(e.g. trying to debug some student's homework for him or her). And
when a distribution like FOP bundles several third party jars like
Batik and the Bean Scripting Framework, they often don't bother to
tell you which version they've bundled. It would be much easier if all
JARs included appropriate version numbers in their names. It's also
important that JARs name themselves with their sources for JARs that
may come from multiple places. A good example of what to do is the
Bouncy Castle JCE implementation. It's called
"bc-jce-jdk13-112.jar". You can tell at a glance that it's version
1.1.2 of the Bouncy Castle implementation of the Java Cryptography
Extension for Java 1.3. Even if that isn't obvious, you most certainly
won't confuse this with any other implementation of the JCE (of which
there are several).
We probably all agree version numbers in jars is a matter of personal
preference, not life and death.
>Thanks,
>Tom
>------------------------------------------
>
>Tom Caulkins
>Senior Systems Developer
>Platform Services - Business Intelligence Platform
>SAS Institute Inc.
>Tom.Caulkins@sas.com
--
Ceki
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>