Wednesday, March 19, 2008

NetBeans 6.1: The Best just got Better

When it comes to IDEs, I've been around. I've used Visual C++ since version 1.5. Tried other environments over the years, but Visual Studio was by far the best no matter what other people claimed.

I started using Eclipse since that's what everyone around me was using for some Java work and I hated it. I'll reserve my thoughts on that for a future blog post but it was never a comfortable fit for me. Needless to say, I've converted my entourage from Eclipse to NetBeans now.

Version 5.5.1 of NetBeans was pretty good but the editor kept, well, I'm not quite sure on how to describe this, but it kept being wrong... or feeling wrong at least. Not sure if that makes any sense but that's the best I've got to offer.

NetBeans 6 was simply fantastic. It was just great. Probably one of the best IDEs I've ever used. That being said, it had a few shortcomings that were really annoying. On huge files, code completion was somewhat slow. Not that slow, but code completion is one of those features where you must literally work at the speed of thought of the developer. Otherwise, you break the flow of the developer. Startup time was annoying but manageable.

NetBeans 6.1 has really been great for me, so great that I've ditched 6 for the 6.1 beta. They are several reasons for this. First, it seems to me like this thing has had a lot more debugging time than a fully patched 6.0.1 release has. So it just works even if it's just a beta. That being said, a small caveat here is that I shun JavaScript work in favor of GWT. So I don't know how the rewrite has impacted that editor.

However, it's the little things that make the difference. For example, my favorite new feature by far is the default location of the Glassfish domain. Silly? Maybe, but I use Vista across the board. It has always been considered impolite under Windows to write to "Program Files" after installation has completed. Starting with Vista however, that folder has now been locked down. Meaning that with NetBeans 6, the default developer domain lived under "Program Files\Glassfish\domains\domain0". Under Vista, you had to either unregister your Glassfish server from the IDE and re-register it again with a more polite location, or you had to go into the Glassfish folder in "Program Files" and grant yourself write privileges to the domain's folder in order to support all scenarios. NetBeans 6.1 under Vista, and hopefully under any other Windows version too, creates the default domain inside your home directory. I think I almost cried when I saw that.

That being said, as much as I love this IDE now, ending a 14 year old run on Visual Studio/C++, I still have my pet peeves. In no particular order:
  • it's still slow to startup even it's a lot faster than it used to be.
  • I hate the fact that they are no project grouping feature similar to the solution concept in Visual Studio. NetBeans does actually have a project group feature but I just hate it. I hate it because it doesn't live on the file system, hence I can't commit it to source control. This means sharing project groups between team members is really annoying. I hate it because it clutters up the UI. The idea of a master project I find is also broken. Simply because you don't know right off the bat which of the project in a hierarchy is the master. I'm hoping that full support for Maven in NetBeans 7 will take care of this.
  • I use this IDE for pretty much everything now except for Windows Mobile and Android development. Which means I use it for C++ too. I don't use C++ that much anymore but it does come in handy. It works really well under Windows with cygwin, I even have Microsoft's Platform SDK hooked into this thing. Again, works pretty well. That being said, g++ is the only supported compiler under Windows. Considering the Visual C++ compilers ship with the Platform SDK now, I would like to be able to just use those instead of g++.
  • I would like to be able to run multiple instances of the IDE at the same time. The scenario here is when I want to debug both the client and server end of an application at the same time.
  • Better GWT support. Matisse is great but with all these new languages and toolkits like JRuby, Groovy and GWT coming into the Java ecosystem now, isn't it about time this thing started to learn new tricks? Look at SharpDevelop for instance. It has a visual form designer for all the languages it supports.
  • Message queues in the services tab. I really like the services tab. I really like the fact that databases are showing up there too now with this release. The Java DB menu item looked out of place in the tools menu in 6. Support for stand alone instances of JMS brokers would be a welcomed addition. I use Glassfish a lot, but I also use ActiveMQ outside of any Java EE container a lot too. Why? Because of the additional interoperability features it provides. Very handy to have around. And yes, before anyone comments on this, I know about the STOMP adapter from CodeHaus could probably be installed on OpenMQ.
  • Support for Groovy, Groovy and Groovy.
  • Lastly, I would like to see a Geronimo server plugin. Yeah, I know this a weird one considering I'm all Glassfish. However, I have one project where Geronimo was the best compromise I could reach. Maybe this is selfish but in my defense, I would probably have started coding this if it hadn't been for this thread here.
All in all, I'm pretty happy. I won't be switching back to Visual Studio anytime soon. The only real problem I have with NetBeans is that since everything is in the open and announced upfront, I find I'm always eager to get my hands on the next release, never truly satisfied with the current one. I would imagine however that's a good problem for NetBeans to have.


