SlideShare une entreprise Scribd logo
1  sur  45
Funambol Java™ Platform, Java ME
Technology-Based Open-Source Messaging
Client: Lessons Learned
Edoardo Schepis, Java ME Tech Lead
Session: TS-4992
What developers should know about building
open source Java Platform, Micro Edition (Java
ME platform) messaging applications for the
mass market

How to build synchronization clients for Java ME
technology-based devices, starting from the
Funambol Java ME SDK




                                  2008 JavaOneSM Conference | java.sun.com/javaone |   2
Agenda

 Introduction
 Funambol Java ME SDK
 Push E-mail Client
 Write Once...
 Mobile Open Source
 On the edge




                        2008 JavaOneSM Conference | java.sun.com/javaone |   3
Agenda

 Introduction
 Funambol Java ME SDK
 Push e-mail Client
 Write Once...
 Mobile Open Source
 On the edge




                        2008 JavaOneSM Conference | java.sun.com/javaone |   4
Synchronization
Data synchronization is the process of making
two sets of data look identical
  Which means
   • Exchange data modifications
   • Conflict resolution
  Synchronization Protocol Features
   • Define a method for establishing a synchronization session and
     communicating modifications
   • Record naming and identification
   • Define protocol commands




                                                  2008 JavaOneSM Conference | java.sun.com/javaone |   5
Synchronization

 Why do we need it?
 • PDA, Handsets, iPod, Outlook, Thunderbird, Skype, Gmail, Yahoo,
    Jajah, Facebook, Web...
  • Mail, Contacts, Calendar
  • But also bookmarks, SMS, MP3, documents, files...
  • Mobile field work force
 The common usage
  • PC Suite, Bluetooth, Active Sync, iSync: wired and PC
 Over the Air is the key
  • Data plans
  • It just works
  • Wider support



                                                  2008 JavaOneSM Conference | java.sun.com/javaone |   6
OTA Synchronization with mobile devices

 OMA DS (former SyncML)
  • Platform independent
  • Open
 Uses SyncML to automatically synchronize
  • Contacts (address book), including photos
  • Calendar
  • Tasks and notes
  • Additional and custom data types
 Server maintains backup of PIM data
 Data can be accessed via web
 Full capabilities for mobile backup service



                                            2008 JavaOneSM Conference | java.sun.com/javaone |   7
Native sync or not?

 Native is good, but...
  • Not always available (branding phones...)
  • Native clients not so easy to configure (even to find...)
 Do not reinvent the wheel, just make it better
  • For all the handsets
     • Java ME Platform, Windows Mobile, Linux, Blackberry, Android, iPhone
  • For all the clients
     • Outlook, Thunderbird, Evolution
  • For all the Mail/PIM servers
     • POP, IMAP, Exchange...




                                                     2008 JavaOneSM Conference | java.sun.com/javaone |   8
Funambol Software Overview

 Push
  • e-mail, contacts and calendar
 Mobile Backup & PIM Sync
 Mobile Device Management
 Mobilizing Data & Applications




                                    2008 JavaOneSM Conference | java.sun.com/javaone |   9
Funambol Software Overview


                           Funambol Portal

    1.5B+ Devices                                                 Email/PIM
    Nokia                                                         POP/IMAP
    Motorola                                                      Yahoo!
    Sony Ericsson                                                 Hotmail
    Samsung                                                       Gmail
    LG                                                            AOL
    SyncML                                                        Outlook
    Win Mobile                                                    Exchange*
    Java ME                                                       Domino*
    iPhone          Push      PIM    OTA     Mobile               Thunderbird*
    Android*        Email    Sync   Config   Platform             Custom/3rd party



                            Funambol Server
                                                                *Community project




                                                        2008 JavaOneSM Conference | java.sun.com/javaone |   10
Agenda

 Introduction
 Funambol Java ME SDK
 Push E-mail Client
 Write Once...
 Mobile Open Source
 On the edge




                        2008 JavaOneSM Conference | java.sun.com/javaone |   11
Funambol Java ME SDK
MIDP 2.0, CLDC 1.0, WMA 1.1
  SyncML API (∼24kb)
   • Transport
   • Sync Protocol
   • Sync Source               Sync Application
  Mail API (∼15kb)
   • MIME std parser
   • Multipart support        SyncML                      Mail

  Common (∼30kb)
                                  Common
   • Push
     • SMS                       JavaME API
     • TCP/IP
  • Storage
     • FileSystem
     • RMS / Blackberry
  • Utils
                                       2008 JavaOneSM Conference | java.sun.com/javaone |   12
Funambol SyncML API - 1/2                      Sync Application

                                                SyncML                    Mail
 SyncManager
                                                       Common
  • Handles communication and protocol
                                                     JavaME API
 Sync Source
  • Client database:
    handles items to send and to store
 SyncItem
  • Abstracts objects to sync
 Sync Modes
  • Two way, one way
  • Refresh
 SyncListener
  • Notifies upper layers
 Transport
  • Http/s, Socket, Bluetooth
                                         2008 JavaOneSM Conference | java.sun.com/javaone |   13
Funambol SyncML API - 2/2
Data Synchronization Layer Class Diagram
                 SyncManager
          - config: SyncConfig                                      SyncSource
          + SyncManager(config: SyncConfig)
                                                        +   getNextItem(): SyncItem
                                                        +   getNextNewItem(): SyncItem
          + sync(source: SyncSource): void
                                                        +   getNextUpdatedItem(): SyncItem
                                                        +   getNextDeletedItem(): SyncItem
                                                        +   setItemStatus(key:String, status: int)

                                                        + addItem(item: SyncItem): int
                                                        + updateItem(item: SyncItem): int
                                                        + deleteItem(item: SyncItem): int
                                 SyncItem               + beginSync()
                         + SyncItem(key: String)        + endSync()

                         >   key: String                +   getName()
                         >   type: String               +   getSourceURI()
                         >   state: char                +   getType()
                         >   content: byte[]            +   getEncoding()
                                                        +   getSyncMode()



          SyncConfig                 DeviceConfig




                                                                   BaseSyncSource
                                         SourceConfig
                                                                  +BaseSyncSource(sc:
                                                                   SourceConfig)




                                                                                    2008 JavaOneSM Conference | java.sun.com/javaone |   14
