This page is to capture notes for the proposal to convert Dasher to Java.

Next Steps

  • Decide on list of platforms to support
  • Evaluate support for various options on chosen platforms
  • Technical comparison of C++ and prototype Java implementations


In this Dasher maintainer message, David indicated that the long term desire for Dasher is a port to Java and that a full time developer might be coming in the September 2008 time frame. The main reason for converting to Java is the hope that Java would provide a more portable environment, reduce platform dependencies, and free up developer time for features rather than porting.

While this is all very good news, we first need to determine if Java is an appropriate choice. The main concerns are:

  1. Problems which might be solved by migration to Java
    • Dasher codebase is less portable than it might be, and deployment process varies a lot between platforms
      • Can JavaDasher be deployed outside of a browser easily on the platforms of interest, at least Windows, Linux, and Mac?

      • Will this facilitate migration to mobile and embedded platforms?
      • Are there other platforms that should be considered? (See below)
      • Will Java actually reduce the platform specific code (i.e., be more portable than C++)?
  2. Other potential advantages
    • Simplification of the download / installation process
    • Ease of producing plug-ins, eg new control modes, support for new input devices etc.
  3. Potential problems
    • Rewriting Dasher is clearly a big task, although a lot has been learned from the development process so far
    • Resource utilization and basic usability
      1. CPU
      2. Memory
      3. Graphics speed and responsiveness in general
    • Can Java support Dasher's special needs:
      • Can JavaDasher act as an input device and direct input to other applications so Dasher can replace the keyboard?

      • Can JavaDasher be hooked up to the other non-mouse input devices that people need?

      • Is enough low level integration possible - eg can we be flexible enough with regards to the focus behaviour of Dasher's window?
  4. Other solutions to consider
    • Use more portable libraries (eg GTK+ on all platforms, rather than native widgets)
      • Initial trials suggest that most of the functionality needed can be achieved in this way, see experimental_win_gtk branch in SVN
    • .NET / Mono
    • Interpreted languages eg Python, possibly with native plugins for small, performance critical components

It would be most helpful if Java literate people could comment on the above, especially to point out other considerations and provide any other guidance. Depending on the outcome of that, we will develop a plan to evaluate the above concerns (basic benchmarks, etc.).

Fortunately, Chris Smowton has a prototype of Dasher in a Java applet (see the installation instructions), and a preliminary performance evaluation. The applet runs in a browser so it seems that performance of a java application should be no worse than the applet. Overall, it looks promising.

To evaluate performance we're assuming we should capture objective metrics using the C++ code and the DasherJavaApplet at various resolutions on various platforms:

  1. Display rate.
  2. CPU load.
  3. Memory size.

Platform Description:

  1. CPU type and speed, OS, memory size, type of video card.

Potential platforms to support - please be realistic about what's possible here. It's not feasible to support every platform which could potentially run Dasher.

  1. Desktop Systems
    • Microsoft Windows (Definite)
    • GNOME
      • Linux (Definite)
      • Solaris (Definite)
    • Mac OS-X (Highly Likely)
    • Other UNIX / FOSS desktop environments
      • KDE (Unlikely, but increasing convergence with GNOME might make this happen anyway)
  2. Mobile Devices
    • Windows Mobile Devices (Desirable)
    • Linux Based Devices
      • Nokia N Series (Desirable)
    • Other mobile devices
      • Apple iPhone (Unlikely)
      • PSP/portable consoles (Unlikely)
  3. Embedded devices
    • MyTobii eyetracking system (Modified Windows XP) (Desirable)

    • Specialised communication aids (Desirable, but needs further research)
    • Set-top boxes (Needs further information to make a decision)
    • XBox / PS3 / other consoles (Unlikely)

Projects/Dasher/JavaEvaluation (last edited 2013-11-22 22:49:18 by WilliamJonMcCann)