Alexis said...

Hi Patrick. It's hard to disagree with the nice things you have to say about NetBeans 6.1. I'm curious though about your statement on ActiveMQ's additional interoperability features. Can you elaborate? thanks!

pjulien said...

Hi Alexis,

ActiveMQ supports the full JMS API but also supports many additional protocols on the wire.

Namely REST, STOMP and OpenWire to name a few. Also planned is support for the AMQ standard.

REST speaks for itself.

STOMP makes it easy to interact with the queues using scripting languages since it's all XML based.

OpenWire is a binary format specific to Apache. However, ActiveMQ supplies C, C++ and .Net clients in addition to Java. Very handy. For example, I have a mobile project on .Net Compact that communicates to ActiveMQ using OpenWire.

The new AMQ standard is not yet implemented, or at least shipping, with ActiveMQ but will hopefully lead to a world were different JMS implementations can talk to each other.

pelegri said...

Hi Patrick. Would you mind explaining a bit the use-case where Geronimo was better suited than GlassFish? And thanks for all our nice words about GlassFish - eduard/o

pjulien said...

Hi, there was no technical reason. This was with a new semi-technical customer i.e., no prior working relationship.

The customer had heard of JBoss and Tomcat but not of Glassfish and was adamant about running on one of them.

I didn't want to use JBoss since I was unwilling to work with Java EE 1.4.

I tried my best to explain that Tomcat was composed of different components and that its engine, Catalina, was also featured in Glassfish.

That didn't work, the discussion was just too technical. I didn't want to sacrifice the full Java EE stack however.

So what got Geronimo in? I showed him the startup page of the Geronimo console. That page lists the integrated components and Tomcat is on there. That's what sold it.

That being said, now that the relationship is established, it would no longer be a problem to get Glassfish. Geronimo endures simply due to laziness and that it is more than adequate for the job.

Needless to say, there is something to learn from this story. I certainly did.

pelegri said...

Thanks, Patrick. It's ironic that we were one of the founding groups of Tomcat (together with the old JServ group), we invested many man-years and now it is hard to get any credit for it. Oh well. Thanks for the insight. - eduard/o

pjulien said...

Yes, this is not lost on me. I did bring up that Sun was Tomcat's original author.

Neil's netbeans stuff said...

and now in nb6.1 you can have minified javascript and css files included in your war files during the build process, check out my blog

bhaskar karambelkar said...

What's the problem with the maven support in Netbeans 6.1 ?
I think it's the most comprehensive support of all the available IDEs right now.
Eclipe's half-assed support for maven is laughable at best.

pjulien said...

Hi Bhaskar,

Nothing, my point was more directed at the lack of an equivalent to a Visual Studio solution in NetBeans.

jc said...

Personally, I feel Netbeans is much better than Eclipse and I promoting Netbeans in my company, a large local system integrator. I really don't know the factors that make Eclipse more popular than Netbeans. Would anyone suggest some reasons that highlight advantages of Netbeans so that I can show justification to my colleagues to adopt Netbeans?

becoming parents?(TM) visit

Anonymous said...

1。那混合物是更缓慢的 ... 但是 Lexus 的即将到来混合版本 ' 将是比气体气体更快的唯一的版本如好地有多马力。不要自夸速度,但是我被吸引轮流开送行为 90,是警察给我一次休息。
... 只是通过在城市乘公交车往返我储蓄过来 $ 5000/yr 与我的以前的汽车,吉普车切诺基相比。超过 5 年,会是 $ 更不用说会进一步增强我的储蓄的最近的比率远足的 20K。这样除非你是在你的父母的地产上吸的一个浪费的儿子,你的声明是一束公牛。

Anonymous said...

3. 45 (90 r/t)
45mpg 天是 2 我的车上> 8 加>>比。那每天是 6 >仑的一笔>蓄, 120 月, 1440 每年者 5040 (根 3.5 元/) ... 加上它发表 1/10th CO2。多愚蠢是它不要骑一个,去算进今天和年龄。
4.缺少了解 ... 是真的,实际上我个人这样那样喜欢它我可能享受所有鼓励;税,合伙用车,免费停车米, prius 业主之间的秘密的信号,等等;这样自私地说那我真地在那里在享受在所有气体汽车业主上的所有权那没有一个想法多少我这辆汽车有的嬉戏。我 junked 我的 SL,郊区对我的 Prius ... 你应该也。

Android app developers said...

Your blog is attractive arresting and its accepting the adequate able information. Its benefited one for lots of peoples , so you to advance your blog by application some Internet business action because it can calmly to adeptness the peoples and they get adequate entertainment.

Android developer