Funambol Mail API                                                        Sync Application

                                                                          SyncML                    Mail
 Message
  • Multipart                                                                    Common
 Mime Formatter and Parser                                                     JavaME API
  • RFC 2045, 2046
 Folders
 Flags
                Message                     Message
              Header attributes          Header attributes
            To: <monty@funambol.com>    To: <monty@funambol.com>
            Subject: Today's meeting    Subject: Today's meeting
            Content-Type: text/plain;   Content-Type:
            ...                             multipart/mixed;...




                     Body                       Body
                                              Multipart
                                             BodyPart
                                           Hello, World!
                Hello, World!

                                             BodyPart
                                            <br>Hello...

                                             BodyPart
                                            [attachment]

                                                                   2008 JavaOneSM Conference | java.sun.com/javaone |   15
Funambol Common Libraries                    Sync Application

                                             SyncML                    Mail
 Push
  • SMS OTA service                                 Common
  • TCP/IP service                                JavaME API
  • Server Alert Notification (SAN)
  • OTA Configuration
 Storage
  • RMS / Blackberry
  • File System
 Utils
  • Logging
  • Base64 and QuotedPrintable
  • ThreadPool
  • Serialization

                                      2008 JavaOneSM Conference | java.sun.com/javaone |   16
How to build a sync-based application

 Prepare your SyncSource
  • Create a configuration for synchronization
  • Implement sync Items database
 Start the sync with SyncManager
  • Mapping and modifications
 Optional:
  • Create a configuration
     • Device capabilities (manufacturer, sw, hw, fw, utc support, ...)
  • Connect a SyncListener                                Sync Application
     • Notify upper layers
  • Filtering
                                                           SyncML        Mail
     • Size, age and more
                                                                     Common

                                                                   JavaME API

                                                        2008 JavaOneSM Conference | java.sun.com/javaone |   17
Let's sync our contacts
Vcard + JSR75
 File format standard for electronic business cards
  • RFC 2425 and RFC 2426
  • V2.1 Specification from the Internet Mail Consortium
  • V3.0 Specification approved by the IETF
 Java Specification Request (JSR) 75 (PIM package)
              BEGIN:VCARD
              VERSION:2.1
              N:Schepis;Edoardo
              FN:Edoardo Schepis
              ORG:Funambol
              TITLE:JavaME Tech Lead
              TEL;WORK;VOICE:+1 (650) 701 1450
              ADR;WORK:;;643 Bair Island Road, Suite 305;Redwood
              City;CA;94063;United States of America
              URL;WORK:http://www.edschepis.net
              EMAIL;PREF;INTERNET:schepis@funambol.com
              REV:20080309T150456Z
              END:VCARD
                                               2008 JavaOneSM Conference | java.sun.com/javaone |   18
Let's sync our contacts
JSR75 – get Contact from a VCard


  public Contact getContact(byte[] vCard) {
         ByteArrayInputStream bis = new
                             ByteArrayInputStream(vCard);
         PIMItem[] items = pim.fromSerialFormat(bis, “UTF-8”);

        return ((Contact) items[0]);
  }




                                        2008 JavaOneSM Conference | java.sun.com/javaone |   19
Let's sync our contacts
JSR75 – get Vcard from a Contact


  ...
  ContactList contactList = (ContactList)
         pim.openPIMList(PIM.CONTACT_LIST, PIM.READ_WRITE);
  ...

  public byte[] getVCard(Contact c) {
         ByteArrayOutputStream os = new
                                    ByteArrayOutputStream();
         PIM.getInstance().
                      toSerialFormat(c, os, “UTF-8”,
                                           “VCARD/2.1”);
         return os.toByteArray();
  }



                                         2008 JavaOneSM Conference | java.sun.com/javaone |   20
Let's sync our contacts
Synchronize Contact
  ...
        SyncConfig conf = new SyncConfig();
        conf.syncUrl = "http://somewhere.com";
        conf.username = "user";
        conf.password = "pass";

        SourceConfig sc = ClientStore.loadMySourceConfig();
        ContactSyncSource css = new ContactSyncSource(sc);

        SyncManager sm = new SyncManager(conf);

        sm.sync(sc);

        ClientStore.saveMySourceConfig();
  ...



                                            2008 JavaOneSM Conference | java.sun.com/javaone |   21
Let's sync our contacts
SyncML content
 ...
 <SyncBody>
 ... <!-- status commands -->
   <Sync><CmdID>3</CmdID> <!-- client side changes -->
     <Target><LocURI>addressbook</LocURI></Target>
     <Source><LocURI>addressbook</LocURI></Source>
     <Replace><CmdID>4</CmdID>
        <!-- one client side change -->
        <Meta xmlns="syncml:metinf">
            <Type>text/x-vcard</Type><Format>b64</Format>
        </Meta>
     <Item>
        <Source><LocURI>1</LocURI></Source> <!-- LUID -->
        <Data>... base 64 encoded content ...</Data>
     </Item>
     </Replace>
   </Sync>
   <Final/>
 </SyncBody>
 ...
                                       2008 JavaOneSM Conference | java.sun.com/javaone |   22
Agenda

 Introduction
 Funambol Java ME SDK
 Push E-mail Client
 Write Once...
 Mobile Open Source
 On the edge




                        2008 JavaOneSM Conference | java.sun.com/javaone |   23
Push E-mail Client 1/2

 E-mail on mass market handsets
  • Java ME Platform
  • Blackberry too
 All standard e-mail functionality
 Push
  • SMS and TCP based
 Advanced features e.g.
  • Send Photo
  • Call sender
  • Integrated address book eliminates typing of e-mail addresses on
    phone
 Advertising


                                                 2008 JavaOneSM Conference | java.sun.com/javaone |   24
Push E-mail Client 2/2




                         2008 JavaOneSM Conference | java.sun.com/javaone |   25
