<body><script type="text/javascript"> function setAttributeOnload(object, attribute, val) { if(window.addEventListener) { window.addEventListener("load", function(){ object[attribute] = val; }, false); } else { window.attachEvent('onload', function(){ object[attribute] = val; }); } } </script> <iframe src="http://www.blogger.com/navbar.g?targetBlogID=274733158300670236&amp;blogName=Shooley+-%3E+Eclipse%2C+Java%2C+and+OS+X&amp;publishMode=PUBLISH_MODE_FTP&amp;navbarType=BLUE&amp;layoutType=CLASSIC&amp;homepageUrl=http%3A%2F%2Fwww.shawnhooley.com%2F&amp;searchRoot=http%3A%2F%2Fblogsearch.google.com%2F" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" height="30px" width="100%" id="navbar-iframe" title="Blogger Navigation and Search"></iframe> <div></div>

NetBeans 6.5: The Road to Recovery

Friday, August 8, 2008 by shooley

[After reflecting on this post, my blog title probably needs to change.]

Overview

I was a long time Eclipse user, but constantly hearing the NetBeans propaganda on Java Posse I decided to give it a shot. At first I was using 6.1, which I tried to love, but soon discovered why most people rip it. Compared to Eclipse, some of the bare necessities of life were missing, and developers with NetBeans were forced to go without. To name a few: mutli-threaded debugging, a combined compiler error list, and compile/deploy on save. I had read a line on Sun's site claiming NetBeans to be the 'reference implementation Java IDE, and I was just like, really? To make that claim I'd think at a minimum they would have to have the edit-compile-debug development cycle nailed down tighter then any other IDE available, never mind having this feature gap.

But, alas hope springs eternal. I soon came across a link to 6.5 and quickly found the three missing pieces I mention had been fixed, as well as a slew of other features that were under development.

Here are the highlights of my experience.

Tight Integration
Probably the biggest strength of Netbeans to me is that everything either comes right out of the box, or is an update away in their plugin system. UML is easy to use, profiling is built in (though I haven't had a chance to use it yet). Other languages are quickly added via a different download from Netbeans.org, or via the plugin manager. Hotkey maps support either the default of Netbeans, Eclipse, or Emacs to make the pain of trying a new IDE a little less painful. Eclipse has varying support in all these different areas, but the less time spent configuring and maintaining my IDE, is more time spent on solving my real problems.

Client Side Javascript Debugging
I know I'd seen this working in demo's on Eclipse before, but again with Netbeans you get this out of the box and working with either Firefox or IE. My project is a mix of all different client side technologies, and Netbeans will hit breakpoints in either js or inline java, if you're so cursed.
This is one area where I've seen incremental improvement in the nightly builds and am still feeling my way through, but already I feel a boost in tracking down issues. Rather then having the strong tooling on the server side, and being left to the wolves and Alert, my IDE can now provide at least some insight as to what is happening client-side.

Web Development
Sun's big push has been in adding support for web languages beyond Java. At first this made me mad, since features I'd missed from Eclipse were missing. But as my biggest gripes have been fixed, having an IDE that is way out in front in building unified support for a wide array of languages seems to be a good thing. To name a few: Ruby and Python, which I've never tried, and also the jvm 'tunnelling languages' (a term I love), Groovy and Scala which I've dabbled with. Grails for NetBeans also seems to be one area where they have a clear advantage over Eclipse. On a recent Grails podcast the lead devleoper for Groovy on Eclipse spoke at some length about the ongoing plugin development efforts, with the gist seeming to be that NetBeans was far out in front.

Conclusion
I feel like NetBeans has finally closed the feature gap with the other IDE's and at least poised to compete with Eclipse and Intellij going forward. It's free, so that beats Intellij, and has minimum configuration, so that would seem to beat Eclipse in many respects. The biggest barrier to entry on any new tool for the majority of developers is the pain they must first experience to get their bearings.

The one huge missing feature still is Mylyn which seems to be the greatest leap forward in programming in the last generation. Sun has a incubator project called Cubeon, but it's only just beginning to crawl. A much better solution would seem to be a port of Mylyn or a common tooling framework for them to share functionality.

The final build of 6.5 should be hitting d/l sites in the next week or two, and if you're so inclined to branch out, I think NetBeans is definitely worth a look.

Wednesday, February 27, 2008 by shooley

As Joel Spolosky says 'all software engineering problems ultimately come down to the underlying OS and hardware, so you have to understand the interals at the lowest level.' Or something like that..
Trying to debug a JVM resource problem I came across this little gem from Microsoft: Process Explorer gives much more detailed information about a running process, including handles, threads, and open file descriptors onto the system.
Two other important tidbits:
1. I found a hard limit of 10,000 handles a window process can hold.
2. A bug in JDK1.4.2 (Bug ID 4189011 - "Too Many Open Files") with a limit of ~2000 files that can be opened. Resolved in JDK1.5.

Good API Design

Monday, January 28, 2008 by shooley

Here's a good talk from Josh Bloch on API Design.