Communications Pad for Elders
Platform
Hardware and OS
The initial platform is NEC tablets, running windows XP Tablet
edition. However, there is an intent to avoid tying the software to a
single OS platform. This means that the Windows only software
platforms are to be avoided as much as possible.
Software platforms considered:
- Java
- Python / wxPython GUI
- VB
- C#
Required software platform capabilities
- Must be largely platform independent
- Must be able to handle a fullscreen interface, with custom
widgets.
- Must integrate with Windows code for the handwriting recognition
- Must have reasonable performance
- Should have Email libraries
- Should have Strong networking
- Should support Rapid development
- Could use Simple network upgrade system
Platform Independence
VB and C# both fail the platform independence test. Python was an
intriguing contender, especially given it's reputation for rapid
application development, and the wide availability of libraries
supporting everything from windowing to Zeroconf (aka
Rendezvous). Both Python and Java have multiplatform GUI libraries
available in the form of Swing for java and WXPython for Python. One
problem with WXPython is that the actual widget libraries are somewhat
messy making the writing of clear, bug free code more difficult. The
Swing libraries are without a doubt superior in this, and other
respects.
Fullscreen Display
Both Java and Python can take control of the whole screen when running
on Windows. Python however fails to do this on MacOS X. Since for now
the platform is WinXP based, it is possible that future versions of
WXMac may solve the problem for Python, this does not present a major
problem, but it weakens Pythons case for platform independence.
Integrating with Handwriting Recognition systems
Both Python and Java have ways of integrating with native code. For
Java the JNI serves this purpose, while for Python there are automated
wrapper builders. There are two major handwriting recognition systems
that are widely deployed at present. The Microsoft
Tablet handwriting recognition and Apple's
Ink (pdf) system for MacOS X. There is also what appears to be a
Graphiti like handwriting recognition system for Linux, called PenReader
although this seems to be somewhat behind the major implementations.
Ideally one API will be implemented which can use either MS or Apple
solution as it's native implentation. Both Python and Java seem
capable of achieving this.
Performance
A concern with Java was raw performance, given that the machines
are limited in power is a potential problem. Python interprets at a
higher level, and so might be expected to have superior
performance. However, having run some simple tests performance in Java
was easily acceptable. A further advantage is that running in
fullscreen mode the graphical API's can use more of the graphics cards
abilities reducing the load on the processor. This should further
boost performance. So while Python has a theoretical advantage, in
practise it is not a factor.
Email Libraries
Both Python and Java have well developed email libraries, which
should simplify building an email client
Strong Networking
Both Python and Java have strong networking API's
Rapid Development
Python has a reputation for rapid development. However, Java is
already known, which may make it quicker to develop in Java. Also some
Java code already exists, and can be taken from past projects
Upgrade Mechanisms
The Java installation is much simpler than the Python install,
since the main libraries all come from one place. Code developed by
this project can be packaged into jar files. Applications can
certainly be loaded over the network as Jar Files. Python can run code
from tar.gz files directly, which achieves much the same end. The only
thing between the two appears to be the question of an upgrade to the
language itself. Java is likely to be much easier.
Conclusion
Both Java and Python are strong contenders. Java has been selected
partly based on prior knowledge of the language, and partly because of
the strength of the GUI APIs. The problems Java suffers from are
unlikely to affect the project. VB and C# both fail, almost entirely
due to their lack of support on other platforms.
© Peter Bagnall
|