Prosciutto

The Prosciutto Project

a small footprint mobile application engine and browser - and open source!

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.

LATEST UPDATES:
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
-softkey mapper
-BlackBerry support
-debug form
-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!
Hecl + Prosciutto

Check the list of available Hecl commands here.


+UPDATE January 1st, 2010:Check the latest blog post..
+UPDATE September 13th, 2009:Prosciutto 2.1 is released! Outstanding features include Blackberry and video playing support. Check all the features above..
+UPDATE August 10th, 2009:Prosciutto is mentioned in the mobile widget talk by Maximiliano Firtman at O'Reilly's "Inside Mobile" conference at San Jose, CA..
+UPDATE July 29th, 2009:The latest stable release is revision 151 in SVN. It includes table handling and Location Based Services capabilities. I will make a huge announcement soon!.
+UPDATE June 15th, 2009:Now Prosciutto is FULLY integrated with Hecl, the mobile scripting language! You can fully customize your Prosciutto apps behavior to make them do what you want :)
+UPDATE June 12th, 2009:Now Prosciutto is FULLY configurable, even the memory initialisation can be tweaked from the config tag in the model.xml file. You don't need to write a SINGLE line of java code! take a look at the config tag description.
+UPDATE June 2nd, 2009:The slideshow for the talk I gave at Palermo Valley Mobile Sessions on May, 28th is now published in english in the project's homepage (see above) ;).
+UPDATE May 9th, 2009:I have moved Prosciutto from Yahoo Groups to Google Groups due to many advantages. For instance now I can share Assembla SVN & Trac alerts with the list.
+HOT UPDATE May 5th, 2009:Prosciutto is going into major surgery: I'm working on refactoring many of the components. The latest stable version is trunk's rev119, or you can also download the freezed tag named 200905beforeRefactoring from the SVN repo.
All the documentation published in this site will refer to rev119 until otherwise noted. For latest news, please subscribe to Prosciutto's mailing list

+UPDATE Apr 25th, 2009:Today we attended FLISOL (Festival Latinoamericano de Software Libre)
+UPDATE Mar 20th, 2009: A project I'm involved in (www.soloingles.com mobile) is participating of BBVA Open Talent. Please vote for us!
+UPDATE Feb 17th, 2009: Mobile Ticketing/Ticketek application wins the 2nd runner prize in its category in the worldwide event at Mobile World Congress
+UPDATE Jan 29th, 2009: The Nokia Calling All Innovators regional winners have been announced today. The Americas Eco-Challenge winning application ("Mobile Ticketing/Ticketek") is built on top of the Prosciutto mobile engine! Read this post and visit Orugga's page. You can also watch this video.
+UPDATE Jan 20th, 2009: I created a new LinkedIn group for professionals looking forward to use Prosciutto in their projects. Feel free to post!
+UPDATE Jan 9th, 2009: I uploaded a free application that will fetch Terra's RSS feeds on Dakar 2009. It lacks design, but I coded it in roughly 1 hour! Find it at Getjar!
+UPDATE Jan 6th, 2009: we keep killing milestones in Trac, now Prosciutto is integrated with Hecl!
+UPDATE Jan 5th, 2009: we are killing old milestones in Trac, now Prosciutto supports JSR 135 (MMAPI) for audio playback actions!
+UPDATE Dec 31st, 2008: Now Prosciutto supports XML model definitions both as resource files and also through HTTP


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:
>>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 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