6 Top Programming Languages For Mobile Development
Enterprise IT shops and software publishers alike are moving every possible application to run on tablets, smartphones, and even smartwatches. Behind that set of decisions, though, is a huge question: How do you make it happen?
There are two broad paths that can be taken. One path has the Web browser as its destination. The idea is simple: Write once for a Web browser and you don't have to develop a separate application for each platform. Of course, developers know that reality isn't nearly as simple as the idea, but programmers can still write versions of an application for many different platforms using a single language and many pieces of re-usable code.
The question, then becomes which single language to use -- and how to make the various pieces of the Web app puzzle come together.
The other path arrives at a dedicated app for each mobile device. There are obvious costs associated with developing a separate app for each platform, but there are advantages, as well. One of the most important is that performance of a dedicated app will almost certainly be better than the performance of an app that has to run through a browser for everything that happens.
Another advantage is that there are simply things that can't be done in a Web browser -- working with other apps, storing and retrieving files from particular locations, and direct control of device hardware among them -- that are possible with a dedicated app.
So the battle rages between those who see a world of apps and those who see the end of apps. Whichever path you choose, business needs will require that the development be done as efficiently and effectively as possible.
Which languages promise both these qualities? Let's take a look at the most popular options available today and see which might work the best for your situation.
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 source this 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#.
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?