In the first part of this series, we learned about mobile web application strategies and techniques like Responsive Web Design. Then, we took a look at how hybrid applications fit as a solution for mobile development. To finish the series we’ll be exploring Native application development.
Native app development can be summarized as creating an application to be used on a specific platform, including its associated devices and app store. Generally this is done to gain all of the benefits a platform has to offer, maximizing application performance and staying true to a platforms design language. Platform benefits and device-specific features are able to be used, since the target device is a known constant.
Choosing native means using APIs designed specifically for the platform can result in exceptional application performance. Developing for a native application also means designing for native. Because the UI components used in a native app are specific to that platform, they will look and behave like other apps built using that platform.
The benefits of working natively do come with a cost. Choosing to go native will require platform-specific software tooling, skills and even hardware. If the plan is to target multiple platforms then a specialized software development kit (SDK) and integrated development environment (IDE) will need to be used for each platform. Additionally, when developing for Apple iOS, Apple hardware is required for development as the software needed to build iOS apps, Xcode, is only available on Apple’s OS X operating system.
Image courtsey of Jim Pennucci
The following table lists the platforms and the associated development tools and languages.
Each SDK requires extensive knowledge of a particular set of programming languages, APIs and tooling. Because of the depth of knowledge necessary to produce a native application, a dedicated developer or team may be needed for each additional platform for which you intend to develop. In addition, separate code bases need to be maintained for each platform supported. To address this concern, the cross-platform native approach can be used.
Cross-platform native development aims to reduce the complexity of native app development by enabling code to be shared across platforms. Using this approach gives developers freedom from SDKs; write one code base and use native API code. Cross-platform native applications also use platform-specific design languages so the app is visually consistent with the platform.
To allow cross-platform UI development, NativeScript uses XML markup. The UI supports rich two-way data binding powered by Polymer expressions. The UI is written once and rendered to the appropriate design language of the destination platform. All UI elements can be selected using CSS selectors so style sheets have the ability to control the visual properties of an application.
For developers looking for an end-to-end mobile development solution, NativeScript deeply integrates with Telerik Platform. Telerik Platform contains everything needed to build an application from: project templates, prototyping, build and debug, back-end services, push notifications, deployment, feedback, analytics and more.
Telerik Platform also provides developers with choice, as each of these services can be used with the developer's favorite IDE. Telerik Platform allows for rapid application development and continuous deployment of mobile applications, without the need for additional hardware.
Xamarin is cross-platform native development software for teams who prefer to work in C# or F#. Xamarin is used to create native iOS, Android, Mac and Windows Phone apps with C# and F#. Xamarin enables app logic sharing across multiple platforms using Shared Projects or Portable Class Libraries (PCL). For app development, Xamarin has two offerings: Xamarin Wrappers and Xamarin.Forms. Of the two choices, Xamarin.Forms works across all three mobile app platforms, and is ideal for UI and code sharing.
Additional components are available in the Telerik UI for Xamarin. UI for Xamarin uses the Xamarin.Forms technology, which makes it possible for developers to build native iOS, Android and Windows Phone apps from a single shared C# code base as well as use their XAML skillset for the UI. Telerik currently offers three controls to speed up app development time: Chart, Calendar and ListView. Also, developers who wish to target only iOS or Android have the option of using our Xamarin Wrappers offering.
Native development, unaided by cross-platform development will have little to no code and skill reuse between platforms. Due to each platform having it’s own specific development methodologies, native development requires the widest variety of skill sets. This broad skill set will require multiple developers or teams to completely cover all app ecosystems.
NativeScript and Xamarin can greatly reduce development time by enabling developers to create apps for multiple platforms from a single code base. In addition, using NativeScript with Telerik Platform can provide an end-to-end development experience that greatly reduces the complexity of native development while staying true to the target platforms. When choosing a cross-platform solution, consider aligning the team's current development skills with those required by the solution.
The following resources can help your team get up to speed:
This was the final part of a series of blog posts on how to fast track your mobile development project. If you would like to review, you can jump back to the first part of this series where we learned about mobile web application strategies and techniques like Responsive Web Design. You can also find the second post, where we explored the fast track to hybrid app development.
Ed Charbeneau is a web enthusiast, speaker, writer, design admirer, and Developer Advocate for Telerik. He has designed and developed web based applications for business, manufacturing, systems integration as well as customer facing websites. Ed enjoys geeking out to cool new tech, brainstorming about future technology, and admiring great design. Ed's latest projects can be found on GitHub.