Your SlideShare is downloading. ×
0
Java-Linux-Mobile Plattform
Status <ul><li>Zuwachs an kleinen mobilen Linux Endgeräten </li></ul><ul><li>Java auf mobilen Endgeräten </li></ul><ul><li...
Java embedded? <ul><li>Was ist Java? </li></ul><ul><ul><li>J2ME CLDC </li></ul></ul><ul><ul><li>J2ME CDC </li></ul></ul><u...
Java und Java-like Implementierungen <ul><li>Sun J2SE – (GPL und proprietär) </li></ul><ul><li>Sun J2ME PhoneME (GPL) </li...
Wie immer – die GUI machts! <ul><li>Außer J2ME CLDC ist alles weitestgehend >= Java 1.3. </li></ul><ul><li>Prägnant: Die u...
Pocket-Size Linux <ul><li>Distributionen </li></ul><ul><ul><li>Familiar (OpenEmbedded, ipkg) </li></ul></ul><ul><ul><li>Ån...
Java @ Pocket-Size Linux <ul><li>Meist sporadisch:  </li></ul><ul><ul><li>z.B. jamvm und altes gnu classpath </li></ul></u...
Welche Probleme gibt es? <ul><li>Bei der Java-Portierung </li></ul><ul><ul><li>Build Prozess ist meist etwas anders </li><...
JaLiMo <ul><li>JaLiMo ist eine Initiative um einen vollständigen freien Java-Stack für mobile Linux Endgeräte aufzubauen. ...
JaLiMo - Wer? <ul><li>Gesponsort von Tarent GmbH </li></ul><ul><ul><li>Sebastian Mancke </li></ul></ul><ul><ul><li>Robert ...
JaLiMo - Was? Integration Integration GUI Runtime Build Plattform CACAO JVM JamVM GNU Classpath phoneME MIDPath Swing/esch...
Build Strategien - Cross Compiling <ul><ul><li>Cross Toolchain (gcc, ld, .. für arm) </li></ul></ul><ul><ul><li>Rootstrap ...
Build Strategien - Scratchbox <ul><ul><li>Auf Qemu basierender Emulator </li></ul></ul><ul><ul><li>Mit Toolchain und Roots...
Build Strategien - maven2 <ul><ul><li>Etablierte Java Build Umgebung  </li></ul></ul><ul><li>Vorteile </li></ul><ul><ul><l...
maven packaging plugin <ul><li>Packaging </li></ul><ul><ul><li>IzPack installer (für Desktop) </li></ul></ul><ul><ul><li>....
maven packaging plugin <ul><li>Java package fur maemo in 5 min! </li></ul><ul><li>.. code schreiben und pom.xml anpassen ....
maven mit JNI code <ul><li>Normales maven packaging Projekt + Makefile </li></ul><ul><li>Ablauf:  mvn pkg:deb </li></ul><u...
Java-gnome <ul><li>Java-gnome ist ein bereits 9 Jahre bestehendes Projekt </li></ul><ul><li>Version 2 hat eine recht hohe ...
Java-gnome - Konzept <ul><li>Code Generierung der JNI Schicht </li></ul><ul><ul><li>Aus den GTK Header Files werden Objekt...
Java-gnome <ul><li>Warum von Java-gnome </li></ul><ul><ul><li>Performant und leichtgewichtig </li></ul></ul><ul><ul><li>Na...
Java-gnome - Abdeckung <ul><li>Im Upstream Projekt sehr gering: </li></ul><ul><ul><li>Window, Widget, Button, Label, Hbox,...
libmaemo <ul><li>Erweiterungen der java-gnome Komponenten mit Bindings zum Hildon Framework. Nötige Schritte: </li></ul><u...
MIDPath <ul><li>MIDPath ist eine MIDP2 Implementierung auf Basis des MIDP </li></ul><ul><li>codes der Sun PhoneME. </li></...
MIDPath - Architektur <ul><li>Durch unterschiedliche Backends ist MIDPath recht portabel. </li></ul><ul><li>Für den Einsat...
MIDPath - Status <ul><li>Status: </li></ul><ul><ul><li>Recht Stabil </li></ul></ul><ul><ul><li>APIs: JSR-118 + FileConnect...
Swing/Escher <ul><li>Swing/AWT Support von GNU Classpath in maemo hängt an der gtk Version. </li></ul><ul><li>Alternative ...
Swing/Escher - Maemo Input Problematik <ul><li>Soft Keyboard löst keine X Key-Events aus </li></ul><ul><ul><li>Text orient...
lib-JaLiMo Zielausrichtung <ul><li>JaLiMo steht am Projekt Anfang </li></ul><ul><li>Vollständigkeit einer 1.0 geplant für ...
lib-JaLiMo Konzepte <ul><li>Messaging </li></ul><ul><ul><li>Asynchrones Messaging als Grundbaustein der Applikationen </li...
lib-JaLiMo Konzepte <ul><li>Data-Binding </li></ul><ul><ul><li>Bindung von Daten und View über Nachrichten aneinander </li...
lib-JaLiMo Konzepte <ul><li>GUI Templating </li></ul><ul><ul><li>Erstellung von Teilen der GUI durch Beschreibungssprachen...
JaLiMo - Robot Aktion <ul><li>Warum? Zur Verdeutlichung, wie einfach sich offene </li></ul><ul><li>Standard-Komponenten fü...
Jazelle DBX (Direct Bytecode eXecution) <ul><li>Das N770 und das N800 besitzen die proprietäre Jazelle </li></ul><ul><li>E...
 
