Just as if there were not enough blog posts on the internet on Netbeans vs Eclipse, I decided to add one. Actually humor aside I’m faced with a serious issue on a recent project. Here’s the situation.
I normally use Netbeans on my MacbookPro and pretty content with it. Every now and then I get tempted to *try* Eclipse and then leave aside for the comfort of Netbeans. But in this last project I was required to use Eclipse.
Although I’m not a big fan of Eclipse, I’m also not against it. Esspecially after Oracle bought Sun Microsystems, I felt a bit uneasy with the fact that NetBeans will not have SOA pack again, which included pretty useful roundtip editors for BPEL, WSDL editing and JBI tooling on Glassfish. Nevermind, that which is a topic of a another post. It was clear that for SOA orchestration tooling I’ll be using Eclipse in the near future so better get used to it.
To be honest, I was not expecting that much of Eclipse Helios but I found out the JavaEE support to be very decent. My current project does not leave me time to play with all aspects but I’m trying to make a slow transition to Eclipse at least trying to be “bidelingual” for whatever that means.
This list is by no means complete but I’ll surely try to be neutral and focus on productivity first. I’ll also try to update this post as requent as possible to keep it up-to-date.
Update – Jan 6th.
Afer having coded exclusively in Eclipse for a couple of days, I’ve found some points in favor of Eclipse as well as some updates to the issues I’ve written. Shortcuts still feels weird tough.
Update – Jan 7th. – I kinda like WTP but still miss Netbeans for all those small things
Today is a day I miss Netbeans. I still could not get used to navigating between code windows and tests in Eclipse. I had to install a plugin to switch back and forth between test and class file and had to edit preferences for a keybinding to switch between code tabs. As I’m writing this update I’m still shocked that not only there’s no keyboard shortcut for cleaning console in Eclipse, but there is a related bug reported opened in 2004. Can you believe that?
On the other hand, I’m starting to appreciate the way of WTP. Take developing a web application with Apache. If you’re not a neat freak you surely would prefer using maven for your dependencies instead of managing sources, jars, and javadocs yourself. That is kinda not so friendly with Netbeans (which is a topic for another post)
Update – Jan 16th. – Project complete with Eclipse
I completed my first project in Eclipse. It included maven, tomcat and extensive testing. I believe I’ve given Eclipse a fair share of chance. I’ve got acquinted with most of the shortcuts. For maintenance until next release I’ve switch to Netbeans for adding new functionality and doing more tests and debugging. My direct reaction was “the font size is HUGE”. Anyhow, the table below contains my updates to both Netbeans and Eclipse sides.
Update – Feb 18th. – Rework the same project on Netbeans For Next Release and Fixes
Last month I’ve completed a full project in Eclipse which includes maven, tomcat. It did not have anything visual but rather lots of restful web services. For almost a month I’ve switch to Netbeans for next release & bugfixes. That means lots of more testing and compilation. I’ve got some mixed feelings on maven support. First of all it’s a breeze to see that maven build = netbeans build, like in ant build = netbeans build. The notion of synchronization of IDE with maven is not present in NetBeans. This is a huge plus. However it’s a torture to test by restarting tomcat everytime. Another plus was the test integration. I kinda liked the independent nature of testing in Eclipse but maven testing really sucked because I had to go back and forth the surefire reports outside the ide. Netbeans does a very decent thing. First of all it’s maven who runs the tests. When errors occur, the output contains a link to the surefire report of the failing test. You just click to see what went wrong. In Eclipse, the output of test goal is barely useful. Now it’s time to update the table below and move on to the next step. Which includes more maven comparison.
The second release of the project I’m working became a multi module maven project with multiple profiles and some locally provided dependencies. Netbeans experience was very comfortable with being able to easily manage dependencies, attach local source and/or javadoc jars. Multi profile support in Netbeans is great. Since maven is native to Netbeans, you just select the profile from appropriate run dialogboxes of context menus.
I though I’d miss the intelligent code completion in POM XML editor in Netbeans which provides version, groupId and artifactId but it turns out to be misleading sometimes. Esspecialy if you set and change repositories, the index could get out of sync. Of course you can update the index if you have the patience to wait but I think POM XML completion of dynamic content is not as sexy I though it was. (as in real life 🙂 )
Update – Feb 27th. – Spend some 10 days with Netbeans refactoring my code to maven multimodule projects.
Well for almost 9 days, I’ve been coding, testing, refactoring, testing and coding again. I’ve evaluated 2 major libraries (topic of another post) employing maven. First the little annoyances.
Netbeans misses the freshness of the classes while doing tests. Let me explain briefly. Consider you have a maven project. You’ve written a junit test for a class. You run the test (via “Test -File”) and get failures. You go back and make changes in your class and come back to the test again and hit “Test-File”. Normally, Netbeans runs the compile target for your project and executes the tests via maven for you. Well, what generally happens is no compilation and execution of the same compiled test again,resulting the exact outcome of your prior run. You get the same error messages for the lines that does not even exist in the class. In practice you have to “clean and build” in order to get it right. On the other hand Eclipse’e maven surefire test integration sucks so much that I didn’t mind until a point where it compilation started to take a minute or so.
Now the good parts. When you create a project in a directory where a pom resides, Netbeans automatically populates the parent and module information in both projects pom files. The “Libraries” node on the project tree directly display the inherited libraries and you are good to go. Since I did not use site generation I could not find much to do with the parent module project.
Up until now, I’ve been coding libraries. They are pretty heavy duty and accessible via REST API, direct jar import or scripting. There are however 3 more challenges I need to try before deciding.
1- Develop a GWT application backed with JavaEE6
2- Develop a Grails project
3- Develop a persistence and JSF intensive application backed with JavaEE6
Here’s the updated table
|Yeay Netbeans||Booo Netbeans|
|Yeay Eclipse||Booo Eclipse|