Enterprise grade Java.
You'll read about Conferences, Java User Groups, Java, Integration, Reactive, Microservices and other technologies.

Thursday, March 31, 2011

Why NetBeans isn't an Enterprise Solution - for me.

10:07 Thursday, March 31, 2011 Posted by Unknown 10 comments:
, ,
We are all looking forward to the new NetBeans 7.0 release which should come out in a few weeks. And the more excitement grows the more people start asking questions about if it's suitable for enterprise development or not.
According to the Java EE Productivity Report (2011) NetBeans has an overall usage that is about 12%. By far the most users (65%) rely on Eclipse. But why is this so? NetBeans is fancy as hell and even in my personal past I was a happy NetBeans user for a long time. In this post I try to summarize my own experiences and feelings about using NetBeans heavily. Please note, that this is not an objective comparison. I am happy to read about your thoughts!

Enterprise Requirements
Development of enterprise class software has some special needs. They all arise from the fact that we are mostly talking about bigger development projects with a whole team of developers which have to complete their job within a more or less short time frame. This leads to a couple of things a truly enterprise IDE can assist you.

Rollout into large teams
First requirement category is derived from the needs to rollout the IDE to a larger team quickly. This includes the initial installation and configuration and a following distribution to the team. The individual member should not feel the need for anything else than to unzip the project distribution to a suitable location and start coding. This is very easily achieved with Eclipse. You simply download and unzip the recent build and configure the needed plugins before zipping everything up again and distribute it to your team. There are even some very decent central packaging and distribution solutions available which make it very easy to standardize on enterprise level (compare Yoxos from Innopract). If you are more interested in any pre-packaged solutions you could even thing about using MyEclipse or comparable offerings.
NetBeans doesn't have this kind of valuable ecosystem. The most complete way of installing NetBeans is offered by the OS dependent installers. The OS-independent set is feature limited (but only 23MB smaller than the installer for windows). I don't know about any management solutions comparable to Yoxos or even other bundles. So you simply have to take what is offered in terms of technology packages.
In addition it's most important to have a separation of configuration. You need to be able to differentiate IDE and project specific settings. The "workspace" approach used by Eclipse is a very convenient way for that. You simply have to put the complete workspace under version control and every developer has a consistent development environment to start over with.
Project and IDE settings with NetBeans are very distributed between the project and the installation folder. If you are willing to keep a consistent project setting for a whole team you are probably forced to send updates around via email.
Don't get me wrong. You can actually rollout NetBeans to larger teams. But if you try to do this with a complete environment (Server, Build-Tools, etc) you quickly run into trouble if anybody is not using the same installation folder or want's to change some locations afterwards. This is not necessarily a problem with NetBeans itself but possibly a trade off in favor of the tight integration with the supported servers and build-tools.

Fast development
Beside this, key to every IDE is it's ability to let developers code fast. There are a couple of places you experience this. The most obvious ones are the available templates and shortcuts. Both IDEs are strong here. You could even partly configure the NetBeans shortcuts to work like Eclipse shortcuts. But what's very different is the code completion. You don't realize this if your are only doing small examples. If you ever tried to use NetBeans with a large and probably not too well designed project with too big classes and many files you quickly find yourself having to pause up to 2 sec. after typing a single character. Code-completion is slow. Another issue I have with NetBeans are the project scans happening. They take too long and appear too often. The larger your projects grow, the more problems they make.
Next big point is the server integration. That is nicely done with NetBeans. Especially the GlassFish and Tomcat integration. Smoothly. And hot-deployment works .... as long as you stick to the generated ANT scripts. Switch over to maven and your out. Same is true for Eclipse for sure. But then non of the IDEs really makes a difference here. But there are solutions upcoming. The Oracle Enterprise Pack for Eclipse already can take full advantage of the Fast Swap feature for WebLogic deployments. I bet, this is going to swap over to GlassFish soon.
Let's look at the maven integration. It's natively build into NetBeans. And it simply executes maven on behalf of the IDE. You have a nice repository view and some ways to create and modify mavenized projects. You can add dependencies and have a couple of ways to run the goals with the profiles you need. What about a simple and helpful editor for pom.xml files? what about visualizing dependency hierarchies? There are a couple of other things that m2eclipse does far better for me personally than the NetBeans integration.

