topical media & game development
object-oriented programming
Cross-platform development
Platform dependencies form an important category
of architectural constraints.
In particular, the opportunities offered by
one platform may prohibit the deployment of software
on other platforms.
Nowadays, there are a number of (flavors of) competing
platforms, as there are the Unix flavors (of which Linux is
becoming a strong contender) and the Windows family,
including 3.1 (almost extinct), Windows 95, NT, 98
and (in beta release) Windows 2000.
Unix (for example Sun Solaris and SGI IRIX) has by tradition
a strong position in the server market.
However, Windows NT is growing rapidly in importance.
The Windows family, clearly, dominates the (client) desktop market.
Cross-platform development
Unix vs NT
- open toolkits and standards -- OMG CORBA
Research/GNU
- AT&T U/WIN -- Posix for 95/NT
- Cygnus -- GNU-win32
Commercial
- NuTCracker/MKS -- porting Unix applications to Windows
- Wind/U, Mainwin -- porting Windows applications to Unix
- Tributary -- developing Unix applications from Windows IDE
slide: Cross-platform development
Nevertheless, the need to support a variety of platforms
will exist at least for some time,
and consequently questions with regard to portability
and cross-platform development may be important
architectural issues.
Considering the opportunities for platform-independent
or cross-platform development, we may distinguish between
three approaches:
- deploying platform-independent toolkits
- porting applications from Unix to Windows
- porting applications from Windows to Unix
As we have discussed previously,
many of the open standards, such as OMG CORBA,
and proprietary standards such as Sun Java,
aim at platform independence.
Also, there are numerous GUI toolkits
available that offer platform-independent support.
A possible disadvantage of this approach is that the
platform specific technology can usually not be profited from.
When it comes to porting applications from Unix to
Windows 95/98/NT,
we may look at AT&T U/WIN, which provides a POSIX
extension for Win32, or Cygnus GNU-win32 support,
which offers many of the GNU utilities and libraries
for the Windows platform.
Similar functionality, as well as support for Motif/X11
GUI capabilities, is offered by the (commercial)
NuTCracker environment.
(A detailed discussion of the technical merits of the
various offerings is beyond the scope of this book.
However, the interested reader may find more information in the online
version of this book.)
The Windows platform is not only popular with end-users
but also with many developers,
who enjoy using the Microsoft Visual Studio suite of tools
and (object-oriented) frameworks such as MFC.
Recently, toolkits have entered the market
that allow for porting Microsoft technologies
(including Visual Basic, ActiveX and MFC applications)
to the Unix platform,
in particular Wind/U from bristol.com
and Mainwin from mainsoft.com.
As a word of warning, these toolkits are still terribly
expensive.
Yet for more information, consult the online version of this book.
For those who wish to develop directly on the Unix platform,
but using Microsoft Visual Studio, there is Tributary,
from bristol.com,
which offers a Unix-server and client-extensions to
Visual Studio.
Discussion
From an architectural perspective, it should not matter what platform is used for the actual development,
nor for what target platform the software is being developed.
In practice, however, given the preferences of
the developers, the particularities of
the platforms, and the instability of the (beta) software
running on these platforms,
the actual choice may make a big difference.
As an admittedly weak advice,
tune your strategy to your needs and experience!
(And your budget.)
(C) Æliens
04/09/2009
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.