Matt Hughes asks:
"When does one programmer's preferences (Java over Microsoft-anything because they hate Microsoft, or Microsoft over open-source because open-source is evil) and the variety of choices start to erode productivity? As a J2EE developer for the past few years, I admit that I've become frustrated at the number of choices out there. Every one offers a different way of doing things but they don't all interoperate (JBuilder doesn't natively understand Struts) and none of them -- in my experience -- pulls all of the web technologies together very succinctly. Does Visual Studio .NET and the .NET framework pull this together better than the open-source projects out there, or is it just as complicated in your experience? Is .NET too immature to be trusted? What are your thoughts?" For those interested in the raw performance numbers, Slashdot did a
performance comparison between the two technologies, in an earlier article.
"I've recently been asked to produce a report listing the pros and cons of J2EE and .NET as a web application development platform. I've been using J2EE for years now and haven't even touched .Net as I dislike most Microsoft products. However, for the report, I am trying to be objective. From my own experience and from what I've read, it seems the defining issue for some people is choice.
As far as language preference, some argue Microsoft allows too much (VB.NET, C#, and supposedly everything else *eventually*) and J2EE too little (Java). As far as development environments, Microsoft offers too little (Visual Studio .Net, Windows Server 2003, Windows only) and J2EE
provides too much (JBuilder, Eclipse, Tomcat, JBoss, Websphere, any OS/hardware combo, etc)."
JBuilder has support for Struts. 8 even has rudimentary support for 1.1. 9 has full support as far as I'm aware. Eclipse can also use plugins to have that support, but I haven't used them personally. I don't see what there is to complain about in J2EE development environments...
Daniel
Carpe Diem
Believe it or not some people use Java for reasons other than hating MS. Some people use MS for reasons other than disliking open source.
Having said that, I do note that you are perpetuating the myth that Java runs on "any OS/hardware combo". This is untrue of any language but I suspect "C" comes closer to achieving it than Java.
I have used both J2EE and
This is quite general for everything: e.g.
Summary: If you want a quick and dirty DB frontend, go for
If at first you don't succeed, skydiving is not for you
Windows XP really impressed me. With that and having heard of J#, I thought wow, that'd be great, because I like Java, but it's too irresponsive for GUIs and even though hand-coding GUIs makes nice code, I don't like it (using Eclipse for java). So I got a copy of VS.Net from campus, which goes for not so much.
.Net by itself, you also need a redistributable for J#, which isn't installed in the computer labs. Deployment is also very complicated. You have to distribute the .Net and J# distributables along with your app, then if you want DB support, you need a third one and then your app by itself is already big...
.Net.
.Net from my pocket because I wanted to use it and at the end, the only thing I can say about it is that I got robbed. Eventually, it will mature up and if it gets accepted as well as Java, it might become interesting. But next time around, it's gonna be forced on me, I won't switch by will.
At first I thought it was damn cool. You could just build your GUI very quickly by clicking around, the online help is nice and all, multi-monitor support is really good, etc. Then bugs started popping from everywhere and I found I was spending more time on writing workarounds than "real" code itself (or simply redoing dialogs because the IDE decided to forget about some). Then, when I had assignment demos to do for school, I was writing them in J#, but I had to redo the GUI by hand anyways, because you can't run J# on
So I just switched back to Java, where you just install one distributable sometimes, for machines that don't already have it. And then deployment is a joke, you just send a 50k jar and that's it. No 2-3 megs for simple apps! Sure the GUI's not too responsive, but I'm waiting for 1.4.2 eagerly now instead of wasting time on
I payed
First, familiariarity breeds increased effency. If you don't have the time to study all choices and train on something new then pick a familar one.
.Net is younger and has fewer choices when it comes to web framworks and external libs which some people prefer. This blog enty explains it better than I can: http://javablogs.com/ViewEntry.jspa?id=31449
Java is more of a Language For the Masses than C#/.Net. While us alpha-geeks like Languages For Smart People that does not make them better, espcially when we have to work with less smart people on your team. Much more on this at: http://madbean.com/blog/20/.
here in Peru they ask the same things: "open standards, evolutivity, free (as in beer) libraries, maximum portability, and connectivity";
but... this is an extract taken from their dictionary:
'standards' = windows
'evolutivity' = XP!
'free' = 'i can get a CD for S/. 5' (that's five soles, less than 2 US dollars)
'portability' = ??
'conectivity' = IE.
now guess why i don't do web development.
-Kz-
I have used both a fair amount. My previous job was writing Java business web applications, and I am currently managing the development of a C# webservice (for the server) and a C# winforms client.
.NET and J2EE, though they are less similar than the language comparison.
/ideal/ for any application dealing heavily with either protocol. In fact, I would say that it is nothing short of brilliant.
.NET calls 'AppDomains'. This is a very powerful feature.
.NET/C#.
/platform/ maturity, but I will leave the zealots to argue Windows vs Unix.
.NET and C#. When Mono gets further along for web services, it will certainly be a force to reckoned with. As for writing webservice and database clients for Win32, it is really quite nice. You could use GTK# and have it cross-platform, yet still take advantage of features that C# includes.
...and the cons: currently somewhat locked into MS' platform (though this should change shortly with Mono), somewhat inferior auto-documenting to javadoc.
Let's start with the picture from 10,000 feet: C# is aimed squarely at Java, and for all intents and purposes, it is a superset of Java. Similarly for
Language Differences:
C# has less integrated threading support. (which is a bad thing, imho)
C#'s XML and SOAP integration make it
Java's XML integration is a nightmare. JAXB is the only thing that comes close to being halfway decent, and it still doesn't come close to the integration C#. XML serialisation in C# is fast and beautiful.
C# gives you far more control over the dynamic reloading of classes, as well as increased security through what
C# documentation isn't quite as nice or refined as the standard javadoc fare, but MSDN is a pretty nice source, though sometimes you have to look a little harder or deeper than you would with the javadocs.
In general, both APIs are very clean.
As for maturity, I don't really think that's an argument. Most of the Java technologies available now (especially the XML/web services bits, in which the competetition is most fierce) are no older than
I think the larger question is the underlying
Do you feel comfortable locked into a Microsoft platform and x86 hardware? Personally, for a server, I don't. Go help out Mono, which is progressing nicely, but could definitely use some more help. (http://go-mono.org)
If you do, I would definitely go with
In short, the pros: excellent XML and SOAP handling, speed, many small features which are currently emulated at the API level in other languages
Simplicity is prerequisite for reliability. - Dijkstra
Someone did : http://www.ibatis.com/jpetstore/jpetstore.html
However, they don't provide any benchmarks other than lines of code.