Home

Photography

Ethics

Politics

Ideas

Technology

Academic

Blog

Pete Bagnall

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

  1. Must be largely platform independent
  2. Must be able to handle a fullscreen interface, with custom widgets.
  3. Must integrate with Windows code for the handwriting recognition
  4. Must have reasonable performance
  5. Should have Email libraries
  6. Should have Strong networking
  7. Should support Rapid development
  8. 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