Push Implementation

 Client waits for server push
  • The ds-server detects updates on mail server and notifies the
    registered client
 Using SMS (also with app. off)
  • The app is registered with PushRegistry for incoming SMS
 Using Socket (only with app. on)
  • CTP
     • The app manages a socket open with the server (CTP server) that uses it for
       sending notifications
  • STP
     • The app starts a serversocket and waits for server notifications
     • IP natting, proxies and gateways
  • Socket and PushRegistry
     • Specs are always right... but app. closed means no connection on many
       devices and therefore no IP address

                                                       2008 JavaOneSM Conference | java.sun.com/javaone |   26
Agenda

 Introduction
 Funambol Java ME SDK
 Push E-mail Client
 Write Once...
 Mobile Open Source
 On the edge




                        2008 JavaOneSM Conference | java.sun.com/javaone |   27
ObjectOriented vs. Performance and Fragmentation

 How much does OO still flows in our veins?
  • Fat classes
  • “if” vs. polymorphism
  • Preprocessing
     • Antenna
 Provide the best User Experience with
  • 800kb of Heap space...
  • 512kb of RMS
  • 100kb of jar (suggested)
 Fragmentation
  • Targeting consumers means building many bundles
  • Platforms: the latest not always means the best
  • Branding phones: same device but with fw variant


                                               2008 JavaOneSM Conference | java.sun.com/javaone |   28
Certification process - 1/2
 Trusted 3rd party Certification
  • to avoid requests for permissions to the user
     • network, multimedia, PIM and filesystem access, SMS usage, autostart
  • to bypass security restriction of carrier-branded phones
  • To access restricted API
 Verisign/Thawte
  • Developers own private key
  • Certificate in chain
  • Very popular
  • Pay once in a year
 Java Platform Verified Program
  • GeoTrust
  • Pay per device/per release
  • Testing house applies UTI general criteria (don't mind if the sync
    works)
  • The only viable solution for Motorola devices
                                                     2008 JavaOneSM Conference | java.sun.com/javaone |   29
Certification process - 2/2

 Carriers security restrictions
  • No “Ask Once” for network connections: client-server apps become
    impractical and unrealistic
  • No Push Registration
  • No JSR 75 access
  • ... some carriers avoid also to play a MIDI file (!)
 Need an agreement with mobile operators or manufacturers
 to enter in operator/manufacturer trusted domain
  • Full access to all the API
  • No user prompts




                                                      2008 JavaOneSM Conference | java.sun.com/javaone |   30
Agenda

 Introduction
 Funambol Java ME SDK
 Push E-mail Client
 Write Once...
 Mobile Open Source
 On the edge




                        2008 JavaOneSM Conference | java.sun.com/javaone |   31
Funambol is Mobile Open Source

 Community Edition
  • AGPLv3 (Affero GPL)
  • Fixing the ASP loophole (SaaS):
       • “If you change or add to the code and you use the software as the basis of an
         Internet or network-based service, you must publish your code or buy a
         commercial license”
  • http://www.fsf.org/licensing/licenses/agpl-3.0.html
 Funambol CommEd Contains:
  • A data synchronization (DS) server that works on Linux and Windows
  • Mobile device clients e.g. Windows Mobile, Java ME Platform, Outlook,
      iPod
  •   E-mail connector that supports POP and IMAP e-mail systems
  •   Administrator tool
  •   Software development kits and interfaces
  •   Documentation
  •   Community projects, support for Exchange, Domino, BlackBerry and more
                                                         2008 JavaOneSM Conference | java.sun.com/javaone |   32
Why Open Source in mobile matters?

 Broadest device compatibility
 First to market advantage
 Largest mobile open source community
 Mobile innovation, resources and support
 Complete code transparency
 Reduced risk
 Low cost




                                        2008 JavaOneSM Conference | java.sun.com/javaone |   33
Developing open source software
 Everybody watches you! (therefore write good code)
 You belong to a Company and to a Community
 Everyone is in the spotlight
 Communities need frameworks - Customers need products




                                      2008 JavaOneSM Conference | java.sun.com/javaone |   34
Community Programs

 Code Sniper
  • Awards bounties of up to several
    thousand dollars for the development
    of connectors, plug-ins, client and
    synclets by Community Members
  • Enable the Community to influence
    the direction and reach of the
    Funambol Project through direct
    contribution of open source code
  • New: connectors for Social Networking
 Phone Sniper
  • Awards bounties to Community
    Members for testing Funambol on
    mobile devices



                                            2008 JavaOneSM Conference | java.sun.com/javaone |   35
Funambol Community
Hall of Fame

 Carlo Codega (Italy)                       Mike Taczak, Nguyen Mai
 http://sazilla.blogspot.com                (USA)
  • Mozilla Sync                            http://www.mailtrust.com
  • Android Sync                             • Blackberry Plugin
                                             • iPhone
 Paulo Sergio (Portugal)
  • Gmail Sync Plugin                       Patrick Ohly (Germany)
    http://sf.net/projects/funambol-gmail   http://www.estamos.de
  • Yahoo Sync Plugin                        • SyncEvolution
    http://sf.net/projects/funambolyahoo
                                             • iPhone




                                                    2008 JavaOneSM Conference | java.sun.com/javaone |   36
Agenda

 Introduction
 Funambol Java ME SDK
 Push E-mail Client
 Write Once...
 Mobile Open Source
 On the edge




                        2008 JavaOneSM Conference | java.sun.com/javaone |   37
The new generation of clients

 Android
 iPhone
 Linux Devices: OpenMoko, Qtopia
 Symbian




                                   2008 JavaOneSM Conference | java.sun.com/javaone |   38
Android

 To make a sync application for Android, you
 should have:
  • An Activity controlling the main UI (start sync,
    choose items)
  • Some other activities for Settings, About, etc.
  • A Service to actually doing the sync
 When the user starts the sync:
 • The Activity trigger the service using
    startService() with an Intent
  • The service is started and the method onStart() is
    called
 The Service talks back to the app using
 Intent to notify the sync progress


              http://code.google.com/p/funambol/
                                                      2008 JavaOneSM Conference | java.sun.com/javaone |   39
