Next: Proof Assistant Selection
Up: System Design
Previous: System Design
  Contents
Language/Library Selection
There are two immediately obvious choices of cross platform language for
graphical user interface development: C++ and Java. C++ is a fast,
object-oriented language which has been in wide use for many years, and
ported to a large range
of platforms. Its downsides include the sometimes messy
implementation of an object oriented system based upon the older, non-object
oriented C language. Java is much newer, a bytecode interpreted language
that runs inside a virtual machine referred to as the JVM.
It has a cleaner object system than C++. It was designed to be cross-platform
from the ground up, and offers a GUI toolkit that looks consistent across
many platforms. Running inside a virtual machine often impacts the
performance of Java based applications, especially on older hardware.
The existence of cross-platform C++ GUI toolkits such as
QT,
QT is available from http://www.trolltech.no/.
FOX,
The FOX toolkit is available from http://www.fox-toolkit.org/.
FLTK,
The Fast Light Toolkit (FLTK) is available from http://www.fltk.org/.
and wxWindows,
wxWindows is available from http://www.wxwindows.org/.
give rise to a number of advantages over Java:
- Speed
- Lower memory consumption
- Can be compiled statically for easy installation
- Cross-platform native look and feel is achievable
The choice of GUI toolkit for use with C++ was made by elimination:
- QT only offers free software licensing for the
X11 platform, failing point number 3 of the design criteria.
- FOX lacks native support for MacOS (an X server
is required), failing point 1 of the design criteria.
- FLTK only supports Unix and Microsoft Windows
platforms, again failing point 1 of the design criteria.
- wxWindows is left, without suffering from any
of the problems above.
Having settled in on a programming language and GUI toolkit, we
can now worry about choosing a companion library for parsing and creating
XML messages. A C XML library known to be portable
across all our target platforms (and more) is
Libxml2.
The XML C parser and toolkit of Gnome, libxml:
http://www.xmlsoft.org/, http://www.gnome.org/.
Next: Proof Assistant Selection
Up: System Design
Previous: System Design
  Contents
2003-11-08