Skip to content.

Manageability

Sections
Personal tools
You are here: Home » blog » archive » 100 Reasons Why Java is Better than .NET

100 Reasons Why Java is Better than .NET

20030129075128

 

Finally, looks like we have arrived! The 100th entry:

96. Ant
Ant started life as the build tool to replace Make. It is now used for tasks other than its original purpose, its used for running automated tests, building documentation, creating installations, configuration, execution of programs and more[http://ant.apache.org/manual/tasksoverview.html]. It also serves as the core of many continuous integration frameworks.
However, isn't there a clone called NAnt for .NET? No, claiming that NAnt is a clone ignores that hundreds of extensions that have already been written for Ant. A look at NAnt task list shows 32 tasks. In contrast there are 72 core ant tasks, 52 optional tasks [http://nant.sourceforge.net/help/tasks/index.html], there are also http://ant.apache.org/external.html 38 tasks built by other parties.
What this means as a developer is that its much easier to find an Ant ant task to fit your special situation and this means you don't have to code it yourself. Of course that means more time for the important tasks at hand, and therefore better productivity.
97. JUnit
JUnit is a unit testing framework that serves as one of the cornerstones of agile and test-driven development.
The rebuttal again by the .NET community is going to be the same, isn't NUnit available? Again, the answer is No. That's again because the number of extensions [http://www.junit.org/news/extension/index.htm] for JUnit dwarfs what's available for NUnit. The multiple extensions available for JUnit cover the different complexities in which software is deployed. For example there are extensions for GUI development, Web development, App server development, XML development, Small Device development. Furthermore, there are extension on different ways to perform testing like Mock Objects, Integration Testing and Load Testing, NAnt in contrast only gives you basic JUnit. In summary, if you want to use JUnit in anger, that is testing vigorously and comprehensively, then the tool of choice is obviously JUnit and its extensions.
98. Refactoring
Refactoring, another cornerstone of agile development. For the .NET audience who don't understand what this means, get a primer at http://www.refactoring.com/ . Anyway, the refactoring support that's available for Java is heads and shoulders above anything available to the .NET community. Some may argue that .NET has refactoring support, coming from some small company, well my retort is this, "have you ever tried it?"
What should one look for when evaluating a refactoring tool. For starters, it helps that it has a comprehensive list of refactorings, second it helps to know that the refactorings are not constrained, third how robust (i.e. correct) are the refactorings , and finally how easily can you revert from changes. Take a look now at IntelliJ or Eclipse evaluate them with the criteria above, now go take a look at what's available in .NET. Come back when you've discovered the truth.
99. Better CVS Support
CVS, for the .NET audience that means Concurrent Versions System, not the pharmacy! Anyway, CVS is used throughout the open source world to version control software artifacts, CVS repositories are readily available on the public internet. I'm not going to debate if CVS is better than X, however I'm going to say that it's affordable and allows for world wide collaboration.
Ant supports CVS, unlike NAnt, furthermore the Eclipse IDE is arguably the best client ever designed for working with CVS.
100. Eclipse Momentum
Eclipse, the open source IDE framework. Yes, it is the 100th entry. Why? I can go on trying to convince you that its the best thing invented since sliced bread, but I don't think I could convince you.
However, what's is strikingly clear and obvious is the momentum that it has generated. C# people keep claiming that C# has "momentum", however if you want to see real "momentum" (actually velocity, more on this later) you have to see what's happening at the grass roots level for the Eclipse community. To get a good graphic picture of what's happening, go to sourceforge and search for "Eclipse". You'll find over 50 active projects building Eclipse plugins, there are even more not listed at sourceforge, you can find them here [http://eclipse-plugins.2y.net/eclipse/index.jsp]. No do the same for VS.NET, scower the web using the word "Addin" (that's the VS.NET equivalent term), find anything? I guess not much right?
Consider then this, Eclipse 2.0 was released in June last year, when was VS.NET 1.0 released? People argue that this list isn't fair because Java is older and therefore would have more support. Now, you have the argument the otherway, VS.NET 1.0 is older than Eclipse 2.0, so shouldn't that mean it should have more support?

The .NET proponents have continued to argue about philosophical and theoretical reasons. This list deals with reality, it deals with the options that are available to you when you start any project. What are the tools that I need to complete the task, maybe I don't need realtime support, maybe I do. Whether the reason is relevant to you or not, you decide, however its definitely relevant to someone else in the audience.

There's also this talk about "momentum". If you did take some basic physics, you now that momentum is mass times velocity. So, seeing how fast things move isn't the whole equation, you've got to look at the mass. That's my point, the Java community is massive, it may seem not that fast, that's because you can't reinvent the wheel in java and be perceived as making progress. With .NET every reinvention, the libraries, open source tools, are all perceived as "progress".

If you want to see movement in Java you have to look at the bleeding edge, that's where the action is, unfortunately the bleading edge isn't familiar to most, so they don't recognize it when they see it. That's pretty sad, as sad as a freight train approaching a man standing in its way, not knowing what's about to happen.

If you're wondering, where is the 101st entry? Well that'll be the icing on the cake when the list has been edited and reviewed. Here's a hint "tail recursion".

Created by admin
Last modified 2003-08-17 06:02 AM
 

Powered by Plone

This site conforms to the following standards: