|
| Home / Expertise |
| 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 will 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: | Windows | Most 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. | | Mac | Most 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. | | Linux | Most installed applications are developed using GCC, and use one of the two major X-Window based systems - Gnome 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 AJAX | Implementing an application as a plain website 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. | | Flash | Flash 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. | | SilverLight | This 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. Linux support has come in the form of Moonlight - an open source implementation of Silverlight. |
But in many situations, a web-based solution isn’t acceptable. The following are the main options for cross-platform development of installed programs:| AIR | AIR 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 slow, 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. | | Mono | Mono is an open-source project coordinated by Novell 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 GUI | In 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 GUI | In 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. |
|
|
|
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.
|
|
|