views:

214

answers:

4

Why is most of the agent research and work done in Java? Is there a reason that the developers seem to have completely steered clear of .net framework or is it that it just doesn't get talked about among researchers as the .net is more commercial than Java?

+9  A: 

One hypothesis on why Java is used: Researches are mostly employed in universities. Researchers typically don't code - grad students living on ramen noodles code for them. Most universities are just factories for run of the mill java programmers. Ergo, most research gets done in Java.

Another hypothesis on why .NET isn't used: Disregarding Mono for a moment, .NET is tied to Microsoft's OSs. Chances are likely that the work environments provided by research centers aren't running Microsoft OSs / utilities.

It most certainly doesn't have to do with commercial viability - Java is just as "commercial" as .NET, for what it's worth.

whaley
+3  A: 
  1. JVM is cross platform.
  2. Java has very good concurrent programming support.
  3. Extensive 3rd party libraries for nearly everything conceivable.
2 - So does .net. 3 - So does .net. I agree with 1 though.
Simon P Stevens
.Net does not have the same level of 3rd party libraries Java does. You should also add the word 'free' after extensive in point 3.
Jherico
+3  A: 

.net (MS) requires invests in licences for the operating system and development platform. Java (Sun) and target operating systems are basically for free (you pay for support), enterprise proven and the language is widely spread.

Agent based programming matters in scaling scenarios. Scaling out on .net (MS) means to invest a lot!

oeogijjowefi
That's not really true. The Microsoft Academic relations program is one giant free giveaway. You just have to apply and they'll throw more software at you for free than you can handle.. It's just, people are too lazy to ask. (Obviously this only applies to Universities)
Tigraine
Right - but even though you can get it for free - there's still a lot to do. You have to send documentation and go through a process to get approved. Once you are approved you still have to manage your subscriptions to MSDN Academic Alliance and manage licenses for your software. There's a difference between "laziness" and an aversion to additional unnecessary work. :)
Nate
If you have success in your research and if you like to create a business case out of your research, you will not be stuck with Microsoft. The accessibility of Java is so much better, that Java is generally used for education. It's much harder to get your students .net (MS) ready (which is really sad). I hope, Mono gets more attention!
oeogijjowefi
A: 

The obvious answer is that Java is free (as in beer) for anything you are willing to invest time on. Other than the hardware, you can run Linux (or Open Solaris, or etc.), a free JVM, tons of free APIs - it is part of the culture, free encourages free.

The Microsoft ecosystem is more of a pay as you go environment. Many tools that have free in the Java world only have for pay options in the Microsoft world.

In the research world, where you have plenty of underpaid graduate students, manpower is much cheaper so the ostensible benefit of the commercial licensed tool saving manpower isn't as much of a benefit. Add to that that a research project could be required to run on a wide distribution of machines. When that happens in the commercial environment, the commercial entity is making money (say for example an e-commerce company that needs to increase the number of machines in its cluster - they are getting more traffic, more sales, more money so they can spend to increase infrastructure). In research, the increased licensing requirements of commercial software aren't necessarily justified by their underlying economics.

So all told, Java gets the preference. Once that happens, that becomes the tool everyone is talking about, and the effect snowballs to the point where .NET is crowded out.

Of course you will find exceptions to all the above, but the point is that it outlines the trend.

Yishai