iPhone

 a Safari browser web app for
 all users
 a native app for developers
 and advanced users that have
 "jailbroken" their iPhone
  • Based on SyncEvolution
  • Compiled for iPhone and
    connected to the
    (undocumented)
    AddressBook interface
  • A simple COCOA user interface
    and the game is done!
 We are designing the new
 version of the client, based
 on the Apple SDK
                             http://www.funambol.com/solutions/iphone.php
                                                2008 JavaOneSM Conference | java.sun.com/javaone |   40
For More Information

 Funambol Open Source
  • http://www.funambol.com/opensource
 Funambol SDK and Documentation
  • http://www.funambol.com/opensource/downloads.php
 Code Sniper
  • http://www.funambol.com/opensource/codesniper.php
 SyncML - Data Synchronization and Device Management
  • http://www.openmobilealliance.org/syncml/




                                       2008 JavaOneSM Conference | java.sun.com/javaone |   41
my.funambol.com
 Simple set-up of phones for mobile e-mail and PIM sync
 Supports over 700 device models
 Sync, view, edit PIM dataList




                                         2008 JavaOneSM Conference | java.sun.com/javaone |   42
Summary

 Synchronization
  • Work in any environment with any device, efficiently and without
    configuration/upgrades hassle
 Funambol SDK
  • Fast development of your sync-applications
 Open Source
  • The key to beat fragmentation
 We are looking for snipers




                                                 2008 JavaOneSM Conference | java.sun.com/javaone |   43
2008 JavaOneSM Conference | java.sun.com/javaone |   44
Edoardo Schepis, Java ME Tech Lead
edoardo.schepis@funambol.com




                                     2008 JavaOneSM Conference | java.sun.com/javaone |   45

Contenu connexe

Tendances

(Oleg zhurakousky)spring integration-scala-intro
(Oleg zhurakousky)spring integration-scala-intro(Oleg zhurakousky)spring integration-scala-intro
(Oleg zhurakousky)spring integration-scala-intro
Skills Matter Talks
 

Tendances (9)

02.egovFrame Development Environment training book
02.egovFrame Development Environment training book02.egovFrame Development Environment training book
02.egovFrame Development Environment training book
 
