I am 17 years old. I got a choice. Either Java (Android, Crosspolform), or C # (WPF, Windows Phone). Web dropped back immediately – I tried, did not like it. Experience with both platforms is about the same (equally small) – it came just the time to choose a direction. C # and dotnet impressed by MSDN documentation, studio, Sharpe Syntax Sugar and Active Development. Java in turn – more “correct” implementation of the platform (written under the old – launched on a new), simplicity of the tongue without unnecessary delights, anchorstess 🙂 according to statistics, in Ukraine, and the more in demand at about the same level. What is more often needed in a small city? What is better to perspective? Who makes it easier without experience? Who are more often taken to the remote? In the freelanse what more? Share your observations.
UPD: Android + Java and Desktop + C #. I think I will go, then mine.
Answer 1, Authority 100%
(I am an active supporter C #, my opinion is biased.)
So, Pluses .NET:
- Good and fast-growing language. LINQ and ASYNC / AWAIT will long be outside the reach of other mainstream languages.
- Windows Phone’s platform is now growing, there will be applications that are already under iOS and Android. The market is not filled yet, you can risk and win.
- WPF is one of the few imputed dextop GUI-frameworks. Java in this regard lags behind.
- Android is still the most popular mobile axis at the moment.
- Enterprise is written mainly on Java.
about cross-platform, it does not seem to me a decisive factor. Usually projects are written under a specific platform, especially if they are tied to the front end.
By the way, where did you find the absence of backward compatibility in .NET?
Answer 2, Authority 138%
teach algorithms and OOP. And the choice of platform is the case of technology and personal preferences.
Java has their own holes, Sharpe has their own. It is almost holivar on this issue.
Answer 3, Authority 112%
who is stronger elephant or whale, honestly professionalism taxis more than language, of course it is clear that the salary ceiling can be different for a programmer working on a particular language, but to get to the ceiling is not very fast and usually by that time the problem Transition from one language to another reduces the period from two to three weeks to a pair of months
Answer 4, Authority 75%
Young man, you first decide on logic: you are looking for something in demand, then you are looking for what you like (Web tried did not like, Java or C # what is demanding …). The root lies there – in this logic. At your age, it seems more important to me, all the same logic “Like – I do not like”, and not “more necessary – no more.” For the simple reason what I like and it turns out better. In terms of money and Sharpe and Java approximately one plan. Java is more lawsuit. Something like this.
From your opus, I see, by the way, that Java you like more Dot Net. So draw conclusions …
Answer 5, Authority 62%
I am a developer on C #, but would advise the author to learn Java.
Desktop applications are a dying development direction, everything goes either in Web or on mobile applications.
Answer 6, Authority 12%
C # for Windows is like Objective-C for Mac OS. C # actively develops Microsoft and does it very well and that do not say, but applications written on C # will always work better on Windows. This is a kind of programming language focused on Windows, like Objective-C for Mac OS. Just when choosing C #, you do not need to try to develop cross-platform applications (using all sorts of “mono”, etc.). And today, making the choice towards C #, how do you not lose. Well, the fact that today’s programmer should know at least a couple of languages, I think it is not worth it.
In Java there are no structures in the furnace of it.
structures take less space in
Memory, because they have no header
Describing the data type, pointers on
Tables of virtual methods, as well as
Other fields needed for
Synchronization and garbage assembly.
structures are stored in Stack (but in
Heap, if an array). Selecting memory B.
Stack happens very quickly: stack
– Pre-selected memory buffer, in
which is simply reserved
the size of the structure (mainly on
compilation stage) by reducing
Values in Stack Pointer (Reduction,
Because data in stack are stored
Back-up). When function
completes its work, then
“Liberation” of all variables in
stack happens one inha
Increase the stack pointer pointer on
The number of bytes required for
variables. And allocation and release
memory in a heap is a huge
Number of operations, unlike
Simple subtraction and summation.
due to the fact that the structures are stored in
Stack, they do not require garbage collection.
It strongly unloads garbage collector and
eliminates the problem of fragmentation
Structures whose fields are only Value
Types, easy to serialize in an array
Byte and back.
And the Java compiler does not optimize the tail recursion