A lot of developers I know, in my organization as well as outside, are fanatic lovers of their favourite IDE. Just like programming language fanatics, IDE fanatics maintain that their IDE is all what they need. But in my experience, IDEs like programming languages are only as good as the developer. In my previous blog entry here, I noted that Visual Studio 2008 and netBeans 6.0 are completely different IDEs and cater to different developers. But we need to understand that each IDE has something better and makes the developer more productive. Also, please keep in mind that I'm not comparing .NET and Java here, but only 2 IDEs, so we discuss features that can be applied to both languages/platforms. Learning things from the "other" person's IDE will finally make "us" more productive. With that philosophy in mind, lets look into the comparison of 2 IDEs that will be released in 2-3 months time.
Visual Studio 2008
J# support has been removed from Visual Studio. So all, Java-like developers can come back home to Java. netBeans 6.0 supports a lot more languages and has an excellent plugin system to support many other languages.
LINQ is new to VS2008 where you can write SQL-like queries in the programs to communicate with databases and files. XAML gets a superb visual designer in VS2008.
|Supported OS/Platforms||Windows and different versions of Windows||Windows, Linux, Unix, Solaris (SPARC, x86/x64), Mac OSX (Intel, PowerPC)||netBeans 6.0 can be installed and run on a host of different platforms. It's open-source and it's Java. So, it generally means it can run anywhere with a VM. VS2008 on the other hand is only targetted towards the windows developer.|
|Code Completion||Fast code completion, but less options at a time. Need to use arrow keys.||Code completion, but shows all methods, variables available at once.|
Both netBeans and VS2008 have excellent code completion. Visual Studio still is a little faster in showing method names, parameters but shows only one method at a time and you have to use arrows to check different method parameters. netBeans 6 on the other hand has improved from earlier version in speed, but still lacks the speed of VS. netBeans can show all the methods with different parameters at a time, so the developer can choose faster which overridded method to use.
Eclipse does something even better with Ctrl+Shift+R. It will show all types/resource available. Which means if u write NPE, it'll show NullPointerException and NoPermissionException and you can choose. Even refactoring in eclipse is great.
|Source Code Editor||Editing is simple and easy. Switching between the designer and code screen is double-clicking the control||Editing code is simple and easy. netBeans provides different events when you right-click on the component and code can be written for that specific event.|
Source code editing is equally good in both. netBeans 6.0 has a better feature where it can highlight a variable that used at different places. So you can easily identify the lines at which the variables are used when you are writing code.
|GUI and RAD Tools||WinForms, ASP Form designer are great. XAML visual designer, Database schema managers, VB-XML bindings, Vista UAC manager are some of the enhancements to the VS2008's RAD/GUI tools.||netBeans Matisse, JSF Components, Database Application, Beans Binding, Excellent UML design tools, Mobile Designer, BPEL designer are some RAD tools not found in VS2008|
Visual Studio's VB designer was excellent and probably helped VB reach great popularity. Today Microsoft expects same with XAML designer which can import designs made in Microsoft Blend. Winforms and ASP forms are great as always, may be sometimes better than netBeans. You can create the Ribbon UI of Office 2007 very easily using VS2008.
netBeans until version 4 not much of a RAD tool, but today is probably the best RAD Java IDE out-of-the-box. JSF web app designer is great, maybe not be better than ASP forms, but its not behind as more JSF components are added. Swing Application Framework and Database applications are awesome and you can build amazing dB driven apps in minutes. Check out the video and you'll realize how?? netBeans 6.0 features an even better Mobile Application Designer for JavaME (J2ME), which can design screens and play with SVG menus. Haven't seen a simpler mobile app designer ever, with nice flow designer. RAD tools are something netBeans 6.0 scores higher than most other IDE
Multicore compilation in VS2008 does improve performance by a good 25-30% over previous versions on C# apps. I wonder how much of multi-processors or multicore, the java compiler uses. Really couldn't compare compiler benchmarks since they are different languages.
|Profiling||VS2008 improves load testing capabilities by providing a multiple machine graph view that brings together the test results, performance, and health of all the machines under test.||netBeans 6.0 has a profiler integrated and a really good one too.|
A new area in VS2008 is the ability to drive system performance tuning
Profiler is great addition to netBeans. While coding you can experiment and choose the best algorithms/implementations by checking memory, processes through the profiler. A load analyzer like Mercury's LoadRunner is a highly specialized 3rd-party tool, but people who want simple stuff should really be happy with the netBeans 6 profiler.
|Designing / UML||Not much Designing tools, but Visual Studio 2008 Team System does have some improvements. Team System does have nice code tracking features.||UML, BPEL, Flow Designers for Mobile apps and web apps.|
netBeans scores pretty high on this one. Although you can always use 3rd-party softwares, its great to have it in the IDE itself. VS2008 is not much of a software designers tool, although the Visual Studio Team System is a great improvement. IBM's Rational is great, but then for the lesser there's netBeans UML tools.
Code comparison and tracking isnt available in netBeans. Eclipse does have it and is excellent for comparing codes, but not as good as VS2008.
|Testing/Maintainance||Unit Testing tools have slightly improved, Source Control System is added to Team System||CVS is integrated.|
Unit Testing is excellent in netBeans compared to VS2008. Ant tools are useful, but VS2008 creates scripts in Team System that can do nearly similar things.
CVS is better in netBeans and even better in eclipse compared to VS2008.
|Installation Size||Visual Studio installation size is huge and so is the size for the setup program||netBeans 6.0 has increased in size, but is very small compared to VS2008||Not much here to say, but VS2008 has .Net Framework 3.5 integrated with it and is a requirement. Also SilverLight CLR is added. A lot of other required libraries for WPF and WCF, which makes it larger in size.|
|Misc Specialities|| |
Visual Studio 2008 has a something called "Visual Studio 2008 Shell". Its just like the netBeans RCP or Eclipse platform. It allows developers to create their own IDEs based on the platform and we know how successful eclipse has been to do that. Read here for the discussion
netBeans 6.0 also have Ruby on Rails Template for making quick blogs. netBeans 6.0 has derby as an integrated database (although JDK 6 has derby). It means you can have databases embedded within your application and no requirement for an external database server like SQL Server or MySQL.
VS 2008 does not include specific tools for editing WCF's XML configuration files. After Microsoft Blend import, web designs cannot be exported back to Blend.