Posted on 04 March 2007
Folks, it was HOLI time in India, the festival of colors, and I was enjoying the aura around me. Anyway’s, continuing with the Java and .NET debate, I move ahead pondering over the next 10 reasons.
REASON 11: No Lizard Brain - .NET programmers continue to struggle with the complexities of a hybrid managed/unmanaged environment.
MY TAKE: Managed environment is what the framework is all about. In my opinion the availability to work with unmanaged code via the USING clause, is a boon for programmers who want to part-shift their applications (still using the COM components) to migrate some code to the new platform. For those who target the Windows platform audience via the desktop applications, .NET is the best choice. It offers the fastest way to build desktop applications with the best GUI ever. Writing own controls is also a breeze. For web applications also, ASP.NET offers some respite. Integrating much needed functionality is already available as drop-down controls.
For the lizard brain, I am not a medico, so can't really analyze its brain ;)
REASON 12: More Languages - The JVM is more "common" than the CLR.
MY TAKE: I am unable to comprehend the exact meaning of the author here. If he meant about the availability of JVM, then the CLR is built in almost all Windows operating systems today. If he meant about the JVM being targeted by different compilers, then I must tell, that as of now as I count, there are more than 25 language compilers that target the CLR including JAVA. If the author meant, about the JVM being available for many different hardware platforms, then I fully agree with him. The JVM is available for almost all hardware platforms today. But, with the coming up of Mono, I hope the gap would be bridged out. And if he meant about the built-in availability of the JVM, then he ought to be wrong. No operating system ships with a default JVM.
For a JAVA developer the JVM should be a preferable choice, as J# would not be a wise choice. But for someone, coming from a different language background, his target audience should play the role in selecting the VM.
REASON 13: Smaller Runtime Download - You can't run your app if you don't have the runtime.
MY TAKE: The runtime for the latest JVM amounts to 15.82 MB (me talking of Sun Microsystems one) and the .NET framework 2.0 is about 22.4 MB. Agreed the VM is smaller in size, but what about other downloads you need with Java. I mean the Java security policies, javax libraries and alike, one would always need to develop enterprise applications. In the .NET binary, everything is in-built. There are no dependent libraries. The real point of convention is that the download size for the Virtual Machine should not matter to a developer, for it is one-time expense. With Windows, you always have the .NET framework.
REASON 14: No Mandatory Upgrade Fees - 3 things a Microsoft shop can't avoid: Death, Taxes and License 6.
MY TAKE: Here again, it is difficult to judge the mood of the author. If he referred about the upgrades to the virtual machine, then I must inform him that the .NET framework and the CLR are both free as well. There are no licensing issues what so ever. MONO is an open-source project, so that again takes the point away. If the author meant about the compilers, then maybe a few years back, the point was justified. But since 2005, Microsoft has released the Express editions for all its products, they are totally free editions, completely powerful, and can be used to build enterprise grade editions. The IDE for them is definitely not that powerful, but for that reason may be they can use SharpDevelop. Mono Compilers are already available for C#. For all other languages the .NET compilers are already free.
REASON 15: More Vendor Choices - .Net is a marketing program. Java is a Market.
MY TAKE: Referring to reason 4, I would say even if the marketing program has been able to dent 25% market share in its favor, then its something that Microsoft should be praised off. Getting 25% off the market, where there was Java monopoly one time is a big thing. And Java you need to work a lot. As far as vendor choice is concerned, it can definitely not be compared. A client wants his app to work for him, the way he wants it. It is upto the developers to figure it out which platform to use.
MY TAKE: As I have the experience of working on both Java and .NET (for desktop app's before migrating to Java) I can not believe that. Both the frameworks have similar classes, both thread-safe and thread-unsafe versions, the runtimes are similar on same processors. If they happen to be designed by a First Year CompSci student, then Microsoft never drop this guy. He is a genius.
REASON 17: FutureProof - The way to ensure your return on investment (I.e. ROI) is that your choice of platform doesn't get obsolete in 5 or even 10 years. Avoid the Microsoft upgrade treadmill!
MY TAKE: Till Windows is there, .NET framework is there. As around 70% OS market is with Windows, that seems a very near-zero possibility of happening.
REASON 18: Larger Talent Pool - Majority of Universities not only teach but require knowledge of Java. That's a big talent pool that you need to consider before you off-shore your project to a different time-zone. :
MY TAKE: MIT (massachusetts institute of technology) shifted their website infrastructure to .NET recently dumping JAVA. The reasons that have been cited are the ease of use and maintenance. For talent pool, the jobs are equally paying (atleast in India) and the work is similar. Most universities don't require knowledge of Java, Infact they want students to be comfortable with C/C++ and OOP concepts, and both are foundation to the Java and .NET framework.
REASON 19: More Contributions From Researchers - Research institutions and universities have consistently provided innovative research not only built on top of Java but also contributing to Java.
MY TAKE: I agree that there have been really good and innovative libraries, but a counterpart exists for .NET and by them only. It itself indicates that even they can't deny the existence of .NET community. For Hibernate there is NHibernate, for Spring there is Spring.NET. For log4J there is log4net, for Ant there is NAnt. It itself is enough to indicate the growing presence of .NET fraternity.
REASON 20: US Government Approved - Guess where the billions of dollars spent on the U.S. government's IT renovation is going to?
MY TAKE: This is something I cannot find anything on. May be its the only one to which I have to agree.
The debate would seem to go on. There would be millions who would agree with me, and another bunch that might disagree. Its only TIME that has the power to test and pronounce its verdict. I as just another developer will keep continuing with my conquest, to explore both the worlds. As Lord Krishna said, "Karam karta chal, fal ki chinta mat kar" I would continue finding more and more for this debate, and keep logging. The heat is on.