Quality insurance
One of the most important things in enterprise projects are the available tools for quality checks and insurance. FindBugs, Checkstyle, you name them. For any of the tools you can find an .... Eclipse plugin :). Some have NetBeans support but most not done by the tool developers itself but by third parties. This leads to outdated integrations or force you to use complete packages (like PMD) even if you only need parts out of it. Subjective it feels like the PMD integration with NetBeans is many times slower than any of the Eclipse plugins I know.
If you look at Code-Coverage: A cobertura plugin was available in prior NetBeans versions. It does not seem to be there with 7.0. The only way to have any information about code-coverage is to use the cobertura plugin. What about Emma? Nothing. And there are some more examples. TestNG integration for example. Because of tight integration of JUnit testing framework in NetBeans most IDE-wide tests related actions do not work for TestNG tests. Even if there is a plugin you can install manually (don't expect this to be an official plugin).

Extensibility
Let's look at team collaboration solutions. Codebeamer? Rational Team Concert? Any other commercial solution? NetBeans supports Bugzilla and JIRA. You probably will find Eclipse integrations. In general the plugin experience with NetBeans simply is worse. If you use the pre-configured three Update-Centers you get a total of 30 Plugin proposals. If you look at the plugin central you can find additional 600. Many of them seem to be outdated (e.g. JAD integration). The presentation is worse. Hardly any documentation. Some broken links. No images. A website I am not willing to use. In general NetBeans only has 1/3 of the number of Plugins which are available for Eclipse via the Eclipse Marketplace (which has 1,064 "solutions").

Stability
This is quite a bit unfair because this mostly relates to latest NB 7.0 Betas and RC. But I have the subjective feeling, that NetBeans is unstable. I've had lot's of exceptions and unresponsivenesses during development that I was not able to track down. If you take a Java EE 6 development project you quickly start over NetBeans a couple of times during the day because of that.

Bottom line
Thanks NetBeans. It was a great time playing with you. And I guess, we could get used to each other again for doing teaching, showcases, wizard driven developments. But if I have to do an enterprise level project with many developers and a tight timeline I will chose Eclipse.
What are your experiences? And please don't talk about your experiences with your 20 classes projects.

10 comments:

  1. Hi Markus,

    David here from NetBeans EE team. There are few inaccuracies in your article which I would like to comment on and which may help you gain more productivity from NetBeans.

    Re. "Rollout into large teams" - I agree that NetBeans does not provide everything what you can achieve with products like Yoxos but what is available now is comparable with Eclipse if not better. You can download ZIP installation of NetBeans, you can drop any additional NB modules directly into directory structure and pre-configure the IDE with whatever modules are desirable and ZIP it and pass it to your team. NetBeans does differentiate project and IDE settings very similar way that Eclipse does - everything what's project related is always stored along your project sources in nbproject subfolder. And Eclipse's workspace is what NetBeans userdir is for. As for the placing workspace/userdir into versioning control system - that seems to me like a questionable practice as both NetBeans/Eclipse stores there tones of additional IDE private stuff. The NetBeans approach is that everything project related should be stored along the project so that project created by the NetBeans is ready for headless build on a continual server as well as can be shared with other team members via versioning system. In this respect I believe NetBeans is doing much better job than Eclipse as you have very good control over how your external project references will look like. I'm not using Eclipse often to really compare it with NetBeans but I remember that Eclipse .classpath files often contained absolute paths and other settings which made it impossible to share such projects with other users.

    Re. "Fast development" - we are well aware of code completion issues and scanning and trying to address it. We develop NetBeans in NetBeans so we do experience these problems ourselves because of size of the NetBeans source repository. As for the other things in this paragraph, I'm pretty sure that hot-deployment works in NetBeans for Maven projects as well thanks to our superior integration of Maven. If you have a testcase where it does not work I would appreciate if you could file a bug or let us/me know about it so that we can fix it. Perhaps we do not have GUI editor for pom.xml but there are other ways how to edit your pom.xml if rich code completion is not enough - for example you can search for Maven artifact in the IDE and once you located the arfifact you can right click it and add it to a project as a project dependency etc. We've been slightly behind with Weblogic server support prior to Oracle acquisition but in NB 7.0 this support is getting close to being on par with GlassFish support, FastSwap being one of the exceptions due to technical difficulties we had - it will be resolved in next NB release. And visualizing Maven dependencies? sure, just right click Maven project and open Dependency Graph.

    Re. "Stability" - any exception you get in NB during dev/beta cycle can be reported to us via single click on "Report Exception". Doing that not only help us to improve the IDE but will inform you whether it is a known problem which has already been fixed or if it is a new problem you will be notified after it was resolved.

    Thanks for your feedback. It is always good to hear a customer voice. If I can be of any help please do not hesitate to contact me.
    -David

    ReplyDelete
  2. Hi Markus,

    I had exactly the same feeling during the last year working with NetBeans. I'm back to Eclipse as well now.

    I still use NetBeans in my Java EE 6 courses at the University. There it fits very well.

    Greetings from Switzerland
    Simon

    ReplyDelete
  3. Well. My experience is quite different.
    In my company we have a project going on for about 10 years. It is written in Java. I have used NetBeans on Linux the whole time. I've also tried Eclipse (3.6) and IDEA (10) and they both choke on that project.
    Granted, Eclipse has a lot more plugins, but you have to realize that many developers also have huge problems with them.

    ReplyDelete
  4. wow, i cant agree on most of your complains

    i experienced the exact opposite in most of your issue-based complains, especially when it comes to code-completion and stability. i mostly made my shift to neatbeans because i grew tired of the ongoing stability- and other issues in eclipse which doesnt exist in neatbeans.

    and code-completion is blazing fast compared to eclipse, whether i have 10 open projects or 1..

    ReplyDelete
  5. Funny. We change from Eclipse to Netbeans exactly for that reason: is a mess to work in a team with Eclipse. The Maven integration is a most in Netbeans and in team work. Eclipse has a lot of problems working in different OSs 32/64, etc. And yes, Eclipse is fast, but you have to spend so many time configuring it... Is not productive when you have new guys/machines all the time. And for the plugins usually you get more problems (bugs, exceptions, etc) then the ones is supposed to solve.
    I know that Eclipse is better in a lot of aspects, but not in enterprise work for sure.

    ReplyDelete
  6. Thanks for all your comments! Seems to me that the developer community is quite split on this and the evaluation of one or the other IDE highly depends on the personal experiences from the past. I'm totally open to any sentiment and love to see so much feedback!
    Looking forward to many more comments!

    ReplyDelete
  7. Hi,
    I am a Netbeans, Eclipse and Visual Studio User. I want to agree that netbeans is somehow unstable - and that is a very sad thing. I programmed some beautiful java algorithm and suddenly, Netbeans stopped working and closed (Linux 64 Bit).
    But sometimes, Eclipse also interrupts - not as often as netbeans - but it happens. Is it my fault?

    As linux fan, I am sad about saying that Microsoft has done a real good job with visual studio 2010 (I use it for c#).

    The solution: fire off the "vi" command and start developing ;)

    ReplyDelete
  8. I use Eclipse and NetBeans. I recently moved to NetBeans for Scala development (and I will try out the new Scala IDE 2.9 for Eclipse plugin).

    Both have their advantages, for now I prefer NetBeans to Eclipse because of the ease of integration with Maven.

    I do hope NetBeans Scala plugin keeps pace with Eclipse / IntelliJ. I like Eclipse as well and am not averse to migrating back.

    Healthly competition between IDEs is always good.

    ReplyDelete
  9. Plugins is what makes Eclipse better. I also got a feeling that Eclipse is better for bigger projects (I was using Netbeans6 or 5).

    Netbeans did some things better (key-binding support for Eclipse users is a great example, templates, etc.)

    I for some reason got the feeling that Netbeans is a lot like IE. No offence, but its always slow(many not used powers?) and it feels like it was hacked and not re-written in many areas. its just a feeling I got. Many good plugins were killed (where are the great UML diagrams? killed!).

    I think netbeans should focus more on speed and cut down the not used features (or make them optional).

    ReplyDelete
  10. AS a long-time Java EE Developer, after suffering a long series of nightmares because of the bugs of Netbeans and the overall instability, I had to switch to Eclipse.

    What I suffered most from Netbeans was the projects I created with it which use ORM such as Hibernate and Eclipse, did not run on another machine with exactly the same environment (db, app server, IDE) without a hundred modifications and clean & builds - especially projects with datasources. In many cases "Resolve missing data-source" just does not work - although the data-source is simply there or re-created.

    ReplyDelete