NEW!: Prosciutto and Hecl are integrated!
Check the list of available Hecl commands here.
What is The Prosciutto Project?
The Prosciutto Project is defined around an open source, data-driven mobile application engine
implemented in J2ME. You could think of it as a rapid
application development framework, or a distributable mobile application
engine that aims to address the problem of device fragmentation.
The idea behind it is that of the use of a very basic markup language in order to define UI objects and behavior.
The string representation (i.e., markup lanaguage) will be interpreted by ZAMAE (ZA Mobile Application Engine) in order
to produce a graphical, on screen representation ("appearance") of each object defined, and with a specific behavior for
each object as well.
Anything you would do on a mobile application that has to do with browsing data is doable in The Prosciutto Project environment.
Okay let's dive into it!:
A simple Hello World can be written like this:
<?xml version="1.0" encoding="UTF-8"?>
<application steps="2">
<form uid="11000">
<buttons>
<button>
<appearance>
<text>Hello World!</text>
</appearance>
</button>
</buttons>
</form>
</application>
![]() | ![]() | ![]() |
The spirit behind it: If you are targetting a wide range of handsets, there's a 99% chance you are going to face problems when porting your application to each different phone model / handset vendor. Ever wondered how much time it is required to produce a quality delivery in software? If it's often taken as a 50/50 (50% design and coding, 50% testing), when working with mobile phones it's more like 50/50/50 (50% design and coding, 50% testing, and yet another! 50% porting). Even minor changes demand that your application be run on the handset testbed all over again to ensure some quality deliverables. ZAMAE is envisioned as a mobile application engine that would be tested only once on every handset, and would be configurable enough as to run any kind of application on it. Separate the business logic from the actual java code, model the business logic outside of it, make a very simple configuration language and have business process analysts/modelers - not coders actually build the application.
What can I do with it?: Anything you would do on a mobile application that has to do with browsing data is doable in The Prosciutto Project environment by using the mobile application engine (ZAMAE) and a set of well-defined, serializable UI objects. This way, an entire application definition can be hosted on a web server, ZAMAE would fetch it from the server, and yet be completely business logic agnostic. If your application changes, there's no need for the engine to be updated and redistributed (as long as you don't need to use any newer core feature of course).
Check these files out:
>>tiny model
>>verbose model
>>minimum model
The first link (tiny model) is just the same XML file as shown at the top of this page.
The other 2 links show the same "Hello Prosciutto" application, the verbose model declares explicitely all options for each
UI object, while the miminum model only declares those attributes and options that want to be overriden in order to get the desired behavior.
Of course, in a real world scenario, the aim is to use the miminum declaration possible to save space in the resource folder in the .jar file.
These screenshots are taken from how ZAMAE behaves on screen by reading these easily definable XML models:
![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
ZAMAE, the core engine of The Prosciutto Project, has been tested on a number of real devices and has already over 2 years of development / testing iterations using the RERO (release early, release often) approach.
Licensing: The Prosciutto Project is currently available under the GPL v3 license. For commercial licenses please contact the author.
About: The Prosciutto Project / ZAMAE is developed by Mario Zorz . If you want to contribute, feel free to write me at marionetazorz at yahoo dot com