Well, I've been developing enough on both languages and in my opinion to say that they are basically the same is very wrong on many levels, yes they share some similarities in symtax but the way they work is different, the envrionment is different, their language philosophy is very different so I dunno why they "basically" the same but each person entitled to his own opinion.
Just to give an analogy here just because English uses Latin letters doesn't mean it's Latin.
Really? Okay, I guess this is really a matter of the viewpoint.
It doesn't really hits the topic now but:
I mean both are braced languages, pure object orientated, have the same syntax and most importantly even architecture, are class based and type safe both use a VM and a GC. Sure there are technical differences under the hood but (besides pointers in C#) I personally see no difference when developing in C# or in Java. I mean it is not just the same letters, it is more like both speak the same language but you speak to another person
Differences: Java is cross platform (besides iOS) <-> C# has access to all other .Net languages
When I was asked a year ago to use C# now instead of Java for the project (mostly because the new bureau doesn't had Eclipse back then but only VisualStudio) I just took the C# documentation and VisualStudio and began using C# without even learning me in as much as I did when I switched from C++ to Java but I can see that it is more difficult to switch from C# to Java as Java is a little bit more limited in its overall architectural design and it depends how specific you get.
For me as a developer it never made a difference.
>>> From the Unity FAQ <<<
Can I make commercial games/content with Unity Personal Edition?
Yes, if you meet the requirements to use Unity Personal Edition, mainly, that you did not earn/receive more than $100,000 in revenue/funding in the last fiscal year. Please refer to our Software License Agreement for further information.
https://unity3d.com/unity/faq think you're overreacting here, aren't you? you keep on saying that it's worst option, I get it but is it really that bad?
I personally use C++ often for plain algorithms which mostly do not exceed the use of operators and bind those functions to my language of use which works totally fine. The reason for that is mostly RAM because RAM is very limited on Android and Java is RAM-heavy.
However there are some problems involved, it starts with getting into C++ development in the first place (Note: I haven't tested the new VisualStudio for Android development yet!) because you can't just start writing an app in C++ like you are used to on any other OS.
It starts with setting up an IDE.
> With Java you download the AndroidStudio package, install it and you are ready to go.
> AndroidStudio doesn't support C++ (/the Android NDK) so you have to download a capable Java IDE (you are going to need Java), the Java Dev Kit, the Android SDK and the Android NDK and install them manually. The Android NDK is not really supported by Google and setting the latter one up gets a bit frustrating
Before downloading the NDK, you should understand that the NDK will not benefit most apps. As a developer, you need to balance its benefits against its drawbacks. Notably, using native code on Android generally does not result in a noticable performance improvement, but it always increases your app complexity. In general, you should only use the NDK if it is essential to your app—never because you simply prefer to program in C/C++. When examining whether or not you should develop in native code, think about your requirements and see if the Android framework APIs provide the functionality that you need.
https://developer.android.com/tools/sdk/ndk/index.htmlWhich also explains why it is the very last point on the Android website just one point above deprecated methods.
Then the OS interfaces (not meant as Java/C# interfaces) are all written in Java. To write an app in C++ you need to either use the native platform OS-interfaces which are more limited in functionality and sometimes a little bit more difficult to use (mostly a C++ thing) then their Java counterparts or bind the Java files to C++ manually. Which is in generell more work because Android doesn't give you a lot of libraries and when using third party libraries you always have to check they are in no way platform dependent or you can forget it or that they work at all for the wierdest reasons you have ever seen.
And let's not forget that some manufacturers thought it would be a good idea to leave out some all-day basic functions. Remember that in the Android market there are a lot of cheap-devices with negligible support by the manfuacturer which will always cause trouble while on the iOS market there is just Apple and just a few different devices.
When thinking about this topic I remember an example in my office two weeks ago when one of the coworkers asked us for help with his bricked device (he used C++ with cocos2D-X). For some reason the phone started with a full RAM and crashed immeadiatly with a fatal error. I don't know how this is even possible, I mean the RAM should clear when it isn't powered anymore... I can only assume the manfuacturer used NVRAM in his phone?, seriously on the Android market a lot of terrible stuff is happening so I see no reason why they wouldn't.
That is why I consider C++ as a terrible language for Android development. It works and it can be done. Using engines like Unity or Cocos2D-X is your best bet then.
Here are some more perspectives about this topic
Gamedev.net - Can you write mobile games in C++?