Java or C# career and future of programming

Started by
21 comments, last by dilyan_rusev 11 years, 8 months ago

I want to start back programming again, study hard and get a job later on I am really serious about this and I have all my time for the next year, I may study 10hr's -15hr's a day etc ( am not joking ) I already did some C++ 10 year's ago as a hobby and I remember most of the concept like pointers and others memory stuff's etc here is my question please help me...

Should I learn Java or C# today in 2012 ??


I need advices because I talked with some experienced programmers and some told me to go with C# others with Java because it's "safer" in the long run because it support android dev. bigger on mobile and more cross platform ... they told me .Net is at a crossroads with Windows 8 releasing soon with Metro Apps dev. who can be created with many languages C++ C# etc but if you want just html5 and javascript etc they said too that xaml could die because that markup could be replaced by Html5 ...

some others told me to go to C# because I have a good networking and system admin. knowledge ( domains, dns, dhcp, active directory, exchange, sharepoint etc ) so they said that C# is a better fit because everything will work together better and I'll be more marketable... but in a way I'll also be "lock-in" with 1 vendor only Microsoft etc and since they aren't big on Mobile yet they worry .... most of them told me mono was great but not a real alternative to java on mobile and cross platform so I need advices

Thank you very much don't be affraid to go deep in your answers I need it

Tyffa

Advertisement
Actually C# is now cross platform. Take a look at the mono-project. They've made an open source cross platform implementation of the .net CLI. Mac, windows, linux and I think sparc and BSD are supported. They also offer 2 proprietary ports of it to android (monodroid) and iOS (monotouch), these cost $399 per year each though.

I don't think theres really any advantage of java over C# or vice versa, both are pretty equal languages now. I do think visual studio is probably the best IDE I've come across for anything so far though.

Is there any reason why you aren't continuing with C++. Android, iOS and windows phone 8 all support it.
It doesn't matter which language you learn now. Programming is about implementing algorithms. That's the skill you need to be developing. So just pick whichever language you want now, learn how to use it, and get some experience by making progressively more complex programs. That's how you develop your skill as a programmer. Later on, you'll be able to become proficient in other languages more quickly.
15 hours avaiable... Java or C#?
Easy answer, 7.5 hours a day of C# and 7.5 hours of Java.. interview .. job .. profit.

You could also try to find some C++ audio book and keep it going while you sleep.

Stefano Casillo
TWITTER: [twitter]KunosStefano[/twitter]
AssettoCorsa - netKar PRO - Kunos Simulazioni

You are quite safe with either choise.

Being limited to Windows only is not a problem, since most PCs are Windows anyway.

On the other hand, phone and tablet sales are getting bigger and will eventually outsell the desktop + laptop market, if they haven't already.

Which doesn't matter shit, as the platforms get closer and close together. With Windows 8 you will be able to program for all of the major platforms in C++, which means it's just a matter of time before somebody ports their favourite language. Xamarin let you program in C#/NET for Android, iOS, Mac and OS X, but you have to pay them a lisense.

You should consider salaries as well. Since it's more difficult to program in Java (since it's older technology and can't just introduce radical new stuff - for backwards compatibility), Java programmers tend to have higher salaries, but there seem to be more .NET jobs.

My personal preference is .NET, but you can't go wrong either way. Neither is going away anytime soon.
Yeah but the thing with Java that worry me is the lack of UI and windows support I mean you can do mostly everything C# can do and all that with springs and the others librairies but it seem C# is just better for UI/desktop apps on windows and Visual Studio is just night and days ahead of Eclipse and Netbeans from what I heard is that true ???

the other thing is with Java I will be coding/maintaining mostly what ? backend server code ?? I heard Java isn't used much for desktop apps and more for legacy theses days but what interest me a lot is it's potential with android and the cross platform

any great books you guys recommend to start learning C# 4.0 ???
C++ ftw.

Then you will understand Java and dominate C#.

Visual Studio is just night and days ahead of Eclipse and Netbeans from what I heard is that true ???

Which IDE is best is normally a matter of opinion. Personally I've installed eclipse and couldn't make head or tales of it (was going to use a python plugin), I've only used netbeans for HTML/CSS and it seemed alright for that but not tried it for programming.
Visual studio is probably one of the best things microsoft has come up with, it is an excellent IDE its just a bit expensive for the full version, for most purposes though the express versions will be fine.
For UI, and desktop integration, .NET is the go, no argument there.

However, there are a few projects in the Java world that I'd look at with great interest. First, there is XML-based SWT, being developed for eclipse. It is called XWT. The other thing is JavaFX, but it's quite new and I don't know if anybody uses it. Right now, C# offers the best experience for writing Windows Desktop applications, as it integrates nicely with COM and can invoke native code.

