AppForge Uses .NET to Cut Pain for Mobile Devs
It's often a hassle to bring mobile apps to the enterprise.
With the high cost and high maintenance, each enterprise mobile app seems to have a life of its own, and must be specially tuned for each device. So, updates can be a nightmare, and IT departments don't want to bother with managing different cellphones.
Well, AppForge, a former hardware/software wireless design firm that has worked with wireless pioneers Motorola and FedEx, has a fix for many of these mobile dev dilemmas.
"A lack of portability is probably the biggest impediment to mobile application development today," Chris Tyburski, Chief Technology Officer and VP of Engineering, told Integration Developer News.
"That can be a real problem, especially when you listen to the underlying message from Palm, PocketPC, Symbian [Nokia] or even C++ developers. They all say it can take a lot of developer time and training, and on top of that, once you learn how to build an application for one, there's nothing compatible you can use to move that app to another device. They just aren't compatible today, in any way, shape or form," Tyburski added.
AppForge has set out to solve those headaches with its CrossFire mobile app design, development and deployment environment.
AppForge's Approach to Simplifying Mobile Dev
The keys to simplifying mobile app development and deployment, Tyburski said, are, in effect, two distinct layers of abstraction -- one for the developer, and one for the underlying device. These abstractions provide mobile devs an integrated development/deployment platform that brings "write-once/run anywhere" to about 90% of the world's mobile devices, including Palm OS, Pocket PC 2000/2002, Windows Mobile 2003, Nokia Series 60 and Symbian UIQ, he said
Inside AppForge's Architecture
"In our approach, we provide developers a library of drag-and-drop functions, such as buttons, signature boxes and other functions," Tyburski said. These features are generated into code using underlying VB 6 and/or Visual Studio.NET compilers. Tyburski explained that AppForge did not reverse-engineer .NET's CLR, but "we created something that wraps our VB 6.0 [capabilities] in a .NET-friendly manner, so we're moving to support both C# natively, as well as .NET's CLR."
Further, AppForge provides a device definition for each mobile device that masks the platform's intricacies from the developer, so he doesn't have to then take his application and customize it for each device. "We don't target just the lowest-common-denominator with our device definitions" Tyburski said. "Our device definitions, which run on each client, run very deep and are engineered to exploit many of the features touted by each device manufacturer."
Using AppForge's combination of VB-based developer tools and device definitions, one client was able to take a suite of 25 applications specially designed for the Palm OS and move them over to work on Symbian OS in a week "The key was that the developers did not have to rewrite their applications of their device interfaces -- they could just use VB and our device definitions," Tyburski said. "And that's where Java falls down on their portability religion. Java's portability relies on following lowest common denominator, which means you can only use a limited set of tools and so you can't build the exact application you want. There are always compromises and trade-offs, and even then, many times I've seen a Java developer get to 80% of where he wants to be, and the tool just runs completely out of gas."
Aside from tools and uniform deployment, AppForge also offers a taste of what might be called mobilizing Best Practices. For instance, on the topic of "Should a mobile cell phone work from the Web or with the web," Tyburski has the following advice:
"Having a full [eb] client mode is not the way to go. What we learned was that dynamic information is not something you want to have to go out and get, just at the time you need it. The Web is not designed to be used that way; it can be unreliable and the protocols can be slow. Instead, what you want to do is use a drip-synch type approach, where you update your local memory or cache once or twice at day, say at midnight, and then the data you need is stored locally. That means when you need to access it, you can get at it in 30 seconds or less, and you wouldn't be able to guarantee that kind of access if you had to go out to the Web and browse for that."
AppForge also comes with a full suite of tools and guidelines for designing your UI to fit your chosen device(s). In specific, AppForge controls mimic the device user interface in the Visual Studio .NET IDE, allowing you to design, implement and debug your application just as it looks on the device. Other notable UI features include:
- Support for full 24-bit color, and logical system colors;
- Native device menu support;
- Support for multiple graphics file formats, including BMP, JPEG and PNG;
- Native, TrueType or AppForge multi-platform fonts, including a utility that converts licensed TrueType fonts to AppForge multi-platform font;
- A rich set of user interface controls to provide maximum flexibility in designing your user interface, including buttons, listboxes, textboxes, grids, graphics, sound and video;
- Custom control creation through the widgets; and even
- Ability to control a devices' built-in camera.
AppForge also comes with sample code snippets, as well as full-blown applications, such as for PIM, inventory, barcode input/output and applications requiring signature.