Best language for mobile apps

Started by
7 comments, last by mmakrzem 9 years, 4 months ago

So it's almost been a year since i started learning programming for the purpose of being a game developer. I started with python and then learned how to use pygame, i've been messing with it but soon i'll be ready to move on to the next language. My goal is to start making games to put up somewhere for anyone to play and i decided to go with mobile apps, more specifically start with android. I've heard the language for android apps is Java and for iOS it's C#. Is this correct? If i learned Java and made an app, would i need to learn C# to develop the same app for iOS? Please guide me in the proper direction.

Advertisement

Afaik, with mono (commercial licence I think?) you can use C# on both Android and iOS.

You can use Java(ish) on Android, and with RoboVM you can use it on iOS too.

You also have Objective-C and Swift for iOS.

"I AM ZE EMPRAH OPENGL 3.3 THE CORE, I DEMAND FROM THEE ZE SHADERZ AND MATRIXEZ"

My journals: dustArtemis ECS framework and Making a Terrain Generator

I was waiting for other replies, but i guess not many people know or cared to anwers the question since theres over 100 views but 1 reply LOL. Thx TheChubu, i think i'll jump into the mobile app development field through Java. Then i'll branch out of course.

I was waiting for other replies, but i guess not many people know or cared to anwers the question since theres over 100 views but 1 reply LOL. Thx TheChubu, i think i'll jump into the mobile app development field through Java. Then i'll branch out of course.

I think the Chubu basically answered your question 150%... there are just not that many options for systems that expect a certain language natively... which would be objective-C for iOS and java for Android.

The Chubu additionally gave you options to crosscompile from a language that is not "officially" supported to a platform that expects a different one, which is kinda a requirement for easy deplyoment to both leading mobile OSes.

No need to branch out and complicate your development when there is a tool that does the job for you.

So yeah, don't expect many more ideas to come up.

Other than "Unity does it for out of the Box"... but I guess you are not interested in this engine, else you wouldn't have asked the question to begin with (If the idea of using an engine itself is not so unappealing to you, know that most big engines followed suit and give you the same option now. I know Unreal does for a fact for example).

Well, one idea not presented is to use C++, as every major mobile platform has a Native SDK. And especially for mobile, maximizing your understanding of hardware, low-level programming, and efficiency will be beneficial to your users (better efficiency == better power usage == less battery brain) so at the very least if you're going to stick with C# or Java you need to start understanding how those languages work, what limitations they impose, and how you can best work with and around those limitations, rather than just trusting in the abstractions to magically do the right thing (they often won't when it comes to efficiency).

Sean Middleditch – Game Systems Engineer – Join my team!

I also recommed C++ because Java, and C# (and to some extent Obj-C) are largely the same once you know them (and if you choose to not take advantage of any of C++'s most powerful features). C++ however is although a second class supported language on most mobile platforms, it is still a "supported" language so you can generally port your game to any platform with maximum code reuse.

Unfortunately since C++ is not a first class supported language for most mobile platforms, the API documentation is often terrible.

http://tinyurl.com/shewonyay - Thanks so much for those who voted on my GF's Competition Cosplay Entry for Cosplayzine. She won! I owe you all beers :)

Mutiny - Open-source C++ Unity re-implementation.
Defile of Eden 2 - FreeBSD and OpenBSD binaries of our latest game.

I think i'll go for Java in a month or two and i didn't mention Unity or any other API because i don't know much about APIs out there; sort of why i asked for some guidance. When i started programming i was told to start with Python because it's easy and can be quite useful and to use Pygame after i got Python down to learn about GUI programs etc. So i should look into Unity for mobile apps?

C++ is well-supported on all* mobile platforms, and is portable for the most part. However, its a relatively difficult language compared to C# or Java -- that is, average reasonable quality code is easier to produce in C# or Java than it is in C++ -- The potential benefit of C++ is that you can really tune performance to the utmost if you have the skills and knowledge to do so, the potential cost is that C++ does none of the hand-holding that C# or Java do, and therefore requires greater knowledge and attention to detail to write bulletproof code.

* AFAIK, the only relevant mobile platform not open to C++ for non-professional development is the PS Vita -- while professionals use C++ there, non-professionals are limited to C#.

If you're interested in games specifically, Unity is a great choice. Visual Studio 2013 Community is a free version of Visual Studio (unrestricted for academic and open-source; and restricted for commercial teams to fewer than 5 devs) that supports plugins, including the excellent Visual Studio Tools for Unity, also free, which integrates Visual Studio as the code editor for Unity. Unity's primary programming language is C# (about 2/3rds), followed by UnityScript (JavaScript-like, about 1/3rd), and Boo taking up the rear with so little use its deprecated now.

Otherwise, for apps outside of games, Visual Studio again shows strongly using Xamarin with C# to produce apps that run on all the major mobile and desktop platforms with little platform-specific code. You can use Xamarin from other IDEs, but VS has great integration.

Between Java and C#, C# is the nicer language, but if you're already familiar with Java much beyond the basics, a switch is probably not the best way to spend your time and effort now.

throw table_exception("(? ???)? ? ???");

Have a look at the Marmalade SDK: https://www.madewithmarmalade.com/products/marmalade-sdk

It is now free and lets you program in C++ and then distribute across a number of mobile platforms.

This topic is closed to new replies.

Advertisement