Java or C#, which is more necessary now and in the future? [closed]

Closed. It is impossible to give an objective answer to this question . Answers to it are not accepted at the moment. Closed 5 years ago. Blocked. This question and the answers to it are blocked, as it does not correspond to the topic of the site, but has historical significance. It is not allowed to publish responses or perform other actions.

I'm 17 years old. There was a choice. Either Java (android, cross-platform) or C# (wpf, windows phone). I threw the web right away - I tried it , I didn't like it. Experience with both platforms approximately the same (equally small) - it's just time to choose the direction. C# and dotnet are impressed by msdn documentation, studio, sharp's syntactic sugar, and active development. Java, in turn, is a more "correct" implementation of the platform (written under the old one-it runs on the new one), the simplicity of the language without unnecessary frills, and open source :) According to statistics, in Ukraine, both are in demand at about the same level. What is more often needed in a small town? What is better for the future? Who is easier will he settle down without experience? Who is more often taken to the remote? What is more necessary in freelancing? Share your observations. UPD: android + Java and desktop + C#. I think that it will go, then it is mine.

Author: Bringoff, 2013-10-19

7 answers

(I am an active supporter of C#, my opinion is biased.)

So, the pros .NET:

  • A good and fast-paced language. LINQ and async/await will be out of reach of other mainstream languages for a long time to come.
  • The Windows Phone platform is now growing, and it will need applications that are already available for iOS and Android. The market is not yet full, you can take a chance and win.
  • WPF is one of the few sane desktop GUI frameworks. Java is very strong in this regard lags behind.

Advantages of Java:

  • Android is still the most popular mobile os at the moment.
  • Enterprise is written mainly in Java.

As for cross-platform, it does not seem to me to be a decisive factor. Usually projects are written for a specific platform, especially if they are tied to the front-end.


By the way, where did you find the lack of backward compatibility in .NET?

 8
Author: VladD, 2013-10-19 13:16:09

Learn algorithms and OOP. And the choice of the platform is a matter of technique and personal preferences. Java has its holes, Sharpe has his. This is practically a holivar on this issue.

 11
Author: stackoverflow, 2013-10-19 13:28:07

Who is stronger than an elephant or a whale, to be honest, professionalism rules more than language, of course it is clear that the salary ceiling may be different for a programmer working in a particular language, but getting to the ceiling is not very fast and usually by that time the problem of switching from one language to another is reduced to a period of two to three weeks to a couple of months

 9
Author: zippp, 2013-10-19 12:56:24

Young man, you will first decide on the logic: then you are looking for something that is in demand, then you are looking for what you like (web tried not liked, Java or C# that is in demand...). The root lies there-in this logic. At your age, it seems to me that the logic of "like - dislike" is more important, and not "more necessary - not more necessary". For the simple reason that what you like and get better. In terms of money, both Sharp and Java are about the same plan. Java is more international than that, perhaps, but Sharpe it's a little bit bigger. Something like that.

From your opus, I see, by the way, that you like Java more than dot Net. So draw conclusions...

 6
Author: Barmaley, 2013-10-19 19:03:46

I am a C# developer, but I would advise the author to learn Java. Desktop applications are a dying field of development, everything is moving either to the web or to mobile applications.

 5
Author: Иван Навознов, 2013-10-20 06:39:33

C# for Windows is like Objective-C for Mac OS. C# is actively developed by Microsoft and does it very well, but applications written in C# will always work best on Windows. It's a kind of Windows-focused programming language, just like Objective-C for Mac OS. Simply, when choosing C#, you do not need to try to develop cross-platform applications (using all sorts of "Mono", etc.). And today, making a choice in the direction of C#, you will not lose. Well, then what today's programmer should know at least a couple of languages, I think it's not worth talking.

 1
Author: Adam Shakhabov, 2013-10-19 19:38:07

In Java, there are no structures, in the furnace of it.

Structures take up less memory space because they don't have a header describes the type of data, pointers to virtual method tables, and other fields required for synchronization and garbage collection.

Structures are stored in the stack (but in the heap, if an array). Memory allocation in a stack is very fast: a stack is a pre-allocated memory buffer, in which space is simply reserved according to the size of the structure (mainly at the stage of compilation) by decreasing the value in the stack pointer (decreasing, because the data in the stack is stored backwards). When the function completes its work ,the "release" of all variables in the stack occurs in one fell swoop by increasing the stack pointer by the number of bytes required for the variables. And allocating and freeing memory on the heap is a huge number of operations, as opposed to simple subtraction and summation.

Due to the fact that the structures are stored in the stack, they are not require garbage collection. This greatly offloads the garbage collector and eliminates the problem of memory fragmentation.

Structures whose fields are only value types, easy to serialize to an array bytes and back.

And the Java compiler does not optimize tail recursion

 -1
Author: wefwefgwe, 2013-11-07 21:30:21