<< January 5, 2005 | Home | January 7, 2005 >>

Standard Java, Extra-JCP Technologies, Rebel Frameworks, ...

"Quickly, what is Standard Java?"

"Stuff coming out of Sun. JCP, JSR, etc."

"What about SWT?"

"Never paid attention to it. It's IBM trying to sabotage standard Java."

"What about the Logging API?"

"That's standard Java. And standards are good."

"What about Log4j?"

"Not standard. Should be dead. Shouldn't use it. Everyone should migrate away from it."

"What about EJBs?"

"EJB is standard and good. I wrote three entity beans myself. It's quite easy. I used an Access database."

"What about Spring and Hibernate?"

"I heard Paul and Eric talking about them. The bloggers talk about them all the time. But they're not standards. We are not going to use them in our projects."

"Do you use Ant, JUnit, XDoclet? They are not standard."

"Uh? They have got to be standards, because we use them all the time."

"I bet you've never heard of OSGi."

"Nop. There is no JSR for it. Must be useless."

"Do you like static imports?"

"Yeah, yeah, yeah. It's a new feature in Java 5. It's standard and it must be good."

"What about compiling Java into native code, using GCJ?"

"You must never do that. You lose platform portability. Plus, GCJ is just a bunch of kids trying to get Sun to open source their JDK."

The person answering is a run-of-the-mill corporate IT developer who works 9 to 5, who reads java.sun.com and perhaps eWeek and who doesn't read blogs. Of course his answers are all wrong.

Here are the correct answers to some of the questions:

  • There is no such thing as standard Java. Sun almost submitted the Java language spec to ECMA but withdrew at the last minute.
  • The JCP process is used to define what goes into the JDK (and the J2EE/J2ME). Nothing more. Sun has the ultimate control over it, but they've been good at letting other platform vendors participate.
  • Extra-JCP technologies is a very natural thing to have, just like non-Microsoft technologies for Windows. No Java project could survive a day without at least some extra-JCP technologies.
  • SWT, Spring, Hibernate are in one sense reactions to (maybe perceived) deficiencies in JDK/J2EE. In that sense they may be termed "Rebel Frameworks." But there are many situations when they can be used to good effects.
  • Even obscure technologies are useful in some specialized domains. Don't discount them as useless or irrelevant. Just because the authors chose not to hype their creations, doesn't mean the technology is less advanced or sound. We will do well to get familiarized with them.