Expertise
Home / Expertise
Cross-Platform Development
Looking for Cross-Platform Development? Give us a call.

Cross-platform development involves the creation of a single program which operates on multiple operating systems, typically including Windows, Linux and Mac.

Introduction

With the growth of Linux and the resurgence in popularity of the Mac, software product developers are coming under increasing pressure to deliver versions of their products for these additional platforms.

Blueberry’s primary expertise lies in Windows development, but we have recently become involved in a significant C++ cross-platform product development, which required us to gain skills in this complex area.

This page presents an introduction to cross-platform development which we hope might be useful to some potential customers.

Platform Specifics

Before looking at the options available for cross-platform development, it’s worth taking a quick look at how normal applications are developed for the main platforms:

WindowsMost installed applications are developed in C++ or .NET, and typically have large dependencies on Microsoft libraries and usually some third-party components. GUI is delivered via Microsoft APIs.
MacMost installed applications are developed in Objective-C and use the Mac’s built in Cocoa library for GUI. The Mac OS is a version of Unix, but it’s quite heavily customised.
LinuxMost installed applications are developed using GCC, and use one of the two major X-Window based systems - GNU or KDE to manage the GUI parts of the application. Many applications are delivered to users as a source code. Otherwise, they are packaged into distribution-specific "packages", one for each of the 5 or 6 major distros.

From this description, the scale of the challenge of cross-platform development becomes clear: each of the three major OSes has a completely different development process. Each uses a completely different approach to deliver the user interface.

Cross-Platform Development Options

The simplest way to deliver business applications to users on all three major OSes is to create a web-based system and use plain HTML. But plain HTML site construction does not lend itself to the production of good-looking and interactive user-interfaces demanded by today's users.

There are a few ways to improve on plain HTML, as follows:

HTML AjaxImplementing an application as a plain web-site is the simple option – it’s easy to make this work on all platforms. With AJAX (used to make web-sites more interactive) it becomes trickier – and more testing is required, but it’s quite possible.
FlashFlash is supported by all major OSes, and delivers very good cross-platform compatibility – a Flash app that works on one OS generally works on all. However, Flash programming is specialised, and many developers do not have the skills. It is rare to see major business apps developed in Flash, probably because it’s too difficult.
SilverLightThis new MS technology may make the delivery of cross-platform business applications over the web considerably easier. At the launch of SilverLight V2, Macintosh support seemed strong, but Linux support was not available.
But in many situations, a web-based solution isn’t acceptable. The following are the main options for cross-platform development of installed programs:
AIRAIR is a new technology from Adobe that allows web-applications to be deployed as installed clients on all three platforms. The application needs to be constructed using standard web tools, specifically HTML, JavaScript, Flash and Flex (Adobe’s own web-dev tool). The benefit of AIR is that it appears to deliver reliable cross-platform deployment. The downside is that the runtime is relative large, and the resulting application still has the look and feel of a web-application. More seriously, there are limitations on how the application can interact with local system resources.
MonoMono is an open-source project coordinated by Novel that aims to make .NET applications run on Linux and Mac. Mono is being used by Microsoft to deliver SilverLight support on Linux too. Mono is very impressive, and is doing well on Linux, but unfortunately Mac support is weak. Blueberry hasn’t used it in detail, but we believe it probably isn’t a viable cross development platform at this point – although it might be in a year from now.
PortableC++ - Separate GUIIn this route, the core application is developed using portable C++ , and the application user interface is developed using native platform tools. This route allows common code to be shared while delivering a native style UI on each platform. Obviously this requires that the UI be written three times over. There are a number of strong cross-platform C++ libraries which can make the core code development easier, notably Boost++.
PortableC++ - Common GUIIn this route, we use portable C++ and a portable graphics library. There are a number of graphics libraries which can be used for this – such as QT or Cairo. This approach saves time, but generally means that the final applications will not have a “native” UI – Mac users in particular might think the application looks a little odd.
Conclusions

This page has attempted to provide a brief introduction to the complex topic of cross-platform development. If you have a project which requires cross-platform development, or would just like some advice, please give us a call.

Expertise
 
Get A Quote
We're easy to talk to - tell us what you need.
0800 862 0555
enquiries@bbconsult.co.uk
Enquiry Form
Call us on Skype Call on Skype
 
Got A Question

We’re here to help – and we’re happy to provide advice on software development issues at any time. Just give us a call.

 Copyright © 2009-2010 Blueberry Consultants Ltd.
Custom Software Home  |  Company  |  Contact us  |  Site Map