Ryan has posted 17 posts at DZone. You can read more from them at their website. View Full User Profile

Java's Biggest Threat is Microsoft

  • submit to reddit

I've never been one to believe that languages like Ruby, Groovy or Scala are going to be a threat to Java the language and platform.   I think the real threat is the .NET platform. 

I have a friend who works for the Canadian Federal Government in IT.  He says that Microsoft sales people are phoning the decision makers every week or two offering huge incentives to migrate to the Microsoft platform (Windows and .NET).  They are offering huge discounts, practically giving the stuff away, and sometimes they do give things away.   Microsoft is succeeding because the government is starting to use .NET more.

Another friend of mine, also in IT, works pretty high up at the corporate headquarters of a major bank. 70% - 80% of their systems are written in Java.  Within the last couple of years they brought in consultants to help them decide which current Java technologies to focus on.  Initially they chose Hibernate / Spring / Wicket, but later I heard they changed their minds and went with iBatis / Spring / Struts 2.  Meanwhile, Microsoft has been calling their decision makers frequently offering deep discounts to switch to the Microsoft platform.  Someone at the very top of the bank made a decision to rewrite EVERYTHING in .NET. Legacy systems, recently developed systems, and new systems.  All Java programmers had to learn .NET.  Why? They looked at the cost of upgrading their WebLogic and WebSphere application servers and doing some maintenance work on one of their applications.  The cost was going to be $1M - $2M.  They were able to complete the project in .NET for $150K, so they decided that Java is too expensive.  I also heard something about a lawsuit that made it impossible for enterprises to use open source application servers like JBoss and Tomcat, which was another major reason they switched.  WHAT??  Did this information come from Microsoft?  I am unaware of this lawsuit.

Another friend who works in London England said his company had a mixture of Java, PHP and .NET programmers.  The company wanted to consolidate onto one platform and they chose .NET. He said the main company HQ was a Microsoft shop, and his satellite office was the only one using Java and PHP.

The same thing is happening at my company.  We currently use five programming languages, and it looks likely that we will consolidate on .NET.

Here is a list of reasons why I think a company would choose to switch to .NET:

1) The company has some reason to only buy middleware from companies like IBM, Oracle, and Microsoft.  If they want to run on WebLogic or WebSphere then they are going to spend a TON of money which gives them the impression that Java is expensive.  This has never been a problem for JBoss, GlassFish, Resin and Tomcat customers.  You can use these products for free, or buy support for much less than WebSphere or WebLogic. Upgrades don't cost anything.  In my eyes, Java is not expensive.

2) The Java programming language has stagnated over the last 4 - 5 years. .NET has pulled ahead with closures, lambda expressions, properties, LINQ, WPF, etc.  Knowing that these features are coming to Java, this doesn't really bother me.  Java FX 2.0 is Java's answers to WPF & Silverlight, and we'll have a production release by JavaOne 2011.  Closures and lambdas are coming in Java 8 (2012). At JavaOne 2010 they hinted about the possibility of adding properties to Java 8.   I'm not sure if we'll ever see LINQ, but that's not enough to make me abandon the entire Java platform. 

3) Too much choice.  For every decision you have to make there are many choices of libraries and frameworks.  You have to spend a lot of time and effort to evaluate all of the options.  This has fragmented the Java community into several religions.   If you want to hire a Java programmer, you have to make sure they have experience with your choice of technology stack.   In .NET land, the King (Microsoft) has made all the decisions for you. Just use it.  In Java, there is a King (JCP) who tries to make decision making easy by providing standardized APIs for everything imaginable like in .NET, but the mistakes from the past have tarnished many developers' view and support of the King, so some choose to ignore anything and everything he has to offer. Then they have to wire together a plethora of libraries and frameworks before writing their application which is difficult and time consuming.  I choose JCP standard APIs and open source Java EE application servers, so decision making and ease of use is not a problem for me

4) Politics. There's nothing you can do about this other than being well informed to try and sway the decision.

I hope Oracle and IBM realize what is happening and do something NOW.

