<<
I did mean that ASP.Net was a big improvment over ASP, which I don't think anyone will argue with. I really don't know anything about .Net's advantages over Java, because I don't know a lot about Java. The obvious advantage is that .Net code will run better on Windows (better, faster UI's). It is also very closely coupled with SQL Server (especially the next version of SQL Server) so I would imagine that database calls will be faster. I think the IDE will be at least as good as anythng available for Java. You can use about 20 different languages with .Net (I'm not sure how big a deal this is, but if you are porting a large legacy Cobol app, it would probably be nice to have some Cobol.Net modules.) >>
As you said, .Net GUI apps will be better, but I'll address that later as one of Java's weaknesses.
First off, .Net's strong coupling to MS SQL Server doesn't mean database calls are any faster.
.Net has a slick marketing campaign going right now regarding a .Net port of Sun's (J2EE) Pet Store web application. One of the central claims is that .Net data handling is more efficient.
What they don't tell you is they compare apples to oranges since the .Net port uses SQL stored procedures, whereas the J2EE version uses something quite different entirely.
Benchmarks show the major commercial RDBMS are mostly in the same ballpark in performance. What that means is SQL stored procedures are usually similarly performing for any commercial RDBMS. Java server-side applications can use SQL stored procedures to access a MS SQL Server datastore if necessary. As an aside, MS SQL Server is a lot more affordable than Oracle.
<<
What are some of Java's weaknesses? Where is Java strong where .Net is not? Other than paltform independance. >>
When you're asking about just the languages and core libraries, I've already given my answer: there's not much differentiation. Go read that article I linked to. However, if you're talking about the whole breath of software development, that is a really huge question with no clear answers, so I'll throw out some food for thought.
A weakness you alluded to is that Java GUI apps don't integrate very well with the host OS. A Java Swing app doesn't look like your typical native Windows application, nor does it perform as well. Although there are some solutions to this problem, there aren't any clear ones out there that will result with a bevy of Java client apps being developed in the near future.
One strength of Java that comes to mind is security. Security was a central design feature of Java, and JVM implementations have historically had very few security issues (there was a recently reported problem). Given Microsoft's track record, we can all safely assume MS .Net deployments will be more problematic over time. Note that security is also an important part of C# and the runtime, so it'll be up to MS to deliver a secure deployment server. I'm not holding my breath.
A main benefit of Java's server technologies is they are largely vendor-agnostic. You obviously choose Java the language and the freely-downloaded JVM, but other than that, an organization has a lot of flexibility to choose a vendor to deliver specific services, i.e. the RDBMS or an application server. Over time, market competition results in the tools and servers getting better. As one example, you can choose the Apache web server, and plug into a Java app server for programmability. On the other hand, you're mostly stuck with IIS (and the rest of .Net Server).
A weakness of JSP (the Java counterpart to ASP.Net ) is there was no standard tag library. However, I believe one has recently been completed. Most good designs use JSP for the UI only (i.e. the view in an MVC architecture), so this isn't a serious problem.
A relative strength of .Net is "web services". The technologies for web services are actually standardized, and are available for Java. However, a standard set of library classes hasn't been released yet for Java. So for web services development, .Net has a leg up in availability and ease-of-use for the next 6 months. As a personal opinion, web services has more hype than substance.
Another strength is VStudio .Net is a strong tool. There are some high quality development tools for Java, but arguably VStudio .Net as a de facto standard has a slight edge.
Finally, maturity needs to be mentioned. .Net is a new thing, and the reasonable expectation is that there will be growing pains of various types. It makes a lot of sense for Windows development shops to adopt .Net as soon as possible. But choosing .Net over Java/J2EE is also putting a lot of faith and investment into one company and its new product line.