Push to the limit - rich and pro-active user interfaces with ADF - V2 (UKOUG,...
Push to the limit - rich and pro-active user interfaces with ADF - V2 (UKOUG,...Push to the limit - rich and pro-active user interfaces with ADF - V2 (UKOUG,...
Push to the limit - rich and pro-active user interfaces with ADF - V2 (UKOUG,...
 
(23.02) GLUE Invita - Migración desde Notes a Exchange 2007
(23.02) GLUE Invita - Migración desde Notes a Exchange 2007(23.02) GLUE Invita - Migración desde Notes a Exchange 2007
(23.02) GLUE Invita - Migración desde Notes a Exchange 2007
 
(Oleg zhurakousky)spring integration-scala-intro
(Oleg zhurakousky)spring integration-scala-intro(Oleg zhurakousky)spring integration-scala-intro
(Oleg zhurakousky)spring integration-scala-intro
 
Integrating Your Site With Internet Explorer 8
Integrating Your Site With Internet Explorer 8Integrating Your Site With Internet Explorer 8
Integrating Your Site With Internet Explorer 8
 
Spring 3.1: a Walking Tour
Spring 3.1: a Walking TourSpring 3.1: a Walking Tour
Spring 3.1: a Walking Tour
 
Push to the limit - rich and pro-active user interfaces with ADF (Oracle Ope...
Push to the limit - rich and pro-active user interfaces with ADF  (Oracle Ope...Push to the limit - rich and pro-active user interfaces with ADF  (Oracle Ope...
Push to the limit - rich and pro-active user interfaces with ADF (Oracle Ope...
 
Designing a Language and System for REST-oriented service composition,as a se...
Designing a Language and System for REST-oriented service composition,as a se...Designing a Language and System for REST-oriented service composition,as a se...
Designing a Language and System for REST-oriented service composition,as a se...
 
Spring 3 - An Introduction
Spring 3 - An IntroductionSpring 3 - An Introduction
Spring 3 - An Introduction
 

En vedette

проект 7
проект 7проект 7
проект 7
Adel1na
 
2016-ALachner-resume
2016-ALachner-resume2016-ALachner-resume
2016-ALachner-resume
Al Lachner
 

En vedette (16)

Testing testing 123123
Testing testing 123123Testing testing 123123
Testing testing 123123
 
Social media part 2
Social media part 2Social media part 2
Social media part 2
 
Corneal surgery
Corneal surgeryCorneal surgery
Corneal surgery
 
Bloque ii.-subtema-iii.
Bloque ii.-subtema-iii.Bloque ii.-subtema-iii.
Bloque ii.-subtema-iii.
 
LGS_Veranstaltungskalender September.pdf
LGS_Veranstaltungskalender September.pdfLGS_Veranstaltungskalender September.pdf
LGS_Veranstaltungskalender September.pdf
 
проект 7
проект 7проект 7
проект 7
 
los medios de comunicacion
los medios de comunicacionlos medios de comunicacion
los medios de comunicacion
 
Bloque ii.-subtema-i
Bloque ii.-subtema-iBloque ii.-subtema-i
Bloque ii.-subtema-i
 
trabajo del tics
trabajo del ticstrabajo del tics
trabajo del tics
 
2016-ALachner-resume
2016-ALachner-resume2016-ALachner-resume
2016-ALachner-resume
 
Slide forma rara
Slide forma raraSlide forma rara
Slide forma rara
 
Redes sociales
Redes socialesRedes sociales
Redes sociales
 
Moving Student Presentations Online
Moving Student Presentations OnlineMoving Student Presentations Online
Moving Student Presentations Online
 
Directorio Congregación de Misioneras del Sagrado Corazón de Jesús Adgentes
Directorio Congregación de Misioneras del Sagrado Corazón de Jesús AdgentesDirectorio Congregación de Misioneras del Sagrado Corazón de Jesús Adgentes
Directorio Congregación de Misioneras del Sagrado Corazón de Jesús Adgentes
 
Open Source Selection
Open Source SelectionOpen Source Selection
Open Source Selection
 
Fabricación de papel 0002
Fabricación de papel 0002Fabricación de papel 0002
Fabricación de papel 0002
 

Similaire à Funambol JavaME Messaging Client: Lessons Learned - JavaONE 2008

Introduction to MonoTouch
Introduction to MonoTouchIntroduction to MonoTouch
Introduction to MonoTouch
Jonas Follesø
 
Funambol C++ API
Funambol C++ APIFunambol C++ API
Funambol C++ API
Funambol
 
Mike Taulty TechDays 2010 Silverlight 4 - What's New?
Mike Taulty TechDays 2010 Silverlight 4 - What's New?Mike Taulty TechDays 2010 Silverlight 4 - What's New?
Mike Taulty TechDays 2010 Silverlight 4 - What's New?
ukdpe
 
AMF Flash and .NET
AMF Flash and .NETAMF Flash and .NET
AMF Flash and .NET
Yaniv Uriel
 
下午1 intel yang, elton_mee_go-arch-update-final
下午1 intel yang, elton_mee_go-arch-update-final下午1 intel yang, elton_mee_go-arch-update-final
下午1 intel yang, elton_mee_go-arch-update-final
csdnmobile
 

Similaire à Funambol JavaME Messaging Client: Lessons Learned - JavaONE 2008 (20)

Introduction to MonoTouch
Introduction to MonoTouchIntroduction to MonoTouch
Introduction to MonoTouch
 
Funambol C++ API
Funambol C++ APIFunambol C++ API
Funambol C++ API
 
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019
 
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019
Multiplatform shared codebase with Kotlin/Native - UA Mobile 2019
 
Google App Engine At A Glance
Google App Engine At A GlanceGoogle App Engine At A Glance
Google App Engine At A Glance
 
Memonic Architecture
Memonic ArchitectureMemonic Architecture
Memonic Architecture
 
Mike Taulty TechDays 2010 Silverlight 4 - What's New?
Mike Taulty TechDays 2010 Silverlight 4 - What's New?Mike Taulty TechDays 2010 Silverlight 4 - What's New?
Mike Taulty TechDays 2010 Silverlight 4 - What's New?
 
A Walking Tour of (almost) all of Springdom
A Walking Tour of (almost) all of Springdom A Walking Tour of (almost) all of Springdom
A Walking Tour of (almost) all of Springdom
 
Why meteor
Why meteorWhy meteor
Why meteor
 
JavaOne 2012 - CON11234 - Multi device Content Display and a Smart Use of Ann...
JavaOne 2012 - CON11234 - Multi device Content Display and a Smart Use of Ann...JavaOne 2012 - CON11234 - Multi device Content Display and a Smart Use of Ann...
JavaOne 2012 - CON11234 - Multi device Content Display and a Smart Use of Ann...
 
OneTeam Media Server
OneTeam Media ServerOneTeam Media Server
OneTeam Media Server
 
What is Google App Engine?
What is Google App Engine?What is Google App Engine?
What is Google App Engine?
 
Make easier Integration of your services with Fuse Solutions - RedHat 2013
Make easier Integration of your services with Fuse Solutions - RedHat 2013Make easier Integration of your services with Fuse Solutions - RedHat 2013
Make easier Integration of your services with Fuse Solutions - RedHat 2013
 
Real World Architectures Using Windows Azure Mobile Services
Real World Architectures Using Windows Azure Mobile ServicesReal World Architectures Using Windows Azure Mobile Services
Real World Architectures Using Windows Azure Mobile Services
 
2012 05 confess_camel_cloud_integration
2012 05 confess_camel_cloud_integration2012 05 confess_camel_cloud_integration
2012 05 confess_camel_cloud_integration
 
Lecture1
Lecture1Lecture1
Lecture1
 
Native i os, android, and windows development in c# with xamarin 4
Native i os, android, and windows development in c# with xamarin 4Native i os, android, and windows development in c# with xamarin 4
Native i os, android, and windows development in c# with xamarin 4
 
AMF Flash and .NET
AMF Flash and .NETAMF Flash and .NET
AMF Flash and .NET
 
Microservices made easy JavaCro 2021
Microservices made easy JavaCro 2021Microservices made easy JavaCro 2021
Microservices made easy JavaCro 2021
 
下午1 intel yang, elton_mee_go-arch-update-final
下午1 intel yang, elton_mee_go-arch-update-final下午1 intel yang, elton_mee_go-arch-update-final
下午1 intel yang, elton_mee_go-arch-update-final
 

Plus de Edoardo Schepis (11)

Openshift Enterprise
Openshift EnterpriseOpenshift Enterprise
Openshift Enterprise
 
Joomla in the cloud with Openshift
Joomla in the cloud with OpenshiftJoomla in the cloud with Openshift
Joomla in the cloud with Openshift
 
Intro jbug milano
Intro jbug milanoIntro jbug milano
Intro jbug milano
 
Scrumbuts - Italian Agile Day 2010
Scrumbuts - Italian Agile Day 2010Scrumbuts - Italian Agile Day 2010
Scrumbuts - Italian Agile Day 2010
 
Funambol: introducing SCRUM in software product development - AgileDay Italia
Funambol: introducing SCRUM in software product development - AgileDay ItaliaFunambol: introducing SCRUM in software product development - AgileDay Italia
Funambol: introducing SCRUM in software product development - AgileDay Italia
 
JavaME UI - JMDF 2007
JavaME UI - JMDF 2007JavaME UI - JMDF 2007
JavaME UI - JMDF 2007
 
JavaME Overview - JMDF 2007
JavaME Overview - JMDF 2007JavaME Overview - JMDF 2007
JavaME Overview - JMDF 2007
 
JavaME Development Workflow - JMDF 2007
JavaME Development Workflow - JMDF 2007JavaME Development Workflow - JMDF 2007
JavaME Development Workflow - JMDF 2007
 
JMDF Introduction - JMDF 2005
JMDF Introduction - JMDF 2005JMDF Introduction - JMDF 2005
JMDF Introduction - JMDF 2005
 
JavaME Deploy and Test - JMDF 2005
JavaME Deploy and Test - JMDF 2005JavaME Deploy and Test - JMDF 2005
JavaME Deploy and Test - JMDF 2005
 
Alla ricerca della User Story perduta
Alla ricerca della User Story perdutaAlla ricerca della User Story perduta
Alla ricerca della User Story perduta
 

Dernier

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Dernier (20)

Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 

Funambol JavaME Messaging Client: Lessons Learned - JavaONE 2008

  • 1. Funambol Java™ Platform, Java ME Technology-Based Open-Source Messaging Client: Lessons Learned Edoardo Schepis, Java ME Tech Lead Session: TS-4992
  • 2. What developers should know about building open source Java Platform, Micro Edition (Java ME platform) messaging applications for the mass market How to build synchronization clients for Java ME technology-based devices, starting from the Funambol Java ME SDK 2008 JavaOneSM Conference | java.sun.com/javaone | 2
  • 3. Agenda Introduction Funambol Java ME SDK Push E-mail Client Write Once... Mobile Open Source On the edge 2008 JavaOneSM Conference | java.sun.com/javaone | 3
  • 4. Agenda Introduction Funambol Java ME SDK Push e-mail Client Write Once... Mobile Open Source On the edge 2008 JavaOneSM Conference | java.sun.com/javaone | 4
  • 5. Synchronization Data synchronization is the process of making two sets of data look identical Which means • Exchange data modifications • Conflict resolution Synchronization Protocol Features • Define a method for establishing a synchronization session and communicating modifications • Record naming and identification • Define protocol commands 2008 JavaOneSM Conference | java.sun.com/javaone | 5
  • 6. Synchronization Why do we need it? • PDA, Handsets, iPod, Outlook, Thunderbird, Skype, Gmail, Yahoo, Jajah, Facebook, Web... • Mail, Contacts, Calendar • But also bookmarks, SMS, MP3, documents, files... • Mobile field work force The common usage • PC Suite, Bluetooth, Active Sync, iSync: wired and PC Over the Air is the key • Data plans • It just works • Wider support 2008 JavaOneSM Conference | java.sun.com/javaone | 6
  • 7. OTA Synchronization with mobile devices OMA DS (former SyncML) • Platform independent • Open Uses SyncML to automatically synchronize • Contacts (address book), including photos • Calendar • Tasks and notes • Additional and custom data types Server maintains backup of PIM data Data can be accessed via web Full capabilities for mobile backup service 2008 JavaOneSM Conference | java.sun.com/javaone | 7
  • 8. Native sync or not? Native is good, but... • Not always available (branding phones...) • Native clients not so easy to configure (even to find...) Do not reinvent the wheel, just make it better • For all the handsets • Java ME Platform, Windows Mobile, Linux, Blackberry, Android, iPhone • For all the clients • Outlook, Thunderbird, Evolution • For all the Mail/PIM servers • POP, IMAP, Exchange... 2008 JavaOneSM Conference | java.sun.com/javaone | 8
  • 9. Funambol Software Overview Push • e-mail, contacts and calendar Mobile Backup & PIM Sync Mobile Device Management Mobilizing Data & Applications 2008 JavaOneSM Conference | java.sun.com/javaone | 9
  • 10. Funambol Software Overview Funambol Portal 1.5B+ Devices Email/PIM Nokia POP/IMAP Motorola Yahoo! Sony Ericsson Hotmail Samsung Gmail LG AOL SyncML Outlook Win Mobile Exchange* Java ME Domino* iPhone Push PIM OTA Mobile Thunderbird* Android* Email Sync Config Platform Custom/3rd party Funambol Server *Community project 2008 JavaOneSM Conference | java.sun.com/javaone | 10
  • 11. Agenda Introduction Funambol Java ME SDK Push E-mail Client Write Once... Mobile Open Source On the edge 2008 JavaOneSM Conference | java.sun.com/javaone | 11
  • 12. Funambol Java ME SDK MIDP 2.0, CLDC 1.0, WMA 1.1 SyncML API (∼24kb) • Transport • Sync Protocol • Sync Source Sync Application Mail API (∼15kb) • MIME std parser • Multipart support SyncML Mail Common (∼30kb) Common • Push • SMS JavaME API • TCP/IP • Storage • FileSystem • RMS / Blackberry • Utils 2008 JavaOneSM Conference | java.sun.com/javaone | 12
  • 13. Funambol SyncML API - 1/2 Sync Application SyncML Mail SyncManager Common • Handles communication and protocol JavaME API Sync Source • Client database: handles items to send and to store SyncItem • Abstracts objects to sync Sync Modes • Two way, one way • Refresh SyncListener • Notifies upper layers Transport • Http/s, Socket, Bluetooth 2008 JavaOneSM Conference | java.sun.com/javaone | 13
  • 14. Funambol SyncML API - 2/2 Data Synchronization Layer Class Diagram SyncManager - config: SyncConfig SyncSource + SyncManager(config: SyncConfig) + getNextItem(): SyncItem + getNextNewItem(): SyncItem + sync(source: SyncSource): void + getNextUpdatedItem(): SyncItem + getNextDeletedItem(): SyncItem + setItemStatus(key:String, status: int) + addItem(item: SyncItem): int + updateItem(item: SyncItem): int + deleteItem(item: SyncItem): int SyncItem + beginSync() + SyncItem(key: String) + endSync() > key: String + getName() > type: String + getSourceURI() > state: char + getType() > content: byte[] + getEncoding() + getSyncMode() SyncConfig DeviceConfig BaseSyncSource SourceConfig +BaseSyncSource(sc: SourceConfig) 2008 JavaOneSM Conference | java.sun.com/javaone | 14
  • 15. Funambol Mail API Sync Application SyncML Mail Message • Multipart Common Mime Formatter and Parser JavaME API • RFC 2045, 2046 Folders Flags Message Message Header attributes Header attributes To: <monty@funambol.com> To: <monty@funambol.com> Subject: Today's meeting Subject: Today's meeting Content-Type: text/plain; Content-Type: ... multipart/mixed;... Body Body Multipart BodyPart Hello, World! Hello, World! BodyPart <br>Hello... BodyPart [attachment] 2008 JavaOneSM Conference | java.sun.com/javaone | 15
  • 16. Funambol Common Libraries Sync Application SyncML Mail Push • SMS OTA service Common • TCP/IP service JavaME API • Server Alert Notification (SAN) • OTA Configuration Storage • RMS / Blackberry • File System Utils • Logging • Base64 and QuotedPrintable • ThreadPool • Serialization 2008 JavaOneSM Conference | java.sun.com/javaone | 16
  • 17. How to build a sync-based application Prepare your SyncSource • Create a configuration for synchronization • Implement sync Items database Start the sync with SyncManager • Mapping and modifications Optional: • Create a configuration • Device capabilities (manufacturer, sw, hw, fw, utc support, ...) • Connect a SyncListener Sync Application • Notify upper layers • Filtering SyncML Mail • Size, age and more Common JavaME API 2008 JavaOneSM Conference | java.sun.com/javaone | 17
  • 18. Let's sync our contacts Vcard + JSR75 File format standard for electronic business cards • RFC 2425 and RFC 2426 • V2.1 Specification from the Internet Mail Consortium • V3.0 Specification approved by the IETF Java Specification Request (JSR) 75 (PIM package) BEGIN:VCARD VERSION:2.1 N:Schepis;Edoardo FN:Edoardo Schepis ORG:Funambol TITLE:JavaME Tech Lead TEL;WORK;VOICE:+1 (650) 701 1450 ADR;WORK:;;643 Bair Island Road, Suite 305;Redwood City;CA;94063;United States of America URL;WORK:http://www.edschepis.net EMAIL;PREF;INTERNET:schepis@funambol.com REV:20080309T150456Z END:VCARD 2008 JavaOneSM Conference | java.sun.com/javaone | 18
  • 19. Let's sync our contacts JSR75 – get Contact from a VCard public Contact getContact(byte[] vCard) { ByteArrayInputStream bis = new ByteArrayInputStream(vCard); PIMItem[] items = pim.fromSerialFormat(bis, “UTF-8”); return ((Contact) items[0]); } 2008 JavaOneSM Conference | java.sun.com/javaone | 19
  • 20. Let's sync our contacts JSR75 – get Vcard from a Contact ... ContactList contactList = (ContactList) pim.openPIMList(PIM.CONTACT_LIST, PIM.READ_WRITE); ... public byte[] getVCard(Contact c) { ByteArrayOutputStream os = new ByteArrayOutputStream(); PIM.getInstance(). toSerialFormat(c, os, “UTF-8”, “VCARD/2.1”); return os.toByteArray(); } 2008 JavaOneSM Conference | java.sun.com/javaone | 20
  • 21. Let's sync our contacts Synchronize Contact ... SyncConfig conf = new SyncConfig(); conf.syncUrl = "http://somewhere.com"; conf.username = "user"; conf.password = "pass"; SourceConfig sc = ClientStore.loadMySourceConfig(); ContactSyncSource css = new ContactSyncSource(sc); SyncManager sm = new SyncManager(conf); sm.sync(sc); ClientStore.saveMySourceConfig(); ... 2008 JavaOneSM Conference | java.sun.com/javaone | 21
  • 22. Let's sync our contacts SyncML content ... <SyncBody> ... <!-- status commands --> <Sync><CmdID>3</CmdID> <!-- client side changes --> <Target><LocURI>addressbook</LocURI></Target> <Source><LocURI>addressbook</LocURI></Source> <Replace><CmdID>4</CmdID> <!-- one client side change --> <Meta xmlns="syncml:metinf"> <Type>text/x-vcard</Type><Format>b64</Format> </Meta> <Item> <Source><LocURI>1</LocURI></Source> <!-- LUID --> <Data>... base 64 encoded content ...</Data> </Item> </Replace> </Sync> <Final/> </SyncBody> ... 2008 JavaOneSM Conference | java.sun.com/javaone | 22
  • 23. Agenda Introduction Funambol Java ME SDK Push E-mail Client Write Once... Mobile Open Source On the edge 2008 JavaOneSM Conference | java.sun.com/javaone | 23
  • 24. Push E-mail Client 1/2 E-mail on mass market handsets • Java ME Platform • Blackberry too All standard e-mail functionality Push • SMS and TCP based Advanced features e.g. • Send Photo • Call sender • Integrated address book eliminates typing of e-mail addresses on phone Advertising 2008 JavaOneSM Conference | java.sun.com/javaone | 24
  • 25. Push E-mail Client 2/2 2008 JavaOneSM Conference | java.sun.com/javaone | 25
  • 26. Push Implementation Client waits for server push • The ds-server detects updates on mail server and notifies the registered client Using SMS (also with app. off) • The app is registered with PushRegistry for incoming SMS Using Socket (only with app. on) • CTP • The app manages a socket open with the server (CTP server) that uses it for sending notifications • STP • The app starts a serversocket and waits for server notifications • IP natting, proxies and gateways • Socket and PushRegistry • Specs are always right... but app. closed means no connection on many devices and therefore no IP address 2008 JavaOneSM Conference | java.sun.com/javaone | 26
  • 27. Agenda Introduction Funambol Java ME SDK Push E-mail Client Write Once... Mobile Open Source On the edge 2008 JavaOneSM Conference | java.sun.com/javaone | 27
  • 28. ObjectOriented vs. Performance and Fragmentation How much does OO still flows in our veins? • Fat classes • “if” vs. polymorphism • Preprocessing • Antenna Provide the best User Experience with • 800kb of Heap space... • 512kb of RMS • 100kb of jar (suggested) Fragmentation • Targeting consumers means building many bundles • Platforms: the latest not always means the best • Branding phones: same device but with fw variant 2008 JavaOneSM Conference | java.sun.com/javaone | 28
  • 29. Certification process - 1/2 Trusted 3rd party Certification • to avoid requests for permissions to the user • network, multimedia, PIM and filesystem access, SMS usage, autostart • to bypass security restriction of carrier-branded phones • To access restricted API Verisign/Thawte • Developers own private key • Certificate in chain • Very popular • Pay once in a year Java Platform Verified Program • GeoTrust • Pay per device/per release • Testing house applies UTI general criteria (don't mind if the sync works) • The only viable solution for Motorola devices 2008 JavaOneSM Conference | java.sun.com/javaone | 29
  • 30. Certification process - 2/2 Carriers security restrictions • No “Ask Once” for network connections: client-server apps become impractical and unrealistic • No Push Registration • No JSR 75 access • ... some carriers avoid also to play a MIDI file (!) Need an agreement with mobile operators or manufacturers to enter in operator/manufacturer trusted domain • Full access to all the API • No user prompts 2008 JavaOneSM Conference | java.sun.com/javaone | 30
  • 31. Agenda Introduction Funambol Java ME SDK Push E-mail Client Write Once... Mobile Open Source On the edge 2008 JavaOneSM Conference | java.sun.com/javaone | 31
  • 32. Funambol is Mobile Open Source Community Edition • AGPLv3 (Affero GPL) • Fixing the ASP loophole (SaaS): • “If you change or add to the code and you use the software as the basis of an Internet or network-based service, you must publish your code or buy a commercial license” • http://www.fsf.org/licensing/licenses/agpl-3.0.html Funambol CommEd Contains: • A data synchronization (DS) server that works on Linux and Windows • Mobile device clients e.g. Windows Mobile, Java ME Platform, Outlook, iPod • E-mail connector that supports POP and IMAP e-mail systems • Administrator tool • Software development kits and interfaces • Documentation • Community projects, support for Exchange, Domino, BlackBerry and more 2008 JavaOneSM Conference | java.sun.com/javaone | 32
  • 33. Why Open Source in mobile matters? Broadest device compatibility First to market advantage Largest mobile open source community Mobile innovation, resources and support Complete code transparency Reduced risk Low cost 2008 JavaOneSM Conference | java.sun.com/javaone | 33
  • 34. Developing open source software Everybody watches you! (therefore write good code) You belong to a Company and to a Community Everyone is in the spotlight Communities need frameworks - Customers need products 2008 JavaOneSM Conference | java.sun.com/javaone | 34
  • 35. Community Programs Code Sniper • Awards bounties of up to several thousand dollars for the development of connectors, plug-ins, client and synclets by Community Members • Enable the Community to influence the direction and reach of the Funambol Project through direct contribution of open source code • New: connectors for Social Networking Phone Sniper • Awards bounties to Community Members for testing Funambol on mobile devices 2008 JavaOneSM Conference | java.sun.com/javaone | 35
  • 36. Funambol Community Hall of Fame Carlo Codega (Italy) Mike Taczak, Nguyen Mai http://sazilla.blogspot.com (USA) • Mozilla Sync http://www.mailtrust.com • Android Sync • Blackberry Plugin • iPhone Paulo Sergio (Portugal) • Gmail Sync Plugin Patrick Ohly (Germany) http://sf.net/projects/funambol-gmail http://www.estamos.de • Yahoo Sync Plugin • SyncEvolution http://sf.net/projects/funambolyahoo • iPhone 2008 JavaOneSM Conference | java.sun.com/javaone | 36
  • 37. Agenda Introduction Funambol Java ME SDK Push E-mail Client Write Once... Mobile Open Source On the edge 2008 JavaOneSM Conference | java.sun.com/javaone | 37
  • 38. The new generation of clients Android iPhone Linux Devices: OpenMoko, Qtopia Symbian 2008 JavaOneSM Conference | java.sun.com/javaone | 38
  • 39. Android To make a sync application for Android, you should have: • An Activity controlling the main UI (start sync, choose items) • Some other activities for Settings, About, etc. • A Service to actually doing the sync When the user starts the sync: • The Activity trigger the service using startService() with an Intent • The service is started and the method onStart() is called The Service talks back to the app using Intent to notify the sync progress http://code.google.com/p/funambol/ 2008 JavaOneSM Conference | java.sun.com/javaone | 39
  • 40. iPhone a Safari browser web app for all users a native app for developers and advanced users that have "jailbroken" their iPhone • Based on SyncEvolution • Compiled for iPhone and connected to the (undocumented) AddressBook interface • A simple COCOA user interface and the game is done! We are designing the new version of the client, based on the Apple SDK http://www.funambol.com/solutions/iphone.php 2008 JavaOneSM Conference | java.sun.com/javaone | 40
  • 41. For More Information Funambol Open Source • http://www.funambol.com/opensource Funambol SDK and Documentation • http://www.funambol.com/opensource/downloads.php Code Sniper • http://www.funambol.com/opensource/codesniper.php SyncML - Data Synchronization and Device Management • http://www.openmobilealliance.org/syncml/ 2008 JavaOneSM Conference | java.sun.com/javaone | 41
  • 42. my.funambol.com Simple set-up of phones for mobile e-mail and PIM sync Supports over 700 device models Sync, view, edit PIM dataList 2008 JavaOneSM Conference | java.sun.com/javaone | 42
  • 43. Summary Synchronization • Work in any environment with any device, efficiently and without configuration/upgrades hassle Funambol SDK • Fast development of your sync-applications Open Source • The key to beat fragmentation We are looking for snipers 2008 JavaOneSM Conference | java.sun.com/javaone | 43
  • 44. 2008 JavaOneSM Conference | java.sun.com/javaone | 44
  • 45. Edoardo Schepis, Java ME Tech Lead edoardo.schepis@funambol.com 2008 JavaOneSM Conference | java.sun.com/javaone | 45