In this reader Q&A, Justin James talks about the future of Java, the cost to develop in Java compared to .NET, and whether Java will displace .NET.
A TechRepublic member sent me four good questions about the future of Java and the cost to develop in it compared to .NET. Below I highlight each question and offer my thoughts on these subjects.
How will Java SE 7 will fare against the .NET CLR?
Looking at the Java SE 7 feature list, it looks like a good advancement for the system. Is it a game changer? I don't think so. The JVM and the .NET CLR have been through a ton of changes in the last few years; both have enabled developers to do a lot of things that used to only be the realm of very advanced programmers. While the JVM and the .NET CLR do not always implement the same ideas at the same time, the best ideas in one end up in the other fairly rapidly -- we're seeing this even beyond the runtime level. Hibernate is a huge hit for Java, so .NET got NHibernate. .NET's closures have made a lot of developers, and it looks like Java will get them too (yes, that's a language feature, not a runtime feature).
Will one runtime beat the other in the foreseeable future?
While the JVM and the .NET CLR are similar beasts at a technical definition level, both have their own markets, neither of which is very agile. It's not like someone who has built their infrastructure around .NET servers and IIS can wake up tomorrow and move everything to Java or vice versa. Even if a company did decide to move its development from one platform or the other, it would require replacing the entire development team (or retraining them from the ground up). Even then, there would be severe skills shortages; after all, a senior .NET developer cannot suddenly become a senior Java developer after three months of training. In addition, they would need to keep the current staff around to maintain the existing code base. And do you really think that the staff is going to sit by and watch as their jobs are either about to go away, or their skill set is about to become useless (or less valuable)? Of course not. Making a wholesale switch from Java to .NET (or .NET to Java) would be suicide for an organization. At best, there could be a multi-year project to retrain folks. You still have shops moving from VB6 to .NET, and it has been about eight years since .NET was released.
Is Java development cheaper than .NET development, and, if so, will people move to Java to save money?
If you look just at the tools, my answer is "yes and no." Yes, you can run Java on a fully open source stack if you want. You can take the Linux/Tomcat/MySQL/Java stack, or the SpringSource stack in the server room, and use Eclipse or NetBeans on the developer's machines. But let's say that, for whatever reason, you are not a fan of the open source alternatives (I am not saying the alternatives are not good); in that case, the Java tools are very price comparable to the .NET stuff and, in many cases, more expensive. And judging from the business that companies, including Oracle (through its acquisition of BEA) and IBM (the Rational toolset), are doing, it is clear that many companies see a need to pay for proprietary Java tools. As far as pricing goes, Microsoft is almost always the least expensive enterprise class vendor in any given marketplace.
Plus, you have to look at how much money companies would save compared to the cost of the switch. A copy of Visual Studio costs less than a week's salary and benefits for a mid-range developer. It will certainly take much, much more than a week for the same developer to learn Java and become as good with it as he was in .NET.
For the sake of fairness, this analysis goes the other way too. The cost of the tools is inconsequential in comparison to the pain of a switch. There are two exceptions to this scenario. The first exception is in the case of a new company (or someone choosing between one or the other), and there is no cost of switching. In that scenario, Java still isn't any cheaper, since Microsoft gives away free copies of Visual Studio (the Express editions), and if you are a new company, the BizSpark program is a way of getting three years of MSDN and Microsoft licenses for free -- that's not too shabby. The other exception is for a company that has a really high server-to-developer ratio (think Google or Yahoo!). This type of company might have a handful of developers working on an application that runs on thousands of servers. In that situation, the developer tools are not where the savings occur -- the server room is. For a company in that situation, Java (and other open source technologies) can have a decisive cost benefit.
How many scripting languages would a Java developer need to know to be as effective as they would be in .NET?
The JVM has seen an explosion of non-Java languages in the last few years, and developers can now choose from a ton of options. Learning one of these options will certainly make you a better developer (even if you do not use them for an actual production project) and give you another arrow in your quiver for tackling tough projects.
Will Java displace .NET? Not any time soon. And .NET is not getting rid of Java either. Both ecosystems have advantages and disadvantages. I believe that which one you end up using will depend mostly on personal preference and local career opportunities.
J.JaDisclosure of Justin's industry affiliations: Justin James has a contract with Spiceworks to write product buying guides; he has a contract with OpenAmplify, which is owned by Hapax, to write a series of blogs, tutorials, and articles; and he has a contract with OutSystems to write articles, sample code, etc.
---------------------------------------------------------------------------------------Get weekly development tips in your inbox Keep your developer skills sharp by signing up for TechRepublic's free Web Developer newsletter, delivered each Tuesday. Automatically subscribe today!