We did an analysis of the mathlets in the inaugural issue of JOMA to examine their reuse characteristics. Of the ten mathlets, three were server side applications with a web interface and seven were Java applets. For the purposes of this article we will focus only on the applets:
Here's an example of how customization could be useful. The graphing applets offer much flexibility, but it might be difficult or impossible to configure them to launch with a pre-specified function. This would be useful, for example, in online assessment. In addition, it may be useful in that context to be able to selectively hide portions of the user interface, for example, whether the function definition is displayed.
Only one of the applet developers provided source and documentation (Tom Leathrum's Generating Tables to Demonstrate Limits), and another offered it by request.
Most of the applets used common GUI (graphic user interface) widgets found in the Java 1.1 AWT (Abstract Windowing Toolkit), such as buttons and text fields. Some had slightly unconventional user interfaces. Consistency of behavior becomes an issue when aggregating mathlets into large collections.
In addition to our analysis, we surveyed developers of the first JOMA mathlets to find out if and how reuse played a role in their programming.
Two of the four respondents were concerned with application reuse; one provided applet parameters as a solution.
Two developers reported they were learning Java, which for one of them meant coding largely from scratch for the educational benefit. Developers who were building larger collections of mathlets were reusing their own code and designing for reuse, including designing APIs to allow customization or communication with other tools. One developed standard frameworks that could contain various kinds of learning content. Developers gave reasons for not releasing source code including discomfort with having their code scrutinized closely and the desire to protect intellectual property.
Two developers expressed an interest in interoperability, that is, exchanging data with other software. The types of software mentioned included online testing, e-books, computer algebra systems (CAS), dynamic geometry, physical sensors. They both have explored exchanging data with a CAS server. One converted his applet into a JavaBean and experimented with interoperability with other beans in an application builder environment. We will cover interoperability in our next article.