From http://www.ryandelaplante.com/2010/10/javas-biggest-threat-is-microsoft.html

Published at DZone with permission of its author, Ryan Developer.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)



Cosmin Mutu replied on Mon, 2010/10/18 - 2:33am

microsoft? you make me laugh! :) and btw when your company decides to switch to .NET technology entirely, maybe it`s time to change companies :)

Otengi Miloskov replied on Mon, 2010/10/18 - 3:13am

You are still living in the 90's?. c'mon. If Java becomes dead tomorrow, I will switch to PHP, Rails, Django, Lift, SeaSide, Erlang with any web framework or anything else before touching again Microsoft stuff.

Honey Monster replied on Mon, 2010/10/18 - 3:55am

The biggest threat to Java is Java and Oracle. Sure you see defections to .NET (I am a convert), but you also see a lot of defections to other stacks. Java is bleeding.

Yes, .NET having a MS dictatorship does have a lot more direction - but it has also seen fewer mistakes. The framework does not always offer the best of breed - but even 90% is ok if it makes up for it by playing nice with the other parts.

After initial success Sun lacked direction and allowed the Java ecosystem to fragment the platform. The lack of a good offering from Sun spurred an explosion of "web frameworks", some of them obviously better than Suns official backed solutions. But it fragmented the ecosystem.

The situation was made worse by Suns lack of leadership and bullheadedly insistence on failed technologies. JavaFX is not ready yet and in 2012 it will still not rival WPF or Silverlight. Not that it matters because RIAs is not where the main battle will take place.

I do hope that the new timeline of Plan B will encourage project lambda to take a good hard look at their priorities. You do realize that what they are puzzling with lately can hardly be called closures? They are merely sugared up single abstract method anonymous inner classes, complete with all of the shortcomings such as "final" requirements etc.

And don't disregard LINQ. This one technology alone allows C# developers to make huge leaps in productivity. Don't make the mistake to believe that LINQ is about data access and take comfort in JPA or Hibernate. LINQ goes much deeper and saves tons of lines in regular (non-data access) code. Another overlooked aspect of LINQ is that it preps a whole new generation of .NET developers for functional programming. While C# is not a primary language for FP, LINQ is decidedly a FP concept. Having developers slowly adopt the concept will set the stage for a jump to e.g. F# or another FP language. Those developers can make the jump without leaving the framework behind, kinda like you can jump to Scala and still use (most of) the framework.

Java is also firmly behind the curve on dynamic interoperability. While Java still considers how to incorporate closures (or some watered-out derivative), C# already offers advanced dynamic typing and interop with dynamic languages which goes deep into the framework.

Parallel programming is another area where Java is lagging. While this is mainly due to lack of closures (which would allow fine-grained task-oriented programming), past mistakes such as checked exceptions also play a role here. Just read the project lambda mailing list to see how often that single concept breaks otherwise good ideas.

At least for the next two years, Java will be playing catch-up, not just to .NET but also to other productivity-centric frameworks. On top of that, Oracle's behavior ensures that some Java-leaning independents are now taking a look at .NET.

Vassil Dichev replied on Mon, 2010/10/18 - 4:42am

Scala and Groovy (and JRuby) cannot be a threat to Java the platform, they're running on top of the Java platform and it's critical for their survival. They might be a threat to Java the language, but probably not mid-term. Besides, the biggest threat to Java the language is its own staleness.

Dmitry Buzdin replied on Mon, 2010/10/18 - 5:49am

I think the article concentrates on the corporate/enterprise environments. Life is very different out there. It is obvious that when you are building a public site you choose technologies that fit well to the problem you are solving, however in enterprise, the technology is a constraint from corporate standards and it can not be easily changed. One of our customers, world largest insurer, is constantly adding new .NET applications to the existing Java landscape. And by landscape I mean 1000+ systems of different scale and size (ranging from VB-enabled Excel to SAP installations). So, the threat to Java is really .NET. JVM languages are not a threat, but rather a different flavor of Java technology. There will be need to write Java low-level stuff and integrate with Java libraries anyway. Agree with most of the statements in the article. The main painpoints are huge prices for WebSphere/WebLogic maintenance (however there are also near free licenses from IBM existing ;) ) and the complexity of choice in components. After Struts 1 has lost its popularity the industry is still in a choice what is the next Web framework with candidates like Wicket, JSF, ZK, Struts 2, Spring MVC, GWT etc. In .NET world it is simple - just install it and use ASP.NET (imho the most popular approach).

Claude Lalyre replied on Mon, 2010/10/18 - 7:19am

.NET applications only run onto Windows based machines. As long as UNIX based machines will be used in the industry, Java will still have a chance. I think that the Java economic system is richer and smarter than the .NET eco system. The big size of the Java community, is its force. There are many innovations with NoSQL storage, with OSGi frameworks, with functional programming in Java, and so on that the evolution of Java is exponential. Microsfot won't be able to stay the course. Even Java developers have difficulties to stay the course and aware of all the jungle of Java frameworks, and JVM base languages. The main issue for Java economic system is to avoid fragmentation of the community, and to promote vulgarization of Java technologies. Because the Java Guru are too smart, and they let lots of Java average developers far behind. So hold on the rythm, and bring much more tutorial, online support, more standards, more information and more popularization.... for democratizing Java technologies for everyone, not only for gurus or smart guys !

Alex Scott replied on Mon, 2010/10/18 - 7:24am

I completely agree with the author. I've seen a large shift to .Net recently in the UK, specifically organisations like the NHS (National Health Service). Just take a look at job trends and you'll see that .Net jobs have rocketed.

I believe when IT Managers go looking for the next technology see Java and the hundreds of different frameworks, or the .Net Platform. Now it may be hugely over simplifying (but thats what IT Managers do), and so they take the easy option and choose .Net rather than have to weigh up iBatis VS Hibernate, Spring VS JEE, Wicket VS Struts,etc.

However I also believe that Java may have a saviour, and its not Oracle; its the recession. In these hard times I think companies will start looking more towards cheap/opensource technologies and then look upon Java more favourably again. Heavyweight application servers were a necessity 10 years ago, but now you can do enterprise systems without them.

Andy Leung replied on Mon, 2010/10/18 - 8:24am

Please provide statistics to support your statements. I see companies going from Java to .NET but also vice versa. So please enlighten me with reports, thanks.

Liam Knox replied on Mon, 2010/10/18 - 9:04am in response to: Honey Monster

So a language that runs on all OS's and is by far the primary server side language of choice in all Fortune 500 companies compared to one than runs on one crap OS that doesn't work, isn't secure and doesn't scale. Very difficult call to make that.

Liam Knox replied on Mon, 2010/10/18 - 9:07am in response to: Alex Scott

Quoting the NHS is probably not the best move. Considering the UK Government has already pissed away so much money on bad technical decisions I expect this will be yet another. Especially when they find patients details openly available online due to Windows secuirty holes.

Phil H. replied on Mon, 2010/10/18 - 9:57am

I'd say Java's biggest threat is Oracle. The unknown lawsuit you mentioned is probably none other than Oracle vs Google. And if FUD could ever be justified this might be it. Its still FUD because its just spreading something without exact details. But what Oracle's lawsuit basically says to me is that while Java is open you can't do anything with it that doesn't fully conform to the specs. So it puts fear in the decision makers mind that projects like Tomcat and JBoss might not conform somewhere and may come under fire. I don't know how the licensing relates to things like Java EE but all thats needed is the fear in someones mind that doesn't understand and .Net seems like a safer choice. Thats on top of the rift that seems to be growing between folks that truly are into Java and those that are more concerned with an open platform and just saw Java as the most powerful option. I also think its unfair to say Java is fragmented just because there are a number of frameworks. PHP is still the dominant web technology overall even if not many new things are being built with it. Yet it has frameworks galore to suit different needs. Even if Sun had come up with a good web framework from the get go I'm sure alternatives would have sprung up anyway. I'd say this proves to be a strength of Java rather than a weakness. Take a look at the Alt.Net community and you'll see many people upset with the "one way to skin a cat" approach taken by Microsoft. Many wish they could get a great community of open source tools and projects around .Net like the ones found around other technologies. In fact here is a great rant on that. http://badgrs.tumblr.com/post/1178182054/dave-newman-leaving-net Finally I think Java hurts itself by focusing on the mid to high end. I'd argue that I don't like .Net on any end ;-) but its obviously used in big boy situations. But its also available for shared hosting just like PHP where the garage developer can get a startup going. Those developers then stick with .Net and add more .Net devs to the pool. Outside of Google App Engine you're going to pay at least $20/month for a server. I'd question what benefit does Java give me over PHP or .Net in that instance when I can get started for $4 bucks a month when you're just trying to toss an idea out there and see if it sticks.

Endre Varga replied on Mon, 2010/10/18 - 10:01am

This is stupid.

I know several companies where Java is a _company policy_! Show us some numbers, please.

Honey Monster replied on Mon, 2010/10/18 - 11:01am in response to: Liam Knox

So a language that runs on all OS's and is by far the primary server side language of choice in all Fortune 500 companies compared to one than runs on one crap OS that doesn't work, isn't secure and doesn't scale. Very difficult call to make that.

Really mature response. So everyone who uses .NET have poor judgment?

Stephane Vaucher replied on Mon, 2010/10/18 - 12:48pm

70% - 80% of their systems are written in Java
Hmmm, I doubt this is true. 70-80% of their new systems perhaps. Most banks I know have a huge software ecosystem of Cobol still running. There is consequently still a good market for COBOL programmers. Banks did not convert all their COBOL to Java because it is too costly (we are talking about millions of LOCs). The same applies to Java. A company with several MLOCS in Java will not throw it away unless there is an urgent need. Is Java doomed to become the next COBOL? Of course, every language eventually becomes obsolete.

Liam Knox replied on Mon, 2010/10/18 - 5:34pm in response to: Honey Monster

From what I see day to day is .Net is confined to the places where Windows is used i.e. the Desktop. The reason Windows server side impact is minimal is due to the reasons stated.

Liam Knox replied on Mon, 2010/10/18 - 6:02pm in response to: Stephane Vaucher

I think this a fair comment and you can mention C++ in this light also. I really do believe the majority of developers appear blind to a) what is the state of Java in world today b) How often the large companies switch technology strategy and their reasons to

The fact is the Java space is so large and the investment is so high it is just not going to diminish in usage compared with how these articles envisage it

You get the same coming from the Scala world, expecting some migration of Biblical proportions. It is just not going to happen.

Ryan Developer replied on Mon, 2010/10/18 - 8:46pm

I am the author of the blog post which was re-posted by DZone as this article.  I didn't mean for it to sound like I was trying to convince Java developers to switch to .NET, or that I want .NET to replace Java.   It was intended to be a wake up call to let people know what's happening in large organizations that my friends are working at.  Microsoft is calling their decision makers all the time trying to push sweet deals, and has been successful converting some of them from Java to .NET.   I imagine they are doing this to companies all over the world. The decision makers aren't looking at which is better (although it could be argued that .NET is better because of more advanced language features).  They are looking at price.  You have two options: $1 Million to complete the project in Java, or $150K to complete the project in .NET.  Which do you choose?   That's how they see it.

Also, I'm not so sure that .NET is only good for client side apps. I think it's picking up on server side SOA type systems. 

Igor Laera replied on Tue, 2010/10/19 - 5:52am

Its interesting that lots of Java coder feel quite neglected by Sun, and now by Oracle.
I give Big O the benefit of taking-over-dizzyness until I call on them. They still have to digest.

Years ago, the whole Java ecosystem had some sort of futuristic C++ feel to it, you could do
the heavy (business) lifting and you had immensive JVM advancements in speed/quality.

Then the Java train started to slow down with crappy, backward oriented JCP results, sometimes
even so bad that people 'defected' en mass to third party playgrounds like Spring or IBMs
much modern RCP/Eclipse instead of Swing.

Sun lost control over the ecosystem. The most people now expect Oracle to get it back,
defining (new) standards for db, web, configuration and packaging; so big name players
and companies get guidelines again 'whats really state of the art' instead of following
10 different third party 'claims' that 'this' is better then anything else.

Companys want intelligent choices, not a chaotic playground. Microsoft was always able
to use the self shooting of 'others' to make a point, or better, money.

Oracle has yet to prove their willingness to step up. I don't care much about Oracle vs. Google,
since that is merely a "how much money!" thing. Nobody really believes that Oracle has the
power to stop Dalvik.

Liam Knox replied on Tue, 2010/10/19 - 6:06am in response to:

Companies do not see it so black and white I am afraid. They look at what they have and what they deem works. If I have a vast plant on Linux servers the figures you mention ( accurate or not they are comparatively small ) would not have any impact in this decision. Simlarly if an Investment bank has a working C++ pricing engine they are not going to rewrite this at a technical whim

I think this is where people are being totally unrealistic. The world doesn't wake up and suddendly the server side is .Net. Especially given the Linux footprint.

Also I have just noticed the chief bod and Microsoft resigning, their share price on the down and Balmer despised by 50% or employees. Not really a good time to make a radical move I thinks.

Ryan Developer replied on Tue, 2010/10/19 - 10:11pm in response to: Liam Knox

Ok I can see your point... but at the major Canadian bank I'm talking about it really did happen.  My friend who works there is pretty senior and sometimes works directly with the President of the bank.  He told me they are rewriting everything in .NET and all new systems are going to be .NET.   Maybe everything doesn't include cobol system.   The $1M - $2M Java rewrite (includes upgrading WebLogic/WebSphere) vs $150K .NET rewrite was a major deciding factor.

Tony Siciliani replied on Wed, 2010/10/20 - 5:31am in response to:

You're still citing anecdotal evidence. Yes, some corporations have switched to .NET. Others didn't. Others did the opposite move. With no numbers industry-wide to back up your statement, it becomes mere conjecture.

The cost deciding factor looks pretty shaky. How about the time needed to re-train java developers, cost of bugs from inexperience with the new platform etc..., Also, a java rewrite didn't probably have to cost $1M-$2M if alternative solutions/vendors were more carefully considered. I doubt they told you the truth about the (im)possibility for them to use open-source products.

Since we are citing anecdotes: The only case I know of a switch & re-write to .NET from java was also a decision (sigh) from the president, and resulted far more costly than previously planned, and yet in the end it didn't make the software perform any better, nor maintenance any easier.



Liam Knox replied on Thu, 2010/10/21 - 6:51am in response to:

If it is a major bank they would not be quibling over $1-2 dollars. Major banks IT bugets are in the Billions. I know this having worked in a few and still working in one. Banks have more politics than any firms and yes there are strange technical ideas, most of which seldom get off the ground. The main point is I wouldn't see this sort of figure justifying a move and also you wouldn't see complete rewrites unless the Bank is small. I think these facts kind of question what size of institution you are talking about.

I would say the reason for the choice is more an CTO personal decision and based on his limited technical knowledge and maybe his friend at Microsoft. Personally I think tying yourself to Windows would be apt reason not to choose .Net for 'everything'

Ryan Developer replied on Thu, 2010/10/21 - 12:16pm in response to: Liam Knox

The bank is one of the top 3 largest in the country.  The $1M - $2M vs $150K I was talking about is just one project.  In these rough economic times they can't ignore huge cost savings like that when considering future software projects (upgrades/maintenance/green field).  But, apparently they can ignore the option of not rewriting their Java systems and running them on open source middleware such as Tomcat, GlassFish, JBoss and Resin.

jim_oflaherty_jr (not verified) replied on Tue, 2010/10/26 - 9:31am

That's certainly my own perspective: http://chaotic3quilibrium.wordpress.com/2010/10/26/how-oracles-ellison-drove-a-java-advocate-to-netc/

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.