Jazelle DBX (Direct Bytecode eXecution) <ul><li>In den DBX-Modus zu wechseln scheint kein Problem zu sein </li></ul><ul><l...
JaLiMo Ressourcen <ul><li>www.jalimo.org </li></ul><ul><li>Bald zusätzlich: www.elvolvis.org </li></ul><ul><ul><li>Gforge ...
Upcoming SlideShare
Loading in...5
×

Jalimo Slides Linuxtag2007

1,591

Published on

Presentation of the JaLiMo talk on Linuxtag 2007 in Berlin

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,591
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
56
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Jalimo Slides Linuxtag2007"

  1. 1. Java-Linux-Mobile Plattform
  2. 2. Status <ul><li>Zuwachs an kleinen mobilen Linux Endgeräten </li></ul><ul><li>Java auf mobilen Endgeräten </li></ul><ul><li>Classpath & co sind 'erwachsen' </li></ul>dennoch! <ul><li>Freies Java auf Linux-Embedded ist kaum im Einsatz. </li></ul>
  3. 3. Java embedded? <ul><li>Was ist Java? </li></ul><ul><ul><li>J2ME CLDC </li></ul></ul><ul><ul><li>J2ME CDC </li></ul></ul><ul><ul><li>J2ME CDC + AGUI (JSR 209) </li></ul></ul><ul><ul><li>J2SE </li></ul></ul><ul><li>Nur zertifizierte Plattformen (JVMs+Klassenbibliothek) dürfen sich 'Java' nennen. </li></ul><ul><li>Die alternativen, freien JVMs sind nicht zertifiziert </li></ul>
  4. 4. Java und Java-like Implementierungen <ul><li>Sun J2SE – (GPL und proprietär) </li></ul><ul><li>Sun J2ME PhoneME (GPL) </li></ul><ul><li>J2ME IBM J9 (proprietär) </li></ul><ul><li>Gnu Classpath (GPL) mit verschiedenen JVMs </li></ul><ul><ul><li>cacaojvm (GPL) </li></ul></ul><ul><ul><li>jamvm (GPL) </li></ul></ul><ul><ul><li>kaffe (GPL) </li></ul></ul><ul><ul><li>... </li></ul></ul><ul><ul><li>Aonix, Perc (proprietär) </li></ul></ul><ul><ul><li>Aicas, JamaicaVM (proprietär) </li></ul></ul><ul><li>... </li></ul>} <ul><ul><ul><li>Realtime fähig </li></ul></ul></ul>
  5. 5. Wie immer – die GUI machts! <ul><li>Außer J2ME CLDC ist alles weitestgehend >= Java 1.3. </li></ul><ul><li>Prägnant: Die unterschiedlichen GUI Ansätze. </li></ul><ul><ul><li>MIDP 2.0 (minimal) </li></ul></ul><ul><ul><li>AWT (kleine Featuremenge) </li></ul></ul><ul><ul><li>Swing (Performance Probleme) </li></ul></ul><ul><ul><li>SWT (mit GTK peer: Viele Abhängigkeiten) </li></ul></ul><ul><ul><li>SWT (mit QT peer: proprietär) </li></ul></ul><ul><li>Weitere Möglichkeiten </li></ul><ul><ul><li>Java-gnome </li></ul></ul><ul><ul><li>escher (pure java X library) </li></ul></ul><ul><ul><li>jsdl (java sdl bindings) </li></ul></ul>
  6. 6. Pocket-Size Linux <ul><li>Distributionen </li></ul><ul><ul><li>Familiar (OpenEmbedded, ipkg) </li></ul></ul><ul><ul><li>Ångström (OpenEmbedded, ipkg) </li></ul></ul><ul><ul><li>Maemo (Scratchbox, apt, dpkg) </li></ul></ul><ul><ul><li>OpenMoko (OpenEmbedded, ipkg) </li></ul></ul><ul><li>Environments </li></ul><ul><ul><li>Opie (Framebuffer/QT embedded) </li></ul></ul><ul><ul><li>GPE (Xserver/GTK) </li></ul></ul><ul><ul><li>Maemo (Xserver/GTK + Hildon + Osso) </li></ul></ul><ul><ul><li>OpenMoko (Xserver/GTK + libmokoui + libmokocore) </li></ul></ul>
  7. 7. Java @ Pocket-Size Linux <ul><li>Meist sporadisch: </li></ul><ul><ul><li>z.B. jamvm und altes gnu classpath </li></ul></ul><ul><ul><li>Selten aktualisiert </li></ul></ul><ul><ul><li>Kein Konzept für Packaging und weitere Integration </li></ul></ul><ul><ul><li>GUI: Meist AWT (mit gtk peer) </li></ul></ul><ul><li>OpenEmbedded: jamvm 1.4.2/classpath 0.90 </li></ul><ul><li>Maemo: </li></ul><ul><ul><li>jamvm 1.4.2/classpath 0.91 (ohne 'hildonizing') </li></ul></ul><ul><ul><li>sun PhoneME (als tar.gz, ohne gui) </li></ul></ul><ul><ul><li>JaLiMo </li></ul></ul>
  8. 8. Welche Probleme gibt es? <ul><li>Bei der Java-Portierung </li></ul><ul><ul><li>Build Prozess ist meist etwas anders </li></ul></ul><ul><ul><li>Abhängigkeiten für die GUI </li></ul></ul><ul><li>Fehlende Abstimmung auf embedded Bereich </li></ul><ul><ul><li>Größe & Modularisierung </li></ul></ul><ul><ul><li>Startup-Geschwindigkeit </li></ul></ul><ul><li>Bei der Entwicklung </li></ul><ul><ul><li>Embedded Java ist etwas anderes </li></ul></ul><ul><ul><li>Fehlende Integration in die Umgebungen </li></ul></ul><ul><ul><li>Packaging + Dependency Management </li></ul></ul><ul><ul><li>Fehlende Abhängigkeiten und Bindings </li></ul></ul><ul><ul><li>Schlechte Framework Unterstützung </li></ul></ul>
  9. 9. JaLiMo <ul><li>JaLiMo ist eine Initiative um einen vollständigen freien Java-Stack für mobile Linux Endgeräte aufzubauen. </li></ul><ul><li>Im Vordergrund steht die Integration und Ergänzung existierender Projekte. </li></ul>&quot;Java-like environment for mobile Linux devices&quot; Hauptaufgabe sind die Probleme nach der Portierung der JVM!
  10. 10. JaLiMo - Wer? <ul><li>Gesponsort von Tarent GmbH </li></ul><ul><ul><li>Sebastian Mancke </li></ul></ul><ul><ul><li>Robert Schuster (Gnu Classpath) </li></ul></ul><ul><ul><li>Fabian Köster </li></ul></ul><ul><li>Unterstützt durch </li></ul><ul><ul><li>Christian Thalinger (cacaojvm.org) </li></ul></ul><ul><ul><li>Roman Kennke (Gnu Classpath, escher) </li></ul></ul><ul><ul><li>Guillaume Legris (MIDPath) </li></ul></ul><ul><ul><li>Andrew Cowie (java-gnome) </li></ul></ul><ul><ul><li>... </li></ul></ul>
  11. 11. JaLiMo - Was? Integration Integration GUI Runtime Build Plattform CACAO JVM JamVM GNU Classpath phoneME MIDPath Swing/escher java-gnome SWT maven packaging plugin OpenEmbedded integration mvn2deb libjalimo-core libopenmoko libmaemo maemo ...?... openmoko
  12. 12. Build Strategien - Cross Compiling <ul><ul><li>Cross Toolchain (gcc, ld, .. für arm) </li></ul></ul><ul><ul><li>Rootstrap </li></ul></ul><ul><ul><li>setzen von: PATH, CC, LD, AR, PKG_CONFIG_PATH </li></ul></ul><ul><ul><li>wrapper für: dpkg-architecture und pkg-config </li></ul></ul><ul><li>Vorteile: </li></ul><ul><ul><li>Die Host Tools (z.B. javac, javah, jar) stehen zur Verfügung. </li></ul></ul><ul><ul><li>Verwendung zusammen mit dpkg-buildpackage </li></ul></ul><ul><li>Probleme </li></ul><ul><ul><li>Pflege des Rootstrap </li></ul></ul><ul><ul><li>Fehleranfällig durch fehlendes chroot </li></ul></ul>
  13. 13. Build Strategien - Scratchbox <ul><ul><li>Auf Qemu basierender Emulator </li></ul></ul><ul><ul><li>Mit Toolchain und Rootstrap integriert </li></ul></ul><ul><li>Vorteile: </li></ul><ul><ul><li>Direkte Nachbildung des Zielsystems </li></ul></ul><ul><ul><li>Kein Cross Compiling mehr </li></ul></ul><ul><li>Probleme </li></ul><ul><ul><li>Keine Unterstützung spezieller Build Tools (z.B. javac, javah, ..) </li></ul></ul><ul><ul><li>Java binaries (z.B. jamvm oder cacao) funktionieren nicht in der scratchbox </li></ul></ul>
  14. 14. Build Strategien - maven2 <ul><ul><li>Etablierte Java Build Umgebung </li></ul></ul><ul><li>Vorteile </li></ul><ul><ul><li>Management von dependencies </li></ul></ul><ul><ul><li>Standardisierter Build Prozess </li></ul></ul><ul><ul><li>Plugin Architektur </li></ul></ul><ul><li>Nachteile </li></ul><ul><ul><li>Sehr Java zentriert </li></ul></ul><ul><ul><li>Schlechte Unterstützung für JNI und Cross Compiling </li></ul></ul><ul><ul><li>Kein Packaging Konzept </li></ul></ul>
  15. 15. maven packaging plugin <ul><li>Packaging </li></ul><ul><ul><li>IzPack installer (für Desktop) </li></ul></ul><ul><ul><li>.deb (für Desktop und embedded) </li></ul></ul><ul><ul><li>.ipkg (geplant) </li></ul></ul><ul><li>Generierung von Startscripten </li></ul><ul><li>Orientierung an debian guidelines </li></ul><ul><li>Umsetzung der maven Abhängigkeiten auf debian Abhängigkeiten </li></ul><ul><ul><li>Von tarent (Robert Schuster) entwickeltes maven Plugin zur </li></ul></ul><ul><ul><li>Paketierung von Projekten -- unter (GPL) frei gegeben. </li></ul></ul>
  16. 16. maven packaging plugin <ul><li>Java package fur maemo in 5 min! </li></ul><ul><li>.. code schreiben und pom.xml anpassen .. </li></ul><ul><li>.. fertig ist das .deb archive! </li></ul>mvn archetype:create -DarchetypeGroupId=org.jalimo.archetype -DarchetypeArtifactId=gtkapp -DarchetypeVersion=0.1.0-SNAPSHOT -DremoteRepositories=http://www.jalimo.org/maven -DgroupId=<your project group id> -DartifactId=<your artifact id> mvn -Dmaven.test.skip=true pkg:deb
  17. 17. maven mit JNI code <ul><li>Normales maven packaging Projekt + Makefile </li></ul><ul><li>Ablauf: mvn pkg:deb </li></ul><ul><ul><li>Kompilieren der Java Klassen </li></ul></ul><ul><ul><li>Generieren der header files mit javah </li></ul></ul><ul><ul><li>Kompilieren des C-codes in der scratchbox über /scratchbox/login <scriptfile> </li></ul></ul><ul><ul><li>Einsammeln der Binaries </li></ul></ul><ul><ul><li>Generieren des .deb Archives </li></ul></ul><ul><ul><li>Viele Projekte bestehen aus java und C code </li></ul></ul>} } } <ul><li>Host </li></ul><ul><li>Host </li></ul><ul><li>Emulator </li></ul>Beispiel: java-gnome
  18. 18. Java-gnome <ul><li>Java-gnome ist ein bereits 9 Jahre bestehendes Projekt </li></ul><ul><li>Version 2 hat eine recht hohe API-Abdeckung, jedoch zu viele Probleme. </li></ul><ul><li>Seit 1,5 Jahren: rewrite java-gnome4 </li></ul><ul><ul><li>Sauberes Design </li></ul></ul><ul><ul><li>Leichtgewichtig </li></ul></ul><ul><ul><li>Geringe API-Abdeckung </li></ul></ul><ul><ul><li>Kommt leider langsam vorwärts </li></ul></ul><ul><li>Aber: gutes Konzept </li></ul>
  19. 19. Java-gnome - Konzept <ul><li>Code Generierung der JNI Schicht </li></ul><ul><ul><li>Aus den GTK Header Files werden Objekt Definitionen erstellt. </li></ul></ul><ul><ul><li>Pro Gtk 'Klasse' wird eine C und ein Java Datei generiert, die den gesamten JNI-Code enthält. </li></ul></ul><ul><ul><li>Java Sichtbarkeiten dieser Schicht sind auf 'package' beschränkt. </li></ul></ul><ul><ul><li>In einer sauberen API Schicht erfolgt die Umsetzung des prozeduralen Codes in eine objekt-orientierte API. </li></ul></ul><ul><li>Die pseudo-Klassenstruktur von GTK wird dabei sauber in Java abgebildet. </li></ul><ul><li>Das Vorgehen und der Codegenerator eignen sich evtl. auch für andere Bibliotheken: z.B. Hildon oder libopenmoko. </li></ul>
  20. 20. Java-gnome <ul><li>Warum von Java-gnome </li></ul><ul><ul><li>Performant und leichtgewichtig </li></ul></ul><ul><ul><li>Nahtlose Integration möglich </li></ul></ul><ul><ul><li>Unterstützung durch Glade2 GUI Builder </li></ul></ul><ul><ul><li>Einfache, schöne API </li></ul></ul>
  21. 21. Java-gnome - Abdeckung <ul><li>Im Upstream Projekt sehr gering: </li></ul><ul><ul><li>Window, Widget, Button, Label, Hbox, VBox </li></ul></ul><ul><li>Prototypische Erweiterung an zwei Abenden um: </li></ul><ul><ul><li>Entry </li></ul></ul><ul><ul><li>TextView, TextBuffer </li></ul></ul><ul><ul><li>ToggleButton </li></ul></ul><ul><ul><li>CheckButton </li></ul></ul><ul><ul><li>ComboBox </li></ul></ul><ul><ul><li>MenuBar, Menu, MenuItem </li></ul></ul><ul><ul><ul><li>ScrolledWindow </li></ul></ul></ul><ul><ul><ul><li>Frame </li></ul></ul></ul><ul><ul><ul><li>Notebook </li></ul></ul></ul><ul><ul><ul><li>HSeparator, VSeparator </li></ul></ul></ul><ul><ul><ul><li>Image </li></ul></ul></ul>Offensichtlich: gutes Konzept!
  22. 22. libmaemo <ul><li>Erweiterungen der java-gnome Komponenten mit Bindings zum Hildon Framework. Nötige Schritte: </li></ul><ul><ul><li>Wrapper für HildonWindow und HildonProgram (existieren schon) </li></ul></ul><ul><ul><li>Erweiterte Widgets des Hildon Frameworks </li></ul></ul><ul><ul><li>Bindings für Status Bar Plugins </li></ul></ul><ul><li>Wrapper für die libosso </li></ul><ul><ul><li>Nachrichten Kommunikation zwischen den Applikationen </li></ul></ul><ul><ul><li>Evtl. über bestehendes Projekt java-dbus möglich </li></ul></ul>
  23. 23. MIDPath <ul><li>MIDPath ist eine MIDP2 Implementierung auf Basis des MIDP </li></ul><ul><li>codes der Sun PhoneME. </li></ul><ul><li>Im Gegensatz zur PhoneME läuft MIDPath auf Java SE sowie auf Java ME CLDC. </li></ul><ul><li>Damit kann es out of the box mit Kaffe, Cacao, JamVM oder anderen JVMs verwendet werden. </li></ul><ul><li>Guillaume Legris hat für JaLiMo ein GTK Backend geschrieben, was wir an das Maemo Input Framework anpassen konnten. </li></ul>
  24. 24. MIDPath - Architektur <ul><li>Durch unterschiedliche Backends ist MIDPath recht portabel. </li></ul><ul><li>Für den Einsatz auf kleinen Geräten gibt es eine Variante, die mit der Cacao CLDC Version aus kommt. </li></ul>MIDPATH Java ME CLDC AWT SWT JavaSound SDL X11 ALSA Cacao JamVM Kaffe Cacao CLDC GNU Classpath JVMs Standard Libraries Backends Core GTK
  25. 25. MIDPath - Status <ul><li>Status: </li></ul><ul><ul><li>Recht Stabil </li></ul></ul><ul><ul><li>APIs: JSR-118 + FileConnection (JSR-75) </li></ul></ul><ul><ul><li>Fehlend: SSL, UDP, tone playing </li></ul></ul><ul><ul><li>OGG/MP3 Unterstützung </li></ul></ul><ul><li>Bald: </li></ul><ul><ul><li>Audio streaming support </li></ul></ul><ul><ul><li>Midlet Verwaltung für Maemo </li></ul></ul><ul><li>Zukunft: </li></ul><ul><ul><li>Weitere Java ME JSRs hinzufügen </li></ul></ul>
  26. 26. Swing/Escher <ul><li>Swing/AWT Support von GNU Classpath in maemo hängt an der gtk Version. </li></ul><ul><li>Alternative </li></ul><ul><ul><li>Pure Java X library: Escher </li></ul></ul><ul><ul><li>Classpath hat unterschiedliche peers für AWT und Swing </li></ul></ul><ul><li>Swing/Escher läuft auf maemo, ist aber noch nicht fertig: </li></ul><ul><ul><li>Probleme im Fenster Handling </li></ul></ul><ul><ul><li>Repainting </li></ul></ul><ul><ul><li>Soft Tastatur Input </li></ul></ul><ul><ul><li>Look and Feel Customizing </li></ul></ul>
  27. 27. Swing/Escher - Maemo Input Problematik <ul><li>Soft Keyboard löst keine X Key-Events aus </li></ul><ul><ul><li>Text orientiert </li></ul></ul><ul><ul><li>Undokumentierte Xmessages, die über das Hildon/GTK Input Framework in GTK umgesetzt werden. </li></ul></ul><ul><li>TODO: </li></ul><ul><ul><li>Generieren von XMessages an Softkeyboard (raise/lower) </li></ul></ul><ul><ul><li>Empfangen von Messages, umwandeln in AWT Key Events </li></ul></ul>
  28. 28. lib-JaLiMo Zielausrichtung <ul><li>JaLiMo steht am Projekt Anfang </li></ul><ul><li>Vollständigkeit einer 1.0 geplant für Ende 2008 </li></ul><ul><li>Bisher: Fokus auf Basis Plattform </li></ul><ul><li>Hauptsächlich jedoch: Applikationsframework </li></ul>Erstellen von mobilen Applikationen zur Umsetzung von End-to-End Business Prozessen.
  29. 29. lib-JaLiMo Konzepte <ul><li>Messaging </li></ul><ul><ul><li>Asynchrones Messaging als Grundbaustein der Applikationen </li></ul></ul><ul><ul><li>Anbindung verschiedener Quellen über Konnektoren z.B. SOAP/HTTP, XMPP, RMI, dbus </li></ul></ul>Applikation MessageBroker
  30. 30. lib-JaLiMo Konzepte <ul><li>Data-Binding </li></ul><ul><ul><li>Bindung von Daten und View über Nachrichten aneinander </li></ul></ul><ul><ul><li>Deklarative Verknüpfung, ohne gegenseitiges Referenzieren der einzelnen Objekte </li></ul></ul><ul><ul><li>Bietet stärkere Entkoppelung als MVC-Paradigma </li></ul></ul><ul><li>Action Framework </li></ul><ul><ul><li>Konsequenter Einsatz des Command Patterns in GUI Applikationen </li></ul></ul><ul><ul><li>Alle Aktionen werden als Action definiert und können an unterschiedlichen Stellen verwendet werden. </li></ul></ul>
  31. 31. lib-JaLiMo Konzepte <ul><li>GUI Templating </li></ul><ul><ul><li>Erstellung von Teilen der GUI durch Beschreibungssprachen z.B. </li></ul></ul><ul><ul><ul><li>HTML embedded in Swing </li></ul></ul></ul><ul><ul><ul><li>Glade für Java-Gnome </li></ul></ul></ul><ul><ul><ul><li>JSP oder Velocity für Web </li></ul></ul></ul><ul><ul><li>Verbindung von GUI und Applikation über Actions und Bindings </li></ul></ul><ul><ul><li>Ziel: </li></ul></ul><ul><ul><ul><li>Leichteres Wiederverwenden von Applikationen in unterschiedlichen Kontexten </li></ul></ul></ul><ul><ul><ul><li>Rapid Prototyping </li></ul></ul></ul><ul><ul><ul><li>Trennung von Gestaltung und Programmierung </li></ul></ul></ul>
  32. 32. JaLiMo - Robot Aktion <ul><li>Warum? Zur Verdeutlichung, wie einfach sich offene </li></ul><ul><li>Standard-Komponenten für komplexe Architekturen eignen. </li></ul><ul><li>Autonome Java Steuereinheit </li></ul><ul><li>Java-gnome GUI </li></ul><ul><li>Asynchrone Kommunikation über XMPP </li></ul><ul><li>Entwicklungsaufwand </li></ul><ul><li>~ 1 Woche </li></ul>
  33. 33. Jazelle DBX (Direct Bytecode eXecution) <ul><li>Das N770 und das N800 besitzen die proprietäre Jazelle </li></ul><ul><li>Erweiterung im Prozessor. </li></ul><ul><li>DBX ist ein zusätzlicher instruction modus des arm Prozessors. </li></ul><ul><li>Nach einem sog. branch to java kann bytecode nativ ausgeführt werden. </li></ul><ul><li>123 Bytecodes werden dabei direkt unterstützt. Für die übrigen wird ein Software Interrupt ausgelöst. </li></ul><ul><li>Leider hält Arm die Spezifikation zurück!!! </li></ul>Wäre es möglich sie trotzdem zu nutzen?
  34. 35. Jazelle DBX (Direct Bytecode eXecution) <ul><li>In den DBX-Modus zu wechseln scheint kein Problem zu sein </li></ul><ul><li>Mit dem db lässt sich nachvollziehen, dass das Programm immer nach dem letzten bekannten bytecode abstürzt. Alle vorangegangenen müssen also abgearbeitet worden sein. </li></ul><ul><li>Nach einem der unbehandelten Bytecodes steht der program counter auf 0x11000. Dies scheint der Zustand nach dem interrupt zu sein. </li></ul><ul><li>Offene Fragen: </li></ul><ul><ul><li>Wie muss der entsprechende Interrupt handler aussehen? </li></ul></ul><ul><ul><li>Wie erfolgt eine Parameterübergabe/Parameterrückgabe? </li></ul></ul>
  35. 36. JaLiMo Ressourcen <ul><li>www.jalimo.org </li></ul><ul><li>Bald zusätzlich: www.elvolvis.org </li></ul><ul><ul><li>Gforge infrastruktur </li></ul></ul><ul><ul><li>Öffentliches svn </li></ul></ul><ul><ul><li>Mailinglisten </li></ul></ul><ul><ul><li>Bessere Verwaltung von Einzelprojekten </li></ul></ul><ul><li>Ansonsten: [email_address] </li></ul>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×