Hacker News new | past | comments | ask | show | jobs | submit login

At my company about a year ago, we held a Java vs .NET seminar. The attendees were probably 10% .NET, 80% Java and 10% interested onlookers (like me). The main .NET guy stood up to speak. He said he'd done this project recently in Java and that project in C# and these were his experiences. He talked about the maturity of the tools, particularly VS vs Eclipse support for programming in the large, LINQ, he mentioned that in the Java world there were many competing frameworks whereas a C# developer could get up to speed on a project without having to learn a new one, a whole bunch of stuff. He was calm, articulate, prepared, and clearly had the attitude of "the right tool for the job" and "what's best for the company".

Then it was Java's turn. Their speaker hadn't prepared any examples, and he'd never used .NET. I scented blood in the water. This was going to be fun. It went something like this:

Him: Java is cross platform! Me: So what? We only use one platform for all Java, the Ops guys insist on it. Him: Java is used by lots of large companies including X, Y and Z Me: All of whom write their major products in C and C++ Him: You can use lots of languages on the JVM! Me: So the best thing about Java is that you don't have to use it? Is that all you got?

Then he prepared his killer blow:

Him: Java is not Microsoft! Me: Haha, OK you got me there. No wait, there's Mono...

IMHO right now Java should be considered a legacy language, and Java programmers either assigned to maintenance or those who are good, retrained (not necessarily in C#, there's Scala for example). The JVMs are generally good and if you need a VM language on Unix then worth considering (tho' there are other VMs out there). Personally, I would advise against starting a new project in Java.




IMHO right now Java should be considered a legacy language, and Java programmers either assigned to maintenance or those who are good, retrained

Why? If they are producing value where they are in a legacy language, why retrain them? If they are really good programmers, they will retrain themselves out of curiosity.

Good old computer languages are like comic book characters. They keep getting declared dead, but someone keeps bringing them back!

Now, whether Java is a good language is debatable. More relevant to the company is if it's a good project. If it is a good project producing quality output and value, leave it alone! There's no sense in changing languages just because it's a "new" technology. (In quotes because a lot of that stuff was developed in the 60's, and 70's by Bell, Xerox, and IBM R&D anyhow.)


There's no need to chuck away the old code if you stay on the JVM, remember. You can develop the new functionality in Scala, Groovy, Jython, Clojure, whatever you want. It's not about rewriting existing code, it's about getting a competitive advantage when writing new code.


Ouch.


When you move to Mono, many of the auxiliary arguments for C# fall apart. (no VS.NET on Linux, "enterprise support," yadda yadda)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: