With sales of smartphones and tablets growing at exponential rates, third-party and corporate developers are looking for ways to not only create new applications for these devices, but also port legacy applications over.
But porting applications and, as importantly, properly scaling legacy apps to work on these new platforms is easier said than done. There are a number of technical factors to take into consideration before developers can even begin that process. We talked to Bob Duffy, the community manager for the Intel AppUp Developer Program, about what some of those technical factors are and what advice he has for those developers who commit to such projects.
Q. What is the most import thing for developers to keep in mind when porting legacy desktop apps to mobile devices?
Bob Duffy: First, you must understand what the capabilities are of the device you are porting to. Once you understand technically what it can do, you can scale the experience you want for that device. It may be more a user-experience challenge than an engineering one. Mobile app developers have an advantage over the legacy software developer when it comes to designing apps that work well for mobile devices, as they have more experience and more of a focus on the mobile use-case experience.
Q. Are there enough adequate tools available to get this sort of job done, or are they still lacking?
B.D.: The tools have a way to go, to be honest. I think there are tools that are well-designed for very specific platforms or languages, but you aren’t seeing the tools that make it easy to scale down an application for a particular form factor. Some development languages are getting better. You are seeing advances in things like HTML5 that allow you to auto-build your experience based on the screen size of the device.
Q. Once legacy apps are ported over, how big of a problem is it to get them to scale well on mobile devices?
B.D.: Legacy application developers have an advantage in this regard, compared to mobile-applications developers. If you are accustomed to developing applications on low-end Pentium-based computers all the way to a core i7, they [legacy developers] know how to scale that type of application across the spectrum of hardware. But they don’t think about mobile users and how they are in and out of applications quickly. So the challenge for the application developers is now thinking about your software as sort of a utility application.
Q. What sorts of improvements are most needed in these tools?
B.D.: If you are looking at an IDE or SDK for a mobile platform, developers should look at ways to emulate applications across different devices. They should look for ways to write their code once and then get it packaged and compiled for each different form factor. If developers are going from a 4-inch device to a 10-inch, to a 60-inch TV for their applications, they need to consider what core-based templates they need for the UI that they can easily code to.
Q. What can Intel and AMD do at the chip level to make it easier for developers to port and scale applications down to mobile devices?
B.D.: We can make things like threading applications easier. Increasingly we are seeing multicore chips on desktops and mobile devices. At the recent Intel Developer Forum show, Intel Chief Technology Officer Justin Rattner talked about the coming of 50-plus core microprocessors. So if developers are creating their applications in serial, it will be like having 50-lane freeways but only allowing one car on them at a time. We need to build better tools and instruction sets so they can move over to parallel programming. It will be up to the developers to figure out how they are going to build applications that run executions across 50 cores at once to take advantage of this.
Q. Is there much interest among developers to migrate their mobile phone applications to tablets, or is it more the other way around?
B.D.: It is pulling in both directions. For a while you had a number of mobile developers happily developing for phones and tablets that had similar architectures. But those same developers are now thinking, “If I have my apps on a phone and a tablet, why wouldn’t I want them on a laptop, or TV, or in an in-vehicle infotainment (IVI) system?” Those developers are already scaling and migrating their applications. They are coming to us every day for advice on how to port them across platforms and get better performance.
Q. Are there any problems porting phone and tablet apps in terms of API support? Will vendors have to come up with a different set of APIs for each platform?
B.D.: That is an issue when you are looking within one platform or OS. If I am using a bunch of iOS libraries, I am pretty cool going from the iPhone to the iPad. But if I want to go from an iPhone to a Samsung Galaxy tablet, I have to consider that I might be tied to those Apple libraries.
Developers are now thinking more about how to use standards in developing applications so they can manage a core code base and set of APIs that allow them to move from one platform to the next, from one form factor to the next.
Q. How attractive is it for developers to use emulation layers to move applications among different platforms and form factors?
B.D.: It is super-attractive. Developers generally work in one, maybe two host development environments. It’s important to them to develop in one environment and virtually test their app on other platforms and form factors. There are hosted emulation services that allow you to see your app run on iPhone, Android tablets, and netbooks, which is very valuable. And per getting your apps complied for many devices, one company we work with created its own kit that allows you to write once and build for iOS Samsung, and build for iOS, Bada, Windows 7, MeeGo, and eventually Android. Its kit, along with an interpreter, allows you to write to one set of APIs and then the kit and interpreter allow the application to work on all the other platforms.
Q. How difficult is it to get a mobile or legacy application to work with your mobile processor, the Intel Atom processor, and the ARM-based processor?
B.D.: That is going to happen in the development environment with the kits used to compile the application. That is where the magic happens for the architecture you are coding for. So you want to make sure you are using the right tools that can help you take advantage of various architectures. One good example here is the Android NDK from Intel, which will allow you to write native Android apps for i86 based hardware. The Opera browser by Opera software was something we saw recently using the NDK which is fully taking advantage of i86 on Android. There’s also game tools like Unity or App Game Kit, which I mentioned earlier, that are making it simple to write once for many devices, platforms and architectures. So the tools are getting better, allowing the cross platform mobile developers and legacy software developers to focus on writing a good apps, and to then consider the architecture differences as needed.