views:

354

answers:

7

During my 4.5 years of experience in software development I have worked on .Net for 2.5 yrs then next 2 yrs on XUL/Javascript(Thunderbird addons development)....and my current employer needs me to work on JSP/Servlets(its a legacy application around 10 yrs old).

I would like to know if it would be a good idea to shift to Java or it would be better to stick to .Net(C#) which I have worked on for a major part of my career.

I would also like to add that I have never done web development before(of course would love to do web development). My .Net development experience was mainly in winforms technology.

Also a majority of developers today seem to be shifting from Java to .Net , so would it be a good decision to move the other way?

+8  A: 

Java and .NET isn't like apples and oranges. It's more like red apples and green apples. There's no reason you couldn't (or shouldn't) stay actively involved in both. Not that I dare speak his name in vain but take a guy like Jon Skeet for example. He's probably the most knowledgable .NET developer in the world yet he uses Java every day in his day job.

So bottom line... no I don't think you should switch.

Now whether or not you should take on a role maintaining a 10 year old legacy project is a whole other matter. :)

Josh Einstein
I like red apples over green apples, provided red apple is java
Rakesh Juyal
@Rakesh: Well, Washington state is world-renowed for their red apples, and it's home to Microsoft, so... ;-)
T.J. Crowder
A: 

I think a good switching may be .net To Ruby On the Rails.

Actually Java ( is a dead language, ofcource when you check it with .net which microsoft update it per 2 year )

Nasser Hadjloo
`java is dead` is it so Nasser?
Rakesh Juyal
*"Java is a dead language"* Now there's a statement based on...nothing whatsoever.
T.J. Crowder
let this not turn into a Java vs C# war....I came across this article which does discuss on Java's relevance today.... http://codemonkeyism.com/java-dead/
@sundeep: I have no interest in presenting Java and C# as either/or. They're both great languages. Neither of them is dead or dying. They're good for different things, and for a lot of the same things.
T.J. Crowder
+1. I don't think Java is dead or will be any time soon. But you won't learn much switching from Java to C# (or vice versa). They're just too similar. Better learn a completely different programming language like Ruby, Lisp, F# or Boo.
nikie
+2  A: 

I will recommend not stick to just one language. So if you are getting exposure of another language, be it java, ruby, .net, blah-blah then just take that. I would say it is better to be a JOAMAN Jack of All and Master of None.
Also it is just a matter of choice what you opt for. java is not bad .net is not worst.

P.S. : `Please don't take my answer as decisive.

Rakesh Juyal
+1 for the JOAMAN point :-)
missingfaktor
A: 

I would suggest that if it is short term work, you can choose any platform or domain regardless of your interest or current trend. In case of long term, definitely you should think over the current trend and stay on the platform which is valuable nowadays.

sankar
+2  A: 

It all depends on what you want to do. Java and C# are not too different from each other. Once you learn one, the other is easy.

It depends on how technology-agnostic you want to be. Sometimes being technology agnostic is a good thing ( I try to be technology agnostic myself )

You should probably give Ruby on Rails / Django a try if you are into web development. These frameworks are more developer friendly and dare I say less "enterprise-enough" so much so that they let you focus on the job at hand rather than writing tonnes of XML and stuff.

Manish Chakravarty
+4  A: 

"Should I switch from .Net to Java"

No. But should you add Java to your toolbelt? Quite possibly, yes, it depends on what you want to do next in your career. Java has a lot of reach. It's fantastic for server-side development (web and otherwise), great for "thick" desktop applications (with your choice of a couple of UI frameworks), terrific for embedded development, etc. (Side note: People tend to hear "Java" and think "Java applet". Applets are great, but with today's browsers I think the vast majority of purposes for which they used to be used are better served with JavaScript+DOM+XHR; the exception of course being media streaming and such where -- whether I like it or not, and I don't -- Flash seems to be the dominant force.)

Java provides an excellent environment with a huge array of both built-in and add-on functionality. The ecosystem is mature; if you have something you need to do, the odds are very, very high there's a Java library out there that does it. (Don't get me wrong, .Net's ecosystem has grown explosively, but Java had such a massive head start, I think .Net's still catching up.)

Java runs on every major operating system and quite a few minor ones. That's a huge plus compared with .Net's Windows-ness (with all due respect to the excellent work from the Mono folks, and indeed to Microsoft for working with the ECMA on specifications).

If you've been doing a lot of JavaScript work lately, you'll be glad to know that writing JavaScript (true JavaScript, not JScript) for the Java VM is trivially easy thanks to Rhino, and integration between Java code and JavaScript code is nearly transparent.

There are lots of IDE choices for Java development. The biggies are Eclipse (which is not just Java), NetBeans, and IntelliJ. I'm not dissing Visual Studio.Net at all, but I do like choice. (Edit: Speaking of choice, just ran across a VS.Net alternative IDE. I know nothing about it, but having just commented on IDE choice...)

All of which is by the bye if it's not applicable to what you're doing next. C# is an excellent, modern language that's learned from its predecessors and tried to go that next step further. The .Net platform is huge, well-supported by the community, and backed by the most influential software company in the world. It's a major force and if you stuck with just doing that, it's not like you'd have trouble finding work with those skills.

Languages are tools. Runtimes are tools. Should you switch from a screwdriver to a hammer? Depends, are you dealing with a screw or a nail? It's not an either/or. It can be a both/and if you like. That's my approach, anyway -- I happily work in both.

T.J. Crowder
A: 

"What kind of language do we use? We got both kinds - Java and C#!"

  • apologies to the Blues Brothers
kyoryu