KEMBAR78
Jalimo Slides Linuxtag2008 | ODP
Unifying mobile development
Mobile platforms
Windows Mobile Very Closed Main language: Visual C++ Supported developing: Visual Basic .NET ASP.NET Supported devices: many phones Company behind: Microsoft
BlackBerry Very Closed Main language: Java (J2ME) + proprietary extensions Supported devices: BlackBerry Company behind: RIM
iPhone Very Closed Proprietary marketing model Based on BSD + iPhone Framework Main language: Objective C Unofficial gcc based SDK available Device: iPhone (1 model) Company behind: Apple
Symbian S60 Proprietary, but open for development Based on Symbian Main language: Symbian C++ Supported frameworks: Open C (Posix porting layer) Java (J2ME) Python Adobe Flash Lite / Web Runtime Supported devices: many phones Company behind: Nokia
Android Free & Open? Not known jet! Based on Linux + Android runtime GUI Toolkits: Android Language: Java only Written from scratch Supported devices: emulator + HTC (announced) Company behind: Google + Open Handset Alliance
Maemo/ITOS 98 % Free & Open Based on Linux, DBus and X11 GUI Toolkits: GTK/hildon, QT (soon) Main languages: C, Python, C++ Based on Debian (forked) .deb based packaging Supported device: n810 (1 model) Company behind: Nokia
OpenMoko 100 % Free & Open Based on Linux, DBus and X11 GUI Toolkits: GTK, QT, EFL Main languages: C, Python Based on OpenEmbedded .ipk based packaging Device: Neo freerunner (1 model) Company behind: FIC/OpenMoko
Biggest problems in mobile development
Problem 1: Too many restrictions Only small control over the system Often only limited APIs are available Features are locked, signing processes are forced The core components are not replaceable Free platforms change this:
Problem 2: Too many platforms Large number of different platforms Few standards for cross platform development J2ME HTML/Web Applications J2ME often relies on proprietary extensions Some platforms cover only one device solution: Cross platform development standards Or: Focus on widespreaded platforms
Problem 3: Different development approach Experienced developers want to reuse their knowledge Companies don't want to hire additional staff for mobile development Development Environments should be the same in mobile and desktop development Applications/frameworks should be reused Multi tier applications should use a homogeneous software stack if possible Solved by:
Problem 3: Different development approach Experienced developers want to reuse their knowledge Companies don't want to hire additional staff for mobile development Development Environments should be the same in mobile and desktop development Applications/frameworks should be reused Multi tier applications should use a homogeneous software stack if possible Solved by: For a small group of target developers, only!
What's wrong with J2ME? Targets much of the problems, but .. Has too much restrictions Differs to much from usual Java Completely different APIs No code reuse Even if it is standardized: Every manufacturer has different implementations Applications have to be device specific Not powerful enough for much application types
What's about Android? Targets much of the problems ... has only few restrictions uses real Java promises wide availability still differs from usual Java special APIs code reuse only below the GUI is not standardized is not designed for integration in other platforms does not integrate other approaches ... but ...
What's about Maemo & OpenMoko? They do a lot of things right ... eliminate restrictions use real desktop toolkits each platform has only one device no API standardization (between those platforms) focus only on a very special developer community ... but ...
What's about QT? QT has the chance to become the solution! Good, powerful Toolkit Wide availability Windows, Windows Mobile Linux, OpenMoko Good Java bindings: Jambi Acquired by Nokia Soon supported on Symbian and Maemo
What is jalimo? Project to bring free full Java to mobile and embedded platforms. Composition and maintainment of a complete solution stack for its target platforms. Support for the development lifecycle to target mobile devices. Current targets: maemo, OpenMoko No additional mobile platform! No additional JVM! What is jalimo not:
Why we are doing jalimo? Small devices have special Java requirements Integration in mobile windowing systems Most free linux mobile distributions are not aware of Java Java developers need special support when they target Linux mobile devices Java developers need a maintained platform to rely on – especially commercial ones
Why we are doing jalimo? Tarent has employed 56 people (~40 Java developer) Most of our projects use java on the server side One technology among our applications! Use the same staff for mobile and server side development! We want:
Why we are doing jalimo? FREEDOM and FUN!
Components we use Mostly J2SE 1.5 focused Different alternatives for different requirements The goal is to add more alternatives Focus: CacaoJVM, GNU Classpath, Eclipse SWT Also: jamvm, swing, java-gnome, midpath Also: Mysaifu JVM + eSWT on Windows Mobile Additional libraries: java-dbus, scio (more coming) Toolchain support: OpenEmbedded, maven-pkg-plugin
Parts GUI Runtime Build Plattform Cacao JVM JamVM GNU Classpath OpenJDK SWT AWT/Swing java-gnome MIDPath maven packaging plugin OpenEmbedded Eclipse maemo ...?... openmoko ......
So, what is possible? Run nearly all Java 1.5 applications on maemo and OpenMoko Choose between SWT, Swing or java-gnome GUI Run J2ME applications Integrate into the target system, using dbus Consume web services using scio Package your application as .deb or .ipk using maven Porting our stack to every Linux Embedded platform, very fast
OpenEmbedded Toolchain OpenEmbedded infrastructure self-hosting toolchain builds jalimo packages for arbitrary distributions and hardware. From a single source! OpenEmbedded build recipes „swt“, „dbus-java“, ... in OpenEmbedded upstream and Jalimo svn-overlay Repositories public repositories for maemo and OpenMoko Integration in OpenMoko, Angstroem, ...
maven packaging plugin Maven2 is currently the mainstream build tool for Java Maven allows dependency definition at artifact (.jar-file) level Packages Maven2 projects for specific distributions On the fly dependency translation maven dependencies => platform dependencies Supported Platforms Maemo Chinook (.deb) OpenMoko (.ipk) Debian (.deb)
What we are missing most? A VM which is as fast as cacao with the startup of jamvm Debugging support (JVMTI) Really fast Swing implementation for OpenMoko More free phones!
What we are missing most? A VM which is as fast as cacao with the startup of jamvm Debugging support (JVMTI) Really fast Swing implementation for OpenMoko More free phones!
JIT-Cache Robert Schuster implemented caching of native code for the CacaoJVM (will be released soon) Allows fast startup of applications Integration into the build process using Qemu: precompiled binaries
Small goals More library code and integration Integrate SUN's Swing implementation Attract more developers Package the complete Eclipse RCP/eRCP Support QT-Jambi More applications Big goals (whishes) Port Android APIs to other platforms SWT implementations for Android, iPhone Get additional VMs e.g. for Symbian S60
Resources jalimo.org Documentation of how to install binary packages for Maemo & OpenMoko Simple development & packaging tutorial mvn-pkg-plugin.evolvis.org: Project site and documentation (examples!) for packaging plugin
Thank you! CC-BY-SA 3.0 or GNU FDL 1.2 or, at your option, any later version.

