Java or .net - What makes sense today?
Its been a while since I have been thinking about it and finally I get to write about it. If I had to start any project today I would choose Java over .net because it just makes sense today. If I had to think an year back I would think native and then .net but never Java, over the past few years things have certainly changed a lot for Java. Though we still don't see a lot of mainstream Java applications on the desktop but its just a matter of time and about that one killer application that makes that difference. The only applications that I would even see on the desktop are azureus and eclipse beyond that I don't see any other application that is in Java. If I had to think of a Java application the biggest problem was getting the JRE on the system, today things have changed dramatically for Java. It comes preinstalled on a mac most Linux distros and most windows based machines from the top five computer vendors have Java preinstalled on the systems.
So the one of the biggest problems with Java seems to have been solved. You no longer have to worry about bundling JRE with your program. The write once run anywhere concept really seems to be working now. If I develop an application in Java today I can be sure that I would be able to cater to atleast 99% of all desktop platforms, and about atleast 90% of those computers would have some version of JRE preinstalled on the computer. If I stick with the 1.3 or maybe 1.4 API's I can be sure that it will run on most of these computers. Not everyone needs the latest API's released with 1.6 or even 1.5. As long as you stick with API's in 1.3 you can be sure that you application will work on most platforms without too much trouble.
The other reason why I really hated Java applications or for that matter GTK based applications is 'cause they never seem to look native. If an application does not look native it will just look out of place. Not every application needs to have its own skinning engine. Normally I like my applications to blend in with the OS. As a user I don't want to learn to use the latest buttons or tabs you've implemented with the ultra cool effects on the tabs or those buttons. All this was happening with SWING earlier it just looked out of place. Sun might have wonderful designers who implemented the metal or whatever the latest swing theme is called, but it just does not look native. It just looked out of place on every platform I used. So I could never ever be used to a Java application. If I as a programmer could not be satisfied with the look and feel of the application, I could not even think that a user of my application would like the look and feel of the application. I guess enough with the Swing bashing so whats changed now that I don't mind Java applications. The biggest change is that swing has really matured over the past few years. It looks and for a change feels native on Vista, Linux, XP, Mac etc. and that is one very big change. Today it is possible to develop a Java application which looks and feel like a mac application on a mac and a windows application on windows.
That is just one part of the story the biggest benefit of using Java is when you want to develop zero deployment applications which look and feel native on all possible platforms, Java + Swing have no other competition as of now. If you can wait for another 2-3 years then maybe WPF might be some competition but as of now no other platform can come close to the deployment of Java. Maybe Adobe Apollo/Flex/laszlo could be another thing to look out for as a competition for Java as a platform but then again the problem with these platforms is that none of them have the native look or feel. Before I forget there is also AJAX but even though I've spent a lot of time and effort on AJAX its useful in many places but for full blown applications I would rather use Java than try to develop it in JavaScript and thinking of ways to make the widgets in that web application look a little bit native.
On a side not this is my 100th post on this blog.
So the one of the biggest problems with Java seems to have been solved. You no longer have to worry about bundling JRE with your program. The write once run anywhere concept really seems to be working now. If I develop an application in Java today I can be sure that I would be able to cater to atleast 99% of all desktop platforms, and about atleast 90% of those computers would have some version of JRE preinstalled on the computer. If I stick with the 1.3 or maybe 1.4 API's I can be sure that it will run on most of these computers. Not everyone needs the latest API's released with 1.6 or even 1.5. As long as you stick with API's in 1.3 you can be sure that you application will work on most platforms without too much trouble.
The other reason why I really hated Java applications or for that matter GTK based applications is 'cause they never seem to look native. If an application does not look native it will just look out of place. Not every application needs to have its own skinning engine. Normally I like my applications to blend in with the OS. As a user I don't want to learn to use the latest buttons or tabs you've implemented with the ultra cool effects on the tabs or those buttons. All this was happening with SWING earlier it just looked out of place. Sun might have wonderful designers who implemented the metal or whatever the latest swing theme is called, but it just does not look native. It just looked out of place on every platform I used. So I could never ever be used to a Java application. If I as a programmer could not be satisfied with the look and feel of the application, I could not even think that a user of my application would like the look and feel of the application. I guess enough with the Swing bashing so whats changed now that I don't mind Java applications. The biggest change is that swing has really matured over the past few years. It looks and for a change feels native on Vista, Linux, XP, Mac etc. and that is one very big change. Today it is possible to develop a Java application which looks and feel like a mac application on a mac and a windows application on windows.
That is just one part of the story the biggest benefit of using Java is when you want to develop zero deployment applications which look and feel native on all possible platforms, Java + Swing have no other competition as of now. If you can wait for another 2-3 years then maybe WPF might be some competition but as of now no other platform can come close to the deployment of Java. Maybe Adobe Apollo/Flex/laszlo could be another thing to look out for as a competition for Java as a platform but then again the problem with these platforms is that none of them have the native look or feel. Before I forget there is also AJAX but even though I've spent a lot of time and effort on AJAX its useful in many places but for full blown applications I would rather use Java than try to develop it in JavaScript and thinking of ways to make the widgets in that web application look a little bit native.
On a side not this is my 100th post on this blog.
Comments