The Java Community Process - Is Sun Listening?
cgu queries: "For those who are familiar with it, log4j is one of the most
widely used Java libraries today. Sun Microsystems intends to ship an obviously
inferior package with JDK 1.4. Is the Java Community Process just a fig leaf allowing Sun to ignore existing development efforts? What has been the experience of other Java developers with the JCP?" There's a bit of history here, so you'll probably want to check out the log4j pages linked to, above. This is a large concern for any language which has developed a community around it, who hopes to assist in its further development. So is Sun paying attention to the community that has rallied around Java or is the Java Community Process just paying lipservice to the intended ideal?
No, this isn't comparable to that case at all. This concerns the default logging package available to all Java classes. With a standard implementation (which log4j quite arguably has been in the Java community, for several years) every code package can be written to use the same logging interface, knowing that it's up to the application to actually decide where and how and at what level the logging should be presented.
By providing a different, incompatible log interface in JDK 1.4, Sun provides strong incentive to developers to stop using log4j and instead switch to the "new standard". The result is that an existing "community standard" gets shoved out of the way by Sun's strongarm. The result is confusion, as developers waste time deciding which log package to use instead of just writing code. This is especially bizarre when log4j is an Jakarta project at apache.org; Jakarta is heavily supported by Sun, and there's no way Sun hadn't heard of log4j, given its widespread use. One must assume, then, that weird politics were involved...
The submitter of the question, it should be noted, is the author of log4j, but that doesn't invalidate his very good question, or his excellent and widely used work. Me, I'm just a happy user of log4j; if you write Java, you should be too.
Now, just replace fool with please and your done.
This is comparable to choosing to implement something other than Electric Fence in C; the impact on the entire community is negligable. If I choose to use a different logger it will not seriously impact anyone outside of the development group. It may mean the default is less than optimal, and people will use it without knowing there is an alternative which is better, but these are the same people who wouldn't know such a library existed now anyway.
Although I have not followed the process carefully, I have looked into both log4j and the JSR specification, and find both to be, well, less than ideal.
First, I am going to assume that the author(s) of log4j made representations on the relevent JSR, and didn't just keep quiet until it closed. The points they have brought up (in this article and in the log4j docs) are very true, and the JSR is certainly an inferior API.
However, Java is becoming increasingly bulked up with useless functionality. While debugging/logging is far from useless, the API presented by log4j is (in binary size) heavy, and IMNSHO a nightmare to use.
The idea of creating types to represent categories, used in both APIs, is a classic example of object overkill. Instead of simplifying code to make it easier to maintain, both these systems add an unnecessary amount of compilation to keep track of the category (amongst other things).
The ideal debug/log system should take a single line to invoke, and not have additional overheads.
Instead of striving for ultimate functionality in a less-than-perfect world, Java should be aiming for a small but effecient and highly usable core set of classes, and leave the bloatware to third-party libraries.
We still have and need a market for third-party software, and it is only through the innovation of extending a simple core that we can grow good software.
The JRE has bloated now from 5.5Mb to 8.8Mb. I've already had to develop two projects in C++ because I can make the distribution less than 650kb and not have to hastle (remote) customers to download and install the JRE ... this is worsening the problem.
Sun is on a mission to create the Ultimate Set of APIs, and call it Java. The "community" is on a mission to get everything they don't want to do themselves shoved into an Ultimate Library. Somewhere we need experienced, knowledgable experts who work in industry with languages, people, design and requirements, to moderate the whole process.
Twylite
i-name =twylite [http://public.xdi.org/=twylite], see idcommons.net