Choice is Good!
By Roman Strobl on IX 30, 2006
I would like to blog today about the difference of two worlds: Java and .NET. Let's start with .NET.
In the .NET world you have one main provider of technology - Microsoft. This brings some advantages - less choices means less confusion, and also it means possibility of better alignment of all available technologies. However everything you get from Microsoft is closed source, so there's no real possibility of creating of open communities which exist in the java world. Sure, there are developer communities around Microsoft's technologies and Microsoft spends lots of $$$ to make sure they exist. The thing which is really missing in the .NET world is choice - there is one platform you have to use and although you can choose providers of different components, for the basic platform you have no choice and you have one major tool everyone is using - Visual Studio. If you don't like it or it doesn't work for you, you're basicly screwed.
Now let's look at the java world. It's all about choice. You can choose a company from which you'll download the JDK, you can choose GUI toolkit. You can choose web frameworks, there are many IDE's, you can choose application servers. You can choose operating system this all will run on top of. You can choose which community you'll join. You can participate, you can influence the future of many opensource projects, contribute code, etc. You can choose services from many companies which exist in the Java ecosystem.
I claim that choice is good and you realize that especially if your vendor does things you don't like. Not everything in world is black or white, and choice has it's drawbacks, too. The first one is that you have to make the choice - you need to think about which technology is better for you, consider it's future development, etc. If you make choices, some things might not work together - because you make the choice, you are also limiting yourself to specific products or libraries (e.g. when choosing an IDE or a GUI toolkit).
I personally am really happy to make such choices, because they provide a lot of freedom. If you want less freedom and you just want things to work together, you can choose one vendor (e.g. Sun, IBM, Oracle) and if you stick to supported technologies you'll end up with a nice solution. But the difference with the .NET world is that in .NET world you don't have the possibility to go away if things go wrong. In the Java world, you have many choices.
One of the things you need to think of when choosing an application server, an IDE, a library, operating system, etc. is how easy or hard it will be for you to go away. Technologies evolve and sometimes you can make a bad choice, using a technology which moves in the direction you don't like or doesn't move much forward. Companies use IT as a competitive weapon and if you can't move on from your old technology, you might loose that advantage (e.g. when you use an application server which is very slow in supporting new standards).
Finally, there's the "Java IDE war" as some people call it. NetBeans competes with Eclipse and these two camps sometimes go over the border with their fights. Is that a good thing or a bad thing? As a developer, you should be really happy. Look how long it took Microsoft to provide refactoring features? They've been available in the Java world for a very long time. The product I work on - NetBeans - was relative late to support them, but you could choose any other IDE at that time. In the .NET world you had no real choice.
The competition in the Java world is creating a lot of innovation. Look at NetBeans' feature like Matisse, for sure it would take longer to create such gems, if there was no competition. Swing today is a great GUI toolkit - compare it with the older versions. Look at what Romain Guy can do with Swing today. Would Swing be the same if there was no push from SWT? I don't think so. Would NetBeans be so good if there was no Eclipse? I don't think so.
Choice and competition pushes every vendor in the Java world to do the best they can. Sometimes the conflicts between the IDE camps make it look like the java space is fragmented, but if you watch the developers, no matter if they develop NetBeans or Eclipse, at the end they can meet in a pub and discuss their projects with a glass of beer. They don't hate each other or something like that, we are all just members of the java community and it's a lot of fun. Sure, not everything works together and it would be nice if it would (especially the IDE plug-ins) - but the most important thing is that you can make a choice. I think we sometimes forget about this freedom, because it's given to us, so we don't realize it doesn't have to be like that.
Technologies evolve, products evolve. Will NetBeans be around in next 5 years? You bet! Will Eclipse be around in next five years? You bet! Will [my favorite closed source IDE] be around in next five years? I don't know... Opensource creates products that last really long and I'm happy to work on an opensource IDE. The community won't go away, but users of a closed source product can (and in fact, we see that happening).
You can definitely expect me to be sharp, using every opportunity to promote the NetBeans project and explaining why it's better than the other IDE's. The same for the NetBeans platform. At the end it's all about choice - it's up to you if NetBeans or Eclipse or anything else is the best tool to get your job done. And we'll make sure to increase the probability that you'll like NetBeans - we're working hard to make it the best IDE out there. Again, as a developer, you really really should be happy, because we make your life easier. And even if you don't like NetBeans, we still make your life easier, because once we create great innovative features our competition will work on them, too, to have a better product than we have.
One day we'll all look back and think... well this opensource IDE war was really funny. But we'll also see how much innovation happened and how it made our lifes better. Gee, I remember 5 years ago developing in Java - if I had the tools I have today, my life would be so much easier. So, let's be happy about the choice we have and about the (mostly friendly) competition. And let's kick some .NET ass\*s. Thank you for reading so far.