Cross-Platform Mobile Development (All Wrapped Up)
A narrative on mobile development trends
Fortunately, at ComponentOne, we’re always focused on cutting-edge development trends and technologies. Many developers and program managers are stuck working with legacy technologies, while the rest of the world is evolving at a rapid pace. As a provider of software development tools, we have the freedom to explore every new avenue and innovation, while continuing to improve our support for existing platforms. Our portfolio continues to grow, supporting technologies new and old. In my previous blog post you may have read that, with the advent of Xuni, our ecosystem will expand to include native mobile development, marking a new and exciting era for ComponentOne. Like many organizations, for a Microsoft-centered company like ComponentOne, it’s a new frontier. Not so long ago, Microsoft Windows was the central focus for software developers. Mobile consumerization has shifted the focus towards Enterprise Mobility and BYOD. Organizations moving certain aspects of their business to mobile has become common practice. Like consumers, employers have come to realize that mobile applications provide their employees with a flexible, cost effective alternative that improves usability and productivity. Enterprises are now either replacing or supplementing their internal apps with mobile-friendly solutions. Overtime, Windows desktop development will become a business focused platform for individuals who need to complete work related tasks and developers will continue to use it for the foreseeable future. In a bygone era, when everyone was using Windows for everything work-related, development decisions were easy. Develop for Windows. Every employee at every company only needed and wanted a Windows PC. Sure, there was some argument for Mac or Linux, but even to this day, Windows desktop users still outnumber Mac and Linux users 9 to 1 (source). With businesses now embracing mobile development, decisions aren’t as easy. Google’s Android platform and Apple’s iOS hold a substantial amount of market share, with Windows Phone becoming a part of the conversation as well. When you take a global look at these platforms, there is no clear winner. Different tooling aside, Android apps are written in Java, iOS in Objective C/Swift and Windows Phone in C#. There is almost nothing in common among the three platforms. So which mobile platform do enterprises develop for and what tooling should they use? The answer is easy, but first, let’s rationalize the options.
Option 1: Develop for a single mobile platform.
The positive here is that it’s just like when we developed for the desktop and we only supported Windows. It’s easy because we don’t have to change our processes, just our tools. The negative is that you have to force users to all conform to one mobile operating system. Do you have that amount of power to force everyone to use the same phone? Or enough money to buy everyone a work device? Even if you do, which OS do you choose? You could argue Android since it has more global market share. If you’re selling your app you could argue iOS since its users are more likely to spend money. If you can’t decide on just one platform then it’s on to option 2.
Option 2: Develop for multiple mobile platforms.
The positive here is that you can reach more users while letting them choose their own device. The biggest drawback, however, is that now you’ve either doubled or tripled your development staff, or you’ve cut your development time in half (roughly speaking, of course). Imagine taking your development roadmap and cutting it in half. When you develop everything twice, it takes twice as long. Many app developers don’t support Windows Phone because it takes (again, roughly) just as long to develop for it as Android and iOS, but only yields a fraction of potential users. Mathematically speaking that usually computes to a loss for the developer.
Option 3: Develop once for all mobile platforms.
Yes, you read it correctly. Single-source, Cross-platform development is an option. And sub-options exist within this option- it’s incredible. One of those options is to develop a mobile Web app. By developing a responsive Web app, you not only reach every mobile user, but you simultaneously reach desktop users as well. You might think that Web development is limited by what HTML and JavaScript can do, but you would be sorely mistaken. HTML and JavaScript have come very far in the past few years and will continue to grow. There’s very little you can’t do on the Web.
Go Native
The one thing you can’t do with a Web app is create a truly native experience. Maybe someday, but currently Web apps run in the browser, and by doing so, run into performance and security concerns. Also, Web apps are styled by CSS, so you have to provide multiple styles for your app to make it appear as native. By native app, I mean one written in the operating system’s host language (Java for Android, Objective C /Swift for iOS, etc.). Native apps are generally preferred by users because they integrate more intimately with the device, have direct access to the hardware, and can match the style of the system by default. Most importantly, native apps offer the best performance and are preferred because they offer better experiences. If you use a smart phone then you probably agree. Historically, if you wanted a cross-platform mobile solution where you develop just once, the answer was to create a Web app. However, within the past few years, new solutions have arrived. Xamarin is leading this wave of one-and-done, native mobile solutions - especially in the enterprise space that has, up until recently, devoted most of its attention towards Windows development. Windows desktop apps have been primarily written in C# since the dawn of .NET over 10 years ago. Later came XAML, the markup language for defining user interfaces for Windows apps (WPF, WinRT). Xamarin, and Xamarin.Forms specifically, allows enterprise developers to leverage the skills that they know and apply them to cross-platform mobile development. With Xamarin.Forms, you can write once in C#/XAML and build native mobile apps for Android, iOS, and Windows Phone. So which option wins? If you’ve been reading along, it’s Option 3 by a landslide. However, within Option 3, we have two sub-options: Web apps and native apps with Xamarin. Which is superior? This depends on your specific needs, with many enterprise organizations opting for both. ComponentOne is a leader in the Microsoft Visual Studio component industry and a Gold partner of Microsoft, so we provide controls for all platforms. We have Wijmo for Web development, Xuni for native mobile development, and we’ve built our business from the ground up on our Windows stack of tools for .NET development in Studio Enterprise. The answer is, there is no winner among mobile Web, mobile native, and desktop development. Each has their needs in the enterprise. There will be, for a long time to come, many reasons to support desktop development even as the trend moves toward mobile and native mobile development. The prize goes to decision makers who deliver the right apps to the right users. With Xamarin and ComponentOne Ultimate, we have you covered. In 2015, ComponentOne Ultimate will include UI controls for building better Windows Desktop Apps, Web Apps, and Native, Cross-platform Mobile Apps. We have cross-platform development all wrapped up.