This is wrong in more ways than I could possibly enumerate.That being said, AFAIK, both languages lead to Web application development. Assuming it's your case, then it's going to be .NET vs. Java, not C# vs. Java. From there, why not go with what with you most rather than what you should? .NET is a very well integrated monolithic framework, it works great, but you must be comfortable at working within well defined boundaries and known territories. Java is pretty much the opposite, it's a very wild ecosystem with many products to chose from, many open source. Both have obvious advantages, with .NET you have a very nice generic solution that is more limited in scope of what to learn, you also only have one technology stack to follow. With Java, you have to keep up-to-date all the times and, since you have a choice of framework to make, it means that you can also make a good or bad choice. A good choice often means something better than what .NET would have yielded, and a bad choice a worse one. Of course, the good choice varies with the situation.
This is wrong in more ways than I could possibly enumerate.
Then, by all means, please enumerate?
Desktop:
.NET: Very well integrated, but not very multi-platform
Java: Sucks, but multi-platform. The only succesful Java desktop applications seems to be IDE
Mobile:
.NET: Sucks
Java: Good, but not working on iPhone, so of limited use
IDE
.NET: Visual Studio, SharpDevelop, am I missing any?
Java: Eclipse, Netbeans, IntelliJ, WebSphere, JDeveloper
View layer technology
.NET: ASP.NET, Silverlight (which is as shitty as JavaFX, way too late to beat Flash/Flex). http://msdn.microsoft.com/en-us/library/ee658088.aspx
Java: Servlet, JSP, JSF (plus all its derivatives), Wicket, Tapestry, GWT
Data Acces Layer
.NET: ADO. http://msdn.microsoft.com/en-us/library/ee658113(v=PandP.10).aspx
Java: JPA, Hibernate, TopLink, BC4J EO/VO, JDBC, jdbcTemplate
Model layer
.NET: ASP.NET MVC
Java: EJB, BC4J AM, Spring, Seam
Controller layer
.NET: ASP.NET MVC
Java: Spring web flow, Struts, JSF, ADF Task flow, Seam
Model access layer
.NET: ?
Java: Spring, ADF Databindings, CDI
Messaging
.NET: MS Message Queuing
Java: JMS
Application server
.NET: IIS
Java: Geronimo, JBoss, Glassfish, WebSphere, WebLogic, Oracle AS. I could add Tomcat and Jetty is taking web containers into account
Not my area so i can't really comment, but I don't see why ASP.NET wouldn't fit in here since most mobile devices can browse the net.
Uhh... how about Windows Forms and Windows Presentation Foundation(WPF)? Those are core technologies used in nearly all desktop .NET application.
...
Now you are just getting out of context and also only focusing on what ASP.NET has to offer...
Basic misconception between a mobile app and a web app working on mobile platform. A mobile app is executed on the mobile device, you create those using JME with Java. A mobile compatible web application is a web application that simply generates simpler markup when the agent identify itself as a mobile device, the computing is done on the server and yes, it's entirely possible to write an ASP application for that purpose, but not for the former.
If you check the header of that section correctly, you'll find that I was targeting the web application. Note that I did not name any Java desktop technologies either. I concentrate on web application because, AFAIK, most IT business falls into that category and, as I said earlier, there's no competition between Java and .NET on the desktop so that point is moot.
Read the last paragraph my last post along with the paragraph above.
Okay sure, you get to cherry pick only certain parts of Java to compare against .NET, but i can't? You can't compare one against the other without bringing all aspects of it into consideration.
I was simply pointing out how shortsighted your view of .NET was, 'mobile apps' are just one part of the big picture in any sort of environment.
Yes you can, it depends on the goal. The OP is asking about career potential and mentioning only Java and C#. Therefore, we can conclude:
1. He's not aiming at the gaming market, that would be C++ and scripting
2. He's not aiming at the mobile market, else C# would not even be mentioned
3. It leaves the IT and the desktop application market.
Assuming the former, a comparison is possible and is mostly composed of web applications.
Assuming the latter, .NET is clearly better, so it's not even worth the comparison, AWT, Swing and SWT are not that great, except for multiplatform.
And that limited scope was chosen on purpose. Actually, for maximum possibilities, the OP should learn C++ to be able to code iPhone apps as those are a hot 2010 trend and made C++ gain more popularity.
However, I assumed IT and therefore web applications, unless you want to argue that IT is not mainly composed of web applications...
http://www.nuwireinvestor.com/articles/top-5-business-trends-51523.aspx - See point 5
http://www.gartner.com/it/page.jsp?id=1210613
http://langpop.com/ - Just for extra reference, not really linked to this argument
Yes you can, it depends on the goal. The OP is asking about career potential and mentioning only Java and C#. Therefore, we can conclude:
1. He's not aiming at the gaming market, that would be C++ and scripting
2. He's not aiming at the mobile market, else C# would not even be mentioned
3. It leaves the IT and the desktop application market.
Assuming the former, a comparison is possible and is mostly composed of web applications.
Assuming the latter, .NET is clearly better, so it's not even worth the comparison, AWT, Swing and SWT are not that great, except for multiplatform.
And that limited scope was chosen on purpose. Actually, for maximum possibilities, the OP should learn C++ to be able to code iPhone apps as those are a hot 2010 trend and made C++ gain more popularity.
However, I assumed IT and therefore web applications, unless you want to argue that IT is not mainly composed of web applications...
http://www.nuwireinvestor.com/articles/top-5-business-trends-51523.aspx - See point 5
http://www.gartner.com/it/page.jsp?id=1210613
http://langpop.com/ - Just for extra reference, not really linked to this argument