If you want to build a Web-fronted app for mobile devices, the one near-certainty is HTML5. The eventual standard will make various data types simple to insert, rationalize input parameters, level the browser playing field, account for different screen sizes, and probably freshen your breath and give you lush, manageable hair. Eventually.
The problem is that HTML5 is still a proposed standard that is currently supported in a lot of different ways by a lot of different browsers. It’s certainly possible to write HTML5 Web pages now, and many people are doing just that. They just have to know that there might be slight tweaks in the language in months to come and more substantial changes in the way browsers handle HTML5.
From a cost and efficiency standpoint HTML5 has the advantage of building on the current version of HTML so the learning curve is much shallower than that for a completely new language. If you can cope with a bit of uncertainty and want to walk the browser-based path, HTML5 is an obvious choice for a primary language.
Java is an object-oriented programming language developed at Sun Microsystems. It is now owned, along with the rest of Sun Microsystems, by Oracle. It is, by most accounts, one of the most frequently used programming languages around, so the skills are available in many individuals offering their services to enterprises. That's very good news.
More good news comes from a performance standpoint. Java is a compiled language that can be run in two different ways: either in a browser window or in a virtual machine that doesn't require a browser. That flexibility tends to mean a lot when it comes to re-using code and updating software.
If you're looking at Android as your primary platform you’re almost certainly going to look at Java. If iOS is your main target, you probably won't be doing Java-first development. And if you want to develop a common code base that runs across many different platforms, then Java should certainly be on your list of finalists.
When you need to get down and dirty for apps on platforms like Android and Windows, then C++ can be the answer to your object-oriented dreams. At this point, C++ has been used to develop apps for virtually every purpose on pretty much every platform that exists. Programming skills are widely available and the language is a well-known quantity. It's not trendy or ultra-modern -- it's been around much longer than smartphones -- but for low-level programming it's still the go-to language on platforms that aren't fruit-themed.
While most of the world was developing software using C++, Apple went with Objective C as its primary programming language. Like C++, Objective C is a C-language superset. It does many of the same things for C that C++ does, though it has a number of functions that specifically deal with graphics, I/O, and display functions. Objective-C is part of the Apple development framework and is fully integrated into all iOS and MacOS frameworks. It is in the process, though, of being replaced in the Apple ecosystem -- by Swift.
Apple's latest APIs are Cocoa and Cocoa Touch. The language to write code for them is Swift. According to Apple, Swift is written to work along with Objective-C, though it's obvious that the company intends for many developers to turn to Swift for complete programming. Among other things, Swift has been designed to eliminate the possibility for many of the security vulnerabilities possible with Objective-C. If you're now beginning the process of writing iOS apps, then Swift should be your starting point. If you've been developing apps for iOS, then it’s time to start training your developers on Swift.
As an additional justification for Swift, at WWDC 2015 Apple announced that Swift will be going open sourcethis fall. That's bound to increase the number of people willing to work with Swift and increase the number of projects for which Swift becomes the primary development language.
C# plays the role in the Microsoft universe that Objective-C plays in the Apple cosmos: It's an expansion of C that directly addresses many of the unique features of the environment. The Windows
Mobile platform hasn't been the market-changer that many had predicted (and hoped), but there's no denying the gravitational pull of Windows across multiple platforms. If your fleet of mobile devices includes Windows then your suite of development languages should include C#.
Which To Choose?
So which language is the "best" for mobile development? As with so many other topics in the software development world, the best answer is "it depends." If you want to do native development on iOS, your hand is forced. If you want to build an app with a browser front-end, have rich media as part of the experience, and would like to have your app relatively future-proofed, then there's only one real choice. For everything else, you'll have to look at the experience in your staff, the needs of your users, and the budget for the project.
People tend to be invested in languages and systems. Which would you choose? Where have you made your mobile development investment? I'd love to hear what you have to say.