Now, since most people here probably haven't worked on bigger projects with both VS and Eclipse, their opinion will be mostly based on what they've used on a daily basis. Simply put, comparing VS against any other IDE that I've used (I haven't X-Code), VS simply pwns in the debugging department, so far as .NET is concerned. There simply isn't any basis for comparison. VS debugging in C/C++ is inferior, but it has greatly improved in the last version (2010).

Code completion and template-completion without plugins is somewhat on par with eclipse. I don't know anybody that works professionally on .NET without plugins like ReSharper, JustCode or CodeRush. Anyhow, vanilla code-completion in eclipse for Java vs in VS for .NET is on par.

Coding experience is eclipse for java is superior (without plugins). You've got all sorts of navigation (VS only got ctrl+, in 2010), and the shortcuts for equivalent navigations are more convenient in eclipse than in VS. Compare alt + left arrow and alt + right arrow for navigating to the previous editing point, vs ctrl + - and ctrl + shift + - (if you've got multiple keyboard layouts, this might conflict with the layout switching shortcut). Most of the default keyboard shortcuts in VS (no plugins) suck (who the fuck thought to make Ctrl + e, Ctrl + C commenting in c# profile? vs ctrl + / in eclipse). Sure, you can reconfigure everything, but the default sucks. And why isn't GhostDocpart of the built-in VS functionality?

Now, VS + plugins for .NET is unparallelled. Extensions provide easier navigation, smarter templates, and tons of refactoring. The thing you are most likely to use the most in a big codebase are the navigation features. There are some clunky attempts for free extensions that provide basic navigation in VS, but they are nothing compared to the commercial offerings. Most of what these plugins offer in VS can be found in Eclipse for Java with the default installation, but the features are clunky and half-finished. Take navigation, for example: you can navigate to resources (understand: files/projects), but you have to put every letter in the right order (implemented as string.startsWith). You can search with all caps (i.e. for abbreviations - if you want to go to MyBigCaseClass, you can type MBCC), but guess what: you can only enter them in order.

So far as refactoring goes, you've got everything in eclipse, but they've managed to make the menus overcrowded and confusing. For the time that you'll spend finding what you need in the menus, you'll refactor the code by hand. Both IDE-s have "quick-fix-on-the-spot" functionality (in VS something like alt-shift-f10 IIRC, and in eclipse ctrl+1), which is nice.

For graphical designers - I haven't used one in eclipse. There is supposed to be one built-in for Swing and SWT, but it doesn't launch automatically or in any way obvious, so I've never tried it. In VS, the WinForms designer is legendary. It works. The XAML designer is very fragile, and I haven't seen production code that doesn't break it. Sure, you don't need a designer for XAML as it is very easy, but still. Now computers are more powerful and you won't notice it, but the XAML designer is terribly inefficient, and it used to bog down dev machines at work. The ASP.NET designer is slow, and might as well work, but I've almost never used it, as I worked on stuff that can't be handled by it. But my scenario was quite rare (unless you do a CMS or something bigger, and probably not even then).

For the types of work - I've only worked professionally with .NET. My experience with Java is mostly doing my MSc dissertation - an IDE based on Eclipse for an in-house language. In .NET most of the jobs are about building trivial web sites or supporting some internal network. For Java - my friends work at Cisco, banks, SAP Labs, etc - big corporations, where you mainly support Indian code and gems (no offense meant). Sure, you can do apps for Android, but those tend to be start-ups and small firms. It can be risky, as the competition is fierce and there is no guarantee your app/game will sell in the sea that is Android Market.

If, by some chance you want to go the academic route, Java is perhaps your only choice besides C++. At least here in the UK there seems to be some irrational dislike of Microsoft, bordering on hatred. As if there isn't any greater pleasure in life than bashing Microsoft. You will hardly find any academic paper that uses anything other than Java, unless performance is important (c++), or, in some rare conditions in AI, prolog (although they rewrite it in Java/C++ for performance). Some papers might touch Ada, but those are usually around reports for failure in NASA and other US-government-financed (since they are in public domain), very old, projects.
I program in C++, C# and Java for different reasons, pick one based on what your trying to achieve long term and the other languages should fall into place when you attempt to tackle them as they are pretty similar.

I am a big sideline supporter of the mono project, decent cross platform C# and .NET would be amazing, considering Java's biggest strength over C# is the ability to "Write once, run anywhere" if you could say the same thing about C# think about what this would mean.
A big blow to the gut for me was Xamarins choice to distribute the MonoDroid and MonoTouch projects as proprietary software for an outrageous price (if you ask me), but I guess you can't have your cake and eat it too.

This topic is closed to new replies.

Advertisement