Jalimo Slides Linuxtag2008

  • 1.
  • 2.
  • 3.
    Windows Mobile VeryClosed Main language: Visual C++ Supported developing: Visual Basic .NET ASP.NET Supported devices: many phones Company behind: Microsoft
  • 4.
    BlackBerry Very ClosedMain language: Java (J2ME) + proprietary extensions Supported devices: BlackBerry Company behind: RIM
  • 5.
    iPhone Very ClosedProprietary marketing model Based on BSD + iPhone Framework Main language: Objective C Unofficial gcc based SDK available Device: iPhone (1 model) Company behind: Apple
  • 6.
    Symbian S60 Proprietary,but open for development Based on Symbian Main language: Symbian C++ Supported frameworks: Open C (Posix porting layer) Java (J2ME) Python Adobe Flash Lite / Web Runtime Supported devices: many phones Company behind: Nokia
  • 7.
    Android Free &Open? Not known jet! Based on Linux + Android runtime GUI Toolkits: Android Language: Java only Written from scratch Supported devices: emulator + HTC (announced) Company behind: Google + Open Handset Alliance
  • 8.
    Maemo/ITOS 98 %Free & Open Based on Linux, DBus and X11 GUI Toolkits: GTK/hildon, QT (soon) Main languages: C, Python, C++ Based on Debian (forked) .deb based packaging Supported device: n810 (1 model) Company behind: Nokia
  • 9.
    OpenMoko 100 %Free & Open Based on Linux, DBus and X11 GUI Toolkits: GTK, QT, EFL Main languages: C, Python Based on OpenEmbedded .ipk based packaging Device: Neo freerunner (1 model) Company behind: FIC/OpenMoko
  • 10.
    Biggest problems inmobile development
  • 11.
    Problem 1: Toomany restrictions Only small control over the system Often only limited APIs are available Features are locked, signing processes are forced The core components are not replaceable Free platforms change this:
  • 12.
    Problem 2: Toomany platforms Large number of different platforms Few standards for cross platform development J2ME HTML/Web Applications J2ME often relies on proprietary extensions Some platforms cover only one device solution: Cross platform development standards Or: Focus on widespreaded platforms
  • 13.
    Problem 3: Differentdevelopment approach Experienced developers want to reuse their knowledge Companies don't want to hire additional staff for mobile development Development Environments should be the same in mobile and desktop development Applications/frameworks should be reused Multi tier applications should use a homogeneous software stack if possible Solved by:
  • 14.
    Problem 3: Differentdevelopment approach Experienced developers want to reuse their knowledge Companies don't want to hire additional staff for mobile development Development Environments should be the same in mobile and desktop development Applications/frameworks should be reused Multi tier applications should use a homogeneous software stack if possible Solved by: For a small group of target developers, only!
  • 15.
    What's wrong withJ2ME? Targets much of the problems, but .. Has too much restrictions Differs to much from usual Java Completely different APIs No code reuse Even if it is standardized: Every manufacturer has different implementations Applications have to be device specific Not powerful enough for much application types
  • 16.
    What's about Android?Targets much of the problems ... has only few restrictions uses real Java promises wide availability still differs from usual Java special APIs code reuse only below the GUI is not standardized is not designed for integration in other platforms does not integrate other approaches ... but ...
  • 17.
    What's about Maemo& OpenMoko? They do a lot of things right ... eliminate restrictions use real desktop toolkits each platform has only one device no API standardization (between those platforms) focus only on a very special developer community ... but ...
  • 18.
    What's about QT?QT has the chance to become the solution! Good, powerful Toolkit Wide availability Windows, Windows Mobile Linux, OpenMoko Good Java bindings: Jambi Acquired by Nokia Soon supported on Symbian and Maemo
  • 19.
    What is jalimo?Project to bring free full Java to mobile and embedded platforms. Composition and maintainment of a complete solution stack for its target platforms. Support for the development lifecycle to target mobile devices. Current targets: maemo, OpenMoko No additional mobile platform! No additional JVM! What is jalimo not:
  • 20.
    Why we aredoing jalimo? Small devices have special Java requirements Integration in mobile windowing systems Most free linux mobile distributions are not aware of Java Java developers need special support when they target Linux mobile devices Java developers need a maintained platform to rely on – especially commercial ones
  • 21.
    Why we aredoing jalimo? Tarent has employed 56 people (~40 Java developer) Most of our projects use java on the server side One technology among our applications! Use the same staff for mobile and server side development! We want:
  • 22.
    Why we aredoing jalimo? FREEDOM and FUN!
  • 23.
    Components we useMostly J2SE 1.5 focused Different alternatives for different requirements The goal is to add more alternatives Focus: CacaoJVM, GNU Classpath, Eclipse SWT Also: jamvm, swing, java-gnome, midpath Also: Mysaifu JVM + eSWT on Windows Mobile Additional libraries: java-dbus, scio (more coming) Toolchain support: OpenEmbedded, maven-pkg-plugin
  • 24.
    Parts GUI RuntimeBuild Plattform Cacao JVM JamVM GNU Classpath OpenJDK SWT AWT/Swing java-gnome MIDPath maven packaging plugin OpenEmbedded Eclipse maemo ...?... openmoko ......
  • 25.
    So, what ispossible? Run nearly all Java 1.5 applications on maemo and OpenMoko Choose between SWT, Swing or java-gnome GUI Run J2ME applications Integrate into the target system, using dbus Consume web services using scio Package your application as .deb or .ipk using maven Porting our stack to every Linux Embedded platform, very fast
  • 26.
    OpenEmbedded Toolchain OpenEmbeddedinfrastructure self-hosting toolchain builds jalimo packages for arbitrary distributions and hardware. From a single source! OpenEmbedded build recipes „swt“, „dbus-java“, ... in OpenEmbedded upstream and Jalimo svn-overlay Repositories public repositories for maemo and OpenMoko Integration in OpenMoko, Angstroem, ...
  • 27.
    maven packaging pluginMaven2 is currently the mainstream build tool for Java Maven allows dependency definition at artifact (.jar-file) level Packages Maven2 projects for specific distributions On the fly dependency translation maven dependencies => platform dependencies Supported Platforms Maemo Chinook (.deb) OpenMoko (.ipk) Debian (.deb)
  • 28.
    What we aremissing most? A VM which is as fast as cacao with the startup of jamvm Debugging support (JVMTI) Really fast Swing implementation for OpenMoko More free phones!
  • 29.
    What we aremissing most? A VM which is as fast as cacao with the startup of jamvm Debugging support (JVMTI) Really fast Swing implementation for OpenMoko More free phones!
  • 30.
    JIT-Cache Robert Schusterimplemented caching of native code for the CacaoJVM (will be released soon) Allows fast startup of applications Integration into the build process using Qemu: precompiled binaries
  • 31.
    Small goals Morelibrary code and integration Integrate SUN's Swing implementation Attract more developers Package the complete Eclipse RCP/eRCP Support QT-Jambi More applications Big goals (whishes) Port Android APIs to other platforms SWT implementations for Android, iPhone Get additional VMs e.g. for Symbian S60
  • 32.
    Resources jalimo.org Documentationof how to install binary packages for Maemo & OpenMoko Simple development & packaging tutorial mvn-pkg-plugin.evolvis.org: Project site and documentation (examples!) for packaging plugin
  • 33.
    Thank you! CC-BY-SA3.0 or GNU FDL 1.2 or, at your option, any later version.