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 Prosciutto (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.
NEW!: Prosciutto 2.1 released!
This release ships with:
-Location Based Services integration (JSR 179)
-new config attributes for LBS reading timeout
-wrapper buttons memory footprint control
-stringfilter: use any of these tags in your buttons text, which will be replaced by the corresponding values each time the button is rendered on screen: @@latitude@@ @@longitude@@ @@time@@ @@date@@ @@timestamp@@ @@debug@@ @@freemem@@
-table arrangement for buttons
-usermessage for showing customized messages on the "loading..." screens
-messageinbox for customizing behavior by sending behavior messages to your UI objects
-video playing features
We are going to build several copy/paste examples to showcase all of Prosciutto's features.
June 15th: Prosciutto and Hecl are integrated!
Check the list of available Hecl commands here.
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. Prosciutto 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 (Prosciutto) and a set of well-defined, serializable UI objects. This way, an entire application definition can be hosted on a web server, Prosciutto 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:
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 Prosciutto behaves on screen by reading these easily definable XML models:
Prosciutto, 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 / Prosciutto is developed by Mario Zorz . If you want to contribute, feel free to write me at marionetazorz at yahoo dot com