Visual Basic is arguably the most popular development language in the world. It is a powerful and complete language and unlike C++ and Java it has a structure and command set which demands little specialist knowledge to master. This lends Visual Basic to the development of both powerful enterprise applications and use by niche players who have specialist domain knowledge but limited programming experience.
One of Visual Basic’s limitations, however, is that it is a proprietary Microsoft language and out of the box use is limited to Microsoft Windows environments. AppForge have overcome this limitation with their innovative MobileVB tool which leverages the Visual Basic IDE to allow developers to create applications for Palm, Pocket PC and Symbian powered devices.
The Road to MobileVB
AppForge was born out of Ratio DesignLab, a company formed in 1985 by a group of students from Georgia Institute of Technology led by Doug Armstrong. Ratio DesignLab started out developing custom devices for other companies, with a focus on embedded software and electronics but eventually became involved in complete product design and delivery.
The evolution of MobileVB started in the 1980s when Ratio was doing a project for Delphi Technologies to develop a vending machine to accept rolls of film for processing. As part of this work Ratio developed all the electronics and a DOS like operating system to run the machine. Following on from this in 1995 they became involved in a project with Motorola to develop a small, information-centric pager. This proof of concept project eventually became the Pagewriter 2000 and morphed into the Timeport and Accompli product lines. As part of this project they added a Basic interpreter and graphical user interface to the RTOS used in the vending machine.
At this stage the value of the Basic language family in relation to programming for embedded devices – where native development can be highly specialised – was recognised. In developing a strategy to exploit the technology it was decided that developing an IDE was not efficient, as a number of other players, such as Microsoft and Borland, already had mature and effective products in the market. Instead, it was decided to create an add-on tool and take advantage of Microsoft’s COM architecture within Visual Basic. A dedicated team was formed and they developed a new compiler and a set of Active-X controls to integrate with Visual Basic. These tools were then used for a number of client projects between 1997 and 1998 running on Ratio’s own operating system.
Realising that there was a market opportunity for a more general tool, AppForge was formed in April 1999 to create a commercial product. In June 2000 it was decided to target the then dominant Palm OS. The first version of AppForge was released to the public at PalmSource in December 2000. This was followed in September 2001 with support for Pocket PC.
The AppForge team had discussed their tools with Symbian as early as 1998. While Symbian was apparently interested in the opportunities that AppForge opened up, their focus was on updating the Symbian OS for the next generation of smartphones. Symbian also had a strategic commitment to Java that meant this early discussion did not bear fruit. However, in October 2001 the team bringing the Nokia 9200 series communicator to the US met with AppForge. Nokia not only saw the benefits that Symbian had but were able to do something about it and started working with AppForge to develop a port to the 9200 series communicator.
This resulted in AppForge MobileVB Version 3, launched in parallel with the US release of the 9290 in June 2002, providing support for the 9200 series (or more generically, the Nokia Series 80 Interface). At the same time a range of applications were also made available from a number of AppForge developers who already had popular titles for both Palm and Pocket PC. Shortly after the launch the software component that runs the AppForge code on a wireless device – Booster – was made available free to all 9200 series owners.
The MobileVB Environment
You may have by now realised that MobileVB consists of two main components, the Visual Basic IDE add-in and the Booster. MobileVB fully integrates with Visual Basic 6 adding a menu and a series of “ingots”. These “ingots” are the components used to build the User Interface within MobileVB and replace the standard Windows components such as labels, text boxes etc.
The ingots provide a rich set of capabilities from basic data entry through to handling images and graphics, which makes it possible to develop applications ranging from games through to business solutions. The UI is rich and not only includes standard features such as text boxes, labels and lists but also provides for:
- Playing small movies (using a proprietary AppForge format) for animations or small dynamic elements in applications.
- Signature capture (although the absence of a touch screen on the 9200 makes practical use difficult).
- Sprite controls and blank canvas for use in games development, or sophisticated graphical interfaces, like large grid displays.
- Focus control, which allows navigation to be tailored to device specific standards.
- The ability to use Adobe True Type fonts.
- Control to localise the date and number formats.
- The ability to handle Unicode text.
Below the user interface, MobileVB provides all the necessary functionality to build data-based, connected applications including:
- Support for serial, socket and HTTP based communications.
- Two native database models, including support for native Palm databases across all the platforms and administration functions for each target platform.
- Access to PIM details such as contacts and calendar events.
- Use of a wide range of intrinsic VB programming commands.
- Access to the device file system.
- Access to basic device information, such as memory availability.
- The ability to create access to non-MobileVB code, for example native OS operations, using Fuser.
In addition to the native data storage capabilities third party databases, which can be accessed by MobileVB, are becoming available. Currently Sybase’s subsidiary iAnywhere have their UltraLite Component Suite in beta trials. Although the current beta does not include Symbian support, it will be added in the near future, although no dates have been announced. In addition I understand that another major vendor is expected to announce support soon, possibly sometime in September.
There are also some functions that currently are specific only to the Symbian implementation:
- Nokia UI-specific components discussed earlier.
- Access to basic phone operations.
- The ability to send and receive SMS messages.
These capabilities are clearly ones that are also relevant to Palm and Microsoft-powered integrated wireless devices. I understand that AppForge are working towards adding these features to the other platforms in a future release. Some features are not currently available to the Nokia developer, these include:
- Barcode scanning.
- Alarm, which wakes up the device when an event occurs and notifies the user.
- Database synchronisation via PC connectivity (because there is no database connectivity solution build into the Symbian PC connectivity).
- Palm specific features (obviously).
The Alarm functionality is likely to be added for the Nokia 9200 series in the near future. In addition, iAnywhere’s Ultralite Component Suite will include the ability to perform database synchronisation and it is almost certain that synchronisation will be a feature of other vendors database offerings.
Developing Using AppForge
For anyone familiar with Visual Basic the development process is straightforward. The application is coded and initial debugging performed in the Visual Basic IDE before the application is deployed to the chosen device emulator. Once any final issues have been resolved on the emulator the application can then be deployed to the physical device.
AppForge does all the work necessary to create a basic installation file, creating a Symbian OS SIS file (and appropriate files for Palm and Pocket PC) automatically when the application is built for the emulator. The developer can still incorporate additional files and actions into the installation process by including the AppForge generated SIS file in their own custom installation file (or building one from scratch if they wish).
The goal of MobileVB is to allow the developer to create multi-platform applications, not unlike Java. However because of the differences in user interfaces, screen orientations, size and resolution, along with differing modes of data entry it still means that the developer has some work to do. For example, MobileVB implements the Microsoft standard navigation keys as the default. To implement the Nokia standard so that, for example, the cursor keys rather than the tab key moves from field to field, the developer must write additional code.
However MobileVB does protect the developer from significant changes in the application logic by ensuring that the key commands remain consistent across all platforms. For example, in creating and accessing a database. This means that most work to implement an application on a new device is in redesigning the user interface and making changes to any use of a small number of device specific commands.
In addition, the AppForge designers have taken care to keep the command set as simple as possible. For example creating an SMS message uses just 2 lines of code, considerably less than would be required in a natively developed application.
The Developers View
To get an appreciation of what AppForge MobileVB means to commercial developers I spoke to David Dalton of Electronic Frontier Ltd., a specialist developer of PDA software based in New Zealand. Electronic Frontier has utilised AppForge to implement their Pocket Cook recipe application on the Nokia 9200 series, complementing their products for Palm and Pocket PC.
In planning for the Symbian implementation of Pocket Cook David considered Metrowerks CodeWarrior but stuck with AppForge: “Redeveloping in Metrowerks would have taken a long time. Given that demand for Pocket Cook on the Nokia 9200 was uncertain, AppForge allowed us to port Pocket Cook in 2 weeks reducing the risk considerably. The fact that MobileVB is integrated with VB6 reduces the learning curve and the ability to use the Visual Basic debugger is a big plus point.”
David recognises that AppForge implementations “do have a large runtime which could be inconvenient for some users, but the trade off is ease of development and thus a cheaper product.” Database support was singled out by David as one of the key reasons for sticking with AppForge: “It’s strong and fast. It can support Palm PDB files for maximum speed or relational databases for powerful querying.”
Another major benefit of the Visual Basic environment is its extensibility. By creating appropriate objects, third party vendors can provide access to their software and systems from within MobileVB and developers can add functionality to interact with the underlying operating system.
Heavyweight integration, such as iAnywhere’s Ultralite Component Suite, is achieved with the AppForge Piedmont framework. Piedmont provides a component-based architecture that is used to create all the controls and services on which MobileVB applications rely. For component developers Piedmont is available as a SDK that allows them to cleanly extend the capabilities of MobileVB.
While similar in concept to COM and ActiveX technology, which fuelled third party development of controls and components targeting Microsoft Visual Basic developers, Piedmont provides the opportunity for vendors to package their existing technology for use by all AppForge mobile developers. So, unlike COM and ActiveX, Piedmont is not limited to a single operating system, but can be implemented for all MobileVB’s supported platforms. A number of vendors I have spoken to are assessing the opportunities to create AppForge access for their products and tools using Piedmont.
In addition to Piedmont the standard MobileVB development kit includes Fuser. Fuser is a lightweight version of Piedmont that can be used by developers to access existing code from a MobileVB program. Fuser elements are typically implemented in ‘C’ or ‘C++’ and allow information to be passed to and from the Fuser, that can in turn call on any necessary system level services to provide the requested operation.
AppForge’s limitations are generally imposed by either the constrained nature of wireless platforms or the desire to create code that can work across platforms with minimal changes. For example, the database model does not take advantage of the full power of the Symbian OS’ built in database. AppForge only allows a single table to be created in each database file, whereas the Symbian RDMS can hold an unlimited number of tables. Generally any inconvenience created by these limitations is easily outweighed by the advantages of having a convenient cross-platform development tool.
Perhaps the most significant limitation of the current implementation of AppForge on the 9200 series is memory usage. Like Java, which loads the JVM into memory before a Java application can be run, AppForge requires Booster to be loaded before running an AppForge application. The application examples I have looked at use about 1.5Mb of execution memory which means there is adequate memory to run these applications on the Nokia 9210 but does not leave much headroom to run many other applications. AppForge is working to ensure that future implementations include Booster in the device ROM (but not on Microsoft-based devices), which will significantly reduce the execution memory required.
Looking forward it is likely that we will see MobileVB being implemented on a wider range of Symbian OS devices. I understand that work is well advanced on the SonyEricsson P800 and Nokia 7650, as well as a number of other as yet unannounced devices.
The other major area of development is in supporting Visual Basic .NET. While Microsoft will be supporting Visual Basic Version 6 for some time to come, eventually developers will have to move to .NET. AppForge will be supporting VB .NET and product announcements are likely to be made this autumn. It is also probable that there will be further developments with other vendors providing support for their tools from within MobileVB.
AppForge MobileVB offers the developer two significant benefits, the ability to create applications which can be easily ported to multiple devices using different operating systems and the ease of use of Visual Basic. For the end user or enterprise this results in lower cost applications and more choice in applications. The integration of third party databases also shows that this solution can provide the enterprise with the capability to create rich wireless applications integrated with existing back office systems.Written by Richard Bloor for PMN Mobile Industry Intelligence.