Friday, March 6, 2009

Choosing Sides While Being Objective About It

The other day I was faced with a question I had to answer in an essay format. This meant I had to be objective about the answer, and then give my opinion before the conclusion. I'm always objective when it comes to comparing Java and .NET. At least I thought I was, until I wrote it down on and read it to myself. This is my objective opinion.


What is better, Java or .NET?
Comparing the best between Java and .NET is like comparing Pizza Hut and Dominoes. Only you can answer that question yourself. Let me give you some insights on what to consider when answering that question.

DESKTOP WINDOWS APPLICATIONS
What's the best technology to use with Microsoft Windows? As long as .NET is corporately managed by Microsoft, it would only make sense that .NET works great with Windows. If you look at Java applications on Windows, you can probably feel the difference (even if it may be tiny) between, for example, buttons, or application menu's.

WEB APPLICATIONS
In the world of web applications, the race between the best is neck and neck. What may be the best today may not be tomorrow. That's all I got to say about Web Application Technology.

DEVELOPMENT
How much effort does it take to build on Java or .NET? Personally I like the features that Microsoft Visual Studio has. Especially the "Visual" part. Making an interface is really easy when all you have to do is click and drag, pull on corners, select properties, and then maybe refine them in cold hard coding. In the Java community, you can find all sort of Integrated Development Environment (IDE), like Eclipse and IDEA. You can also use Web interface developing environments like Macromedia DreamWeaver.

THEIR Corporate Strategies
Microsoft and SUN have different approaches as to developing their programming language, frameworks and technologies. Microsoft's main strategy (in my opinion) is selling their operating system (OS) Microsoft Windows. They encourage people to develop using .NET so customers will keep using Windows. SUN on the other hand, is a hardware company. They support the development of Java so that they can sell all kinds of hardware. Since Java's concept of Build-Once-Run-Anywhere can come in handy for all software companies, SUN hired another company to build an OS on top of their hardware using Java, which in turn should make people want to buy usable hardware.

COMMUNITIES
While Microsoft stayed closed off by keeping .NET to themselves, Java users all over the world can to contribute to Java's maturity. The developers at the .NET team develop that platform THEIR way. They say "If you want to use .NET, THIS is how it's supposed to be used". .NET then grows in someone else's back yard and you can only hope that they're generous enough to send you a basket of fruits... In the mean time, the Java community is wide open to single developers as well as enterprises. This community is saying "Yo, Java would be much better if it can do THIS". The technology tree grows as the whole community can pitch in to fertilize the tree, making it strong.

YOUR Strategy
This is where you answer your own question. By now you might be able to guess what I think is best, FOR ME. My target is to SELL software that I develop. .NET helps make this easier because of how fast I can get things done. .NET has many languages which makes this flexible. I can use Visual Basic to build a cash machine app in a week. If I need to tweak it and make it run faster I can use C++ to refine components. I can use C# as an in-between language to keep my productivity high and my application powerful. This is what I call "many languages, one platform". With Java I can build things that will run on all kinds of machines. This would be "one language, many platforms". If your consideration is the Build-Once-Run-Anywhere strategy, you must know that there are platforms which support .NET application. These platforms are mostly built on the C language to compete against Java's strategy. Why can't there be a "many languages, many platforms" platform? It would make decision making much easier. It might even bring world peace.

Another thing you might want to consider is the fact that the desktop application interface that Java produces is not the same as what .NET can produce. Things may seem a little bit off. Buttons look or react differently. Sliders behave differently. You may think that software is software and you can easily adjust to the differences. Well, your users might be very Low-Tech. They use Microsoft Word, and Microsoft Excel. If you make your application totally different than how Microsoft made theirs. They are going to find it hard to enjoy your application. Lots of companies have lost potential because of this failure to admit to Microsoft's grip on the world.

My advice is that you break down your question to "What is best FOR ME?" my answer is, if you just love to code, and you love playing with technology use Java. It is growing transparently. Technology wise, they are both great. Microsoft constantly races to have the better technology, sometimes they're ahead, and sometimes they're behind. But with Java, you can see where things are going. You might be able to contribute and who knows, you might be able to guide that path. There are thousands maybe even millions of articles about which one is better. It's a religious war. My advice, if you just love coding and playing with technology, explore both. Be careful when you get money involved. Corporate strategies based on the technology you choose are dangerous. You can either gain or lose a lot of money.

No comments: