• We’re currently investigating an issue related to the forum theme and styling that is impacting page layout and visual formatting. The problem has been identified, and we are actively working on a resolution. There is no impact to user data or functionality, this is strictly a front-end display issue. We’ll post an update once the fix has been deployed. Thanks for your patience while we get this sorted.

C# Versus Java Programming Career

owensdj

Golden Member
I'm trying to decide of it would be better for me to get into C#/.NET or Java programming as a career choice?
 
IMO you can make a career out of either one, but why do you have to be limited to one or the other? Sure, maybe pick one to become an 'expert' in, but there's no reason learning C# or Java should be mutually exclusive.
 
Thanks for the reply, Crusty. Sure I could learn both, but to get really good I need to get experience primarily in one. Also, employers are going to look for extensive experience in the platform used in the position for which they're hiring.
 
East or West coast? I've never saw proofs, but I heard Java is stronger in the West while C# has the lead in the East.

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.

So, I'd say that if you like stability and a well defined set of technology to learn, go with .NET/C#. If you prefer stability and choice at the cost of more technology to learn, go with Java.


My 2 cents
 
I'd say that Java is relegated to niche applications these days. Virtually everything Cisco puts out has Java attached to it somehow, JSP is still popular in "enterprise" web apps and of course there's the mobile market with BlackBerry and Android relying heavily on Java.

And I'd say that most Windows desktop stuff is moving towards .Net. Java on the desktop is pretty much a flop, but due to MS' position in the desktop OS market they've been able to make sure everyone's got their framework installed and the apps generally feel more integrated. If you want to do end-user desktop stuff go with .Net.
 
Shilohen, thanks. It's East Coast. I did a quick search for development jobs in the area and found there were more that required .NET experience than Java, so you could be right about the East Coast versus West Coast thing.

Nothinman, thanks. Desktop development does seem to be a .NET advantage.
 
Last edited:
The people here are not necessarily representative, and I think most people eventually do specialize on a platform, just because the subject matter is so deep these days. You can always switch, but keeping current on two separate families of languages and technologies simultaneously might be difficult.

Either of the platforms you mentioned will earn you a good living.
 
For desktop application development, indeed, Java is not even to be considered unless you want multi-platform compatibility. The .NET framework has a WAY better system library and cross-language integration. It's more a massacre than a battle on that field really.
 
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.
 
Do you really have to specialize in one or the other? They are very similar to each other, I don't see what the big issue of learning or specializing in both would be.

Just because I've focused mainly on C/C++ doesn't mean I can't whip out some C#/java/php/perl/pascal/VB/javascript/asp/asm/verilog code.

The best career choice is to learn programming well enough that the language doesn't matter, then get a job in whatever language you can.
 
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


Web applications:

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%28v=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


Process design
.NET: BizTalk
Java: BPEL


Application server
.NET: IIS

Java: Geronimo, JBoss, Glassfish, WebSphere, WebLogic, Oracle AS. I could add Tomcat and Jetty is taking web containers into account


Portal server
.NET: Sharepoint

Java: Jetspeed, WebCenter, Liferay, not counting the portlet containers


Content management
There are many for both: http://en.wikipedia.org/wiki/List_of_content_management_systems


That being said, since both languages are fully featured, it would always be possible to code whatever from scratch. One could create the JSF equivalent in .NET and the same hold true for ASP in Java, but it's just not how the industry works atm. We have many, many projects ongoing with both .NET and Java at my firm, the former always use the standard MS stack (albeit evidently not all the elements of it), the latter varies from a project to another.

http://en.wikipedia.org/wiki/.NET_Framework#.NET_vs._Java_and_Java_EE
http://en.wikipedia.org/wiki/Comparison_of_the_Java_and_.NET_platforms
http://en.wikipedia.org/wiki/Comparison_of_Java_and_C_Sharp (more technical than conceptual however)
 
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

Mono.net has come a LONG ways and targeting Linux can be done straight from VS.

Mobile:
.NET: Sucks
Java: Good, but not working on iPhone, so of limited use

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.

IDE
.NET: Visual Studio, SharpDevelop, am I missing any?
Java: Eclipse, Netbeans, IntelliJ, WebSphere, JDeveloper

http://monodevelop.com/

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

Uhh... how about Windows Forms and Windows Presentation Foundation(WPF)? Those are core technologies used in nearly all desktop .NET application.

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

Now you are just getting out of context and also only focusing on what ASP.NET has to offer. There are just as many data access libraries for .NET as there are for Java, it's pointless to try and list them all. Spring even has a .NET project. Model access layer, isn't that just the same as the DAL?

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

Windows Communication Foundation(WCF) is an extremely flexible framework for doing nearly any kind of communication you need between processes. Named Pipes, TCP/IP, HTTP, UDP, MSMQ etc.

You can self-host WCF services very easily or you can host them in IIS.
 
In terms of syntax they are almost identical. It's obvious that c# is once more typical MS-Style. Copy something from someone else but make it better (well I can't say if it actually is better).

Only difference is the framework but they are also rather similar.

But for a carrier i still would pic .net because there is such much more done using it than java = more available positions.
 
IMO, you're asking the wrong question. You shouldn't be asking "Which one is better?," but rather "Which one should I prioritize?" You can start with one, master it, and find a related job. However, you'll soon realize that both are similar, that both co-exist, and learning one or the other is straightforward.

Oh, and it can be extremely rewarding to know both. If you dedicate yourself to just one technology, you'll find that you can be easily replaced when the next best language comes out. I'd say keep an open mind and diversify 🙂.
 
It really depends what you want to work on. I don't like working with windows. So there is not much reason for me to focus on something like C# (sure there is mono, but I don't see it taking over in the *nix/osx world). Which is why I focus on the 'big' languages for *nix server applications.

If I was planning on targeting windows for my career I would be glued to .NET like it was the next coming of jesus.
 
I'm not a programmer by trade (I write some scripts), but I have had to work with lots of in-house apps written by company programmers at various jobs. I think that you'd be able to learn both pretty easily; it's more important that you become a *good programmer* than anything else. Be methodical, think about your end user, think about risks, understand diminishing returns on investments of time, comment well, etc. Those kinds of things will serve you well no matter what language you learn, and will probably make which language you're more comfortable with a simple matter of taking a few weeks to switch gears.

I know it's not exactly what you were looking for.
 
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.

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.


Uhh... how about Windows Forms and Windows Presentation Foundation(WPF)? Those are core technologies used in nearly all desktop .NET application.

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.


...
Now you are just getting out of context and also only focusing on what ASP.NET has to offer...

Read the last paragraph my last post along with the paragraph above.
 
Last edited:
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.
 
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.

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.

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.

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

XNA Framework for games in .NET. Silverlight for mobile, and then with the new windows phones you can once again use the XNA 4.0 framework to target them with native C#.

Besides this rather pointless argument, the OP made no mention of any particular sector he wanted to get into so it's not a good idea to make assumptions. Perhaps he wanted to get an idea about what kind of programming he can do on either platform before he makes a choice. In the end there are limitless things you can do with either platform.
 
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

Your view seems extremely narrow to me, and somewhat out of date. All the markets you mention are undergoing rapid and transformational changes. Java, Flash, Silverlight, and the new HTML5 stuff are going to play a big role in that, as will C# and .NET. The lines you're trying to draw have in many cases blurred almost to invisibility.
 
If you proficient in Java then c# is very easy for you.
But, actually if you work for software house I find that the client will determine what platform you develop. For web dev mostly(at least for me) I got more PHP development.
 
Well, I can't tell you what the future holds - we're all gonna be wrong on that one, we always are.

But when I had to make that choice, I chose .net. Why?

Because one had Visual Studio, one had netbeans, and there was no comparison. Ballmer looked like a maniac doing that "Developers, developers, developers!" thing, but the reality is the Microsoft's dev tools are the gold standard.
 
If I were hiring someone long term,. I'd rather they know how to do good OO in Scheme or some other rare language than be half clueless and "know" java or C#. Good OO knowledge can be used in any language. The language knowledge is not the hard part.
 
Back
Top