The Pushing of NetBeans and the Dumbing-down of Java

by Ulf on August 11th, 2008 (Permalink)

To me, one of the more useful pieces of the WS-* stack is WS-Security. Web services are out in the open and need proper security. Unfortunately, there isn‘t yet a standard on how to apply WS-Security to a SOAP service, so each SOAP stack does its own thing. The Metro stack -the reference implementation of JAX-WS and a slew of related APIs- is no exception. Recently I was trying to figure out how to apply WS-Security to a  JAX-WS service. Without using NetBeans or GlassFish, neither of which I use. Go ahead, try to find an example of how to do that. The closest I found is this article, which talks about the web service features of Java 6 SE, not JAX-WS per se.

Another example: The Sun Java Tutorial chapter on Swing has a fair number of example applications that show all kinds of Swing features in action. Very useful stuff. It used to be (since around Java 1.1 times, when Swing wasn‘t even part of the standard Java API yet) that these examples came with *.bat and *.sh files that let you run them without having to fiddle around with libraries or classpaths. No more. And although the supplied Ant build files create jar files for each example, those don‘t contain a Main-Class manifest entry, so they aren‘t double-clickable. This would have been a trivial addition. But, sure enough, NetBeans project files to run them are provided.

It‘s apparently becoming accepted practice for everyone working in Sun‘s shadow (which includes most people working on Java API reference implementations) to use NetBeans, and to assume that everybody else does so, too. To me, that‘s a dangerously shortsighted assumption for two reasons. Firstly, -and I don‘t wish to get into a my-IDE-is-better-than-yours discussion- not everybody is using NetBeans; Eclipse, IntelliJ et al. have -and will continue to have- sizable slices of the market. (I was quite shocked when this came as news to a former Sun employee upon his leaving the company.) Making it hard to pick up pieces of the Java cake for those people has a commensurate effect on how easy it is to pick up the language as a whole.

Secondly, using an IDE for everything eventually means not being able to do anything without one. Don‘t get me wrong, IDEs are wonderful, and I‘m not saying vi and the command line are enough. But my experiences from years of moderating Java discussion forums at JavaRanch is that more and more developer starting out use the IDE for everything, and are consequently lost when being forced to do without one. While it‘s nice that an IDE can deploy web apps and web services, create GUIs and run applications, if I can‘t do any of those tasks without one, then I‘m very likely to have a limited understanding of what‘s actually happening under the hood. Being able to develop and deploy a JAX-WS service in NetBeans does not make me a web services developer if I can‘t deploy that service manually. Being able to use Matisse -nice though it is- does not teach me the Swing API. And if I can wire JSF components together, but am struggling to write a servlet that handles request parameters, am I really ready to put web apps into production?

If this was Microsoft, and not Sun, people would be quick to conclude that the company is using its platform-provider advantage to push its own tools instead of providing a level playing field. Let‘s hope that‘s not the direction Sun -and Java- are headed.

Leave a Reply