49
Die drei Musketiere Thomas Künneth 1 Copyright © 2014 MATHEMA Software GmbH Die drei Musketiere Ein Programm drei Plattformen Thomas Künneth [email protected] www.mathema.de

Die drei Musketiere - Ein Programm – drei Plattformen

Embed Size (px)

DESCRIPTION

Android ist seit geraumer Zeit Spitzenreiter unter den mobilen Plattformen. Zu wissen, wie man dafür Apps schreibt, kann also nicht schaden. Aber es gibt einige weitere spannende Betätigungsfelder für Client-Entwickler. JavaFX ist Oracles letzte Chance, auf dem Client nicht vollständig in der Bedeutungslosigkeit zu versinken. Der Multimedia-affine Swing-Nachfolger ist ab Java 8 integraler Bestandteil der Plattform. Mit dem Einbrechen der Verkaufszahlen klassischer PCs und dem Boom von Tablets war Microsoft gefordert, seine Zukunft auf der neuen Geräteklasse zu sichern. Windows 8 hat eine neue Laufzeitumgebung und ein neues Programmiermodell eingeführt – die Windows Store Apps. So unterschiedlich die drei Ökosysteme auf den ersten Blick sein mögen, gibt es doch einige Parallelen. Beispielsweise wird die Benutzeroberfläche in XML-Strukturen beschrieben und zur Laufzeit zu einem Objektgeflecht entfaltet. Und Bedienelemente können mittels Data Binding mit dem Domänenmodell verknüpft werden. In diesem Vortrag wird ein Programm für Android, Windows 8.1 und JavaFX entwickelt. Dabei werden Schlüsselkonzepte vorgestellt und deren jeweilige Umsetzung beleuchtet. MATHEMA Campus 2014, Freitag 21. März 2014 17:15 bis 18:30

Citation preview

Page 1: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 1 Copyright © 2014 MATHEMA Software GmbH

Die drei Musketiere

Ein Programm – drei Plattformen

Thomas Künneth

[email protected]

www.mathema.de

Page 2: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 2 Copyright © 2014 MATHEMA Software GmbH

Über den Vortragenden

Mitarbeiter der MATHEMA Software GmbH seit

März 2014

Vorher fast 11 Jahre in der IT der Bundesagentur

für Arbeit

Themen: Softwareentwicklung und Architektur von

Enterprise Anwendungen

Steckenpferde: UI/UX, Mobility

Page 3: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 3 Copyright © 2014 MATHEMA Software GmbH

Der Roman von Alexandre Dumas

Wurde 1844 kapitelweise in der Zeitung Le Siècle

urveröffentlicht

Erster Teil einer Trilogie über d’Artagnan und seine drei

Freunde

Folgebände:

Zwanzig Jahre danach (1845 erschienen)

Der Vicomte von Bragelonne oder Zehn Jahre später (1847

erschienen)

Page 4: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 4 Copyright © 2014 MATHEMA Software GmbH

Und so beginnt die Geschichte

[…] Im April des Jahres 1625 bricht der junge Gascogner d’Artagnan nach Paris auf, um Musketier zu

werden. In der Stadt Meung macht sich Rochefort, ein Agent des Kardinals Richelieu, über d’Artagnans

Pferd lustig, was zu einer Auseinandersetzung führt. D’Artagnan wird verprügelt, und Rochefort stiehlt

ihm sein Empfehlungsschreiben. Doch d’Artagnan sieht, wie Rochefort einer Frau, Milady de Winter,

Befehle Richelieus überbringt. Milady ist ebenfalls eine Agentin des Kardinals.

In Paris wird d’Artagnan bei dem Hauptmann der Musketiere, Monsieur de Tréville, vorstellig, doch

dieser kann ihm keinen Platz in der Musketiersgarde geben, denn man muss besondere Verdienste

dafür vorweisen oder in einer anderen Kompanie gedient haben. Vom Fenster Trévilles aus bemerkt

d’Artagnan Rochefort auf der Straße und stürzt aus dem Hauptquartier, um seinen „Mann aus Meung”

einzuholen. Auf der Treppe prallt er gegen die Schulter von Athos, verwickelt sich draußen in den Mantel

von Porthos und zieht vor einer Taverne ein Taschentuch unter Aramis’ Fuß hervor, was ihm drei Duelle

mit diesen Musketieren einbringt.

Duelle sind durch ein Edikt des Königs Ludwig XIII. verboten, und so versuchen die Kardinalsgarden,

als sie die vier Duellanten überraschen, die Musketiere festzunehmen. Die Musketiere ergeben sich

nicht, obwohl sie in der Minderheit sind. D’Artagnan schlägt sich auf die Seite der Musketiere, und nach

einem hart erkämpften Sieg wird er von Athos, Porthos und Aramis als Freund angenommen. Tréville

vermittelt d’Artagnan einen Platz in der Garde von Monsieur des Essarts. […] -------------

Seite „Die drei Musketiere“. In: Wikipedia, Die freie Enzyklopädie. Bearbeitungsstand: 13. März 2014, 16:35 UTC.

URL:http://de.wikipedia.org/w/index.php?title=Die_drei_Musketiere&oldid=128208737 (Abgerufen: 15. März 2014, 15:46 UTC)

Page 5: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 5 Copyright © 2014 MATHEMA Software GmbH

In den (neu interpretierten) Hauptrollen

d’Artagnan

Weltoffener, neugieriger Programmierer

Auftrag: eine „Wetter-App“ zu bauen (im Nebel duelliert es sich nicht gut)

Athos (Android)

Spitzname „Platzhirsch“

Viele Fähigkeiten, im Umgang manchmal etwas schwierig

Aramis (Windows 8.1)

Noch jung

Träumt von den Erfolgen seiner Vorfahren

Porthos (JavaFX)

Modern und schön

Kaum jemand kennt ihn

Page 6: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 6 Copyright © 2014 MATHEMA Software GmbH

Android

Mobile Plattform mit aktuell riesigen Marktanteil

Teile der Plattform sind als Open Source verfügbar; Tendenz

abnehmend

Systemarchitektur mit Linux als Grundlage; native

Bibliotheken sind vom Zugriff durch Apps gekapselt

Apps werden üblicherweise in Java geschrieben

Laufzeitumgebung mit eigener virtueller Maschine Dalvik inkl.

Just in time-Compiler; deren Ablösung durch neue

Laufzeitumgebung ART mit Ahead of time-Übersetzung steht

bevor

Page 7: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 7 Copyright © 2014 MATHEMA Software GmbH

Windows 8.1

Mit Windows 8 wollte Microsoft die Abkehr vom klassischen

Desktop und den mit ihm einher gehenden

Programmiermodellen einläuten

Idee: Apps wie unter iOS, Android und Windows Phone mit

zentralem Store

Windows Runtime (WinRT) ist Laufzeitumgebung für Windows

Store-Apps in Windows 8.x und Windows RT

basiert auf dem Component Object Model (gegenüber

Entwicklern gekapselt)

Anwendungen werden mit HTML, CSS und JavaScript oder

XAML (UI) und Visual Basic, C# oder C++ (Anwendungslogik)

entwickelt

Page 8: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 8 Copyright © 2014 MATHEMA Software GmbH

JavaFX

Ursprünglich für den Bau von RIAs (als Konkurrenz zu Adobe

Flash/Flex und Microsoft Silverlight) gedacht

Programme sollten mit einer eigenen Programmiersprache

(JavaFX Script) realisiert werden

JavaFX 2 brachte native Java APIs

Mit Java 8 wird JavaFX integraler Bestandteil der Plattform

Löst Swing als Standard-UI-Toolkit ab

Page 9: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 9 Copyright © 2014 MATHEMA Software GmbH

Open Source Wetterdaten

OpenWeatherMap bietet kostenlos aktuelle Wetterdaten und

Vorhersagen

Inspiriert von Wikipedia und OpenStreetMap

Enthält Daten aus offiziellen Quellen und mehr als 40.000

(privaten) Wetterstationen

Mittels API Zugriff auf

Aktuelles Wetter

5- und 14-Tage-Vorhersage

Suche und Wetterkarten

Ergebnisse können in HTML, XML oder JSON empfangen

werden

Page 10: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 10 Copyright © 2014 MATHEMA Software GmbH

Beispielabfragen

Aktuelles Wetter in Nürnberg (JSON) http://api.openweathermap.org/data/2.5/weather?q=Nuremberg,de

"coord":"lon":11.07,"lat":49.45,"sys":"message":0.0047,"country":

"DE","sunrise":1394947554,"sunset":1394990555,"weather":["id":804,"

main":"Clouds","description":"overcast

clouds","icon":"04d"],"base":"cmc

stations","main":"temp":283.22,"humidity":80,"pressure":1016.5,"temp

_min":282.15,"temp_max":284.15,"wind":"speed":8.97,"deg":277.007,"

rain":"3h":0,"clouds":"all":92,"dt":1394979618,"id":2861650,"name

":"Nuremberg","cod":200

Geografische Koordinaten: lon=11.07&lat=49.45

Darstellung in XML: mode=xml

Darstellung in HTML: mode=html

Sprache: lang=de

Page 11: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 11 Copyright © 2014 MATHEMA Software GmbH

Aufgabe

Eine Wetter-App bauen, die …

… die OpenWeatherMap-API nutzt, …

… unter Android, …

… Windows 8.1 und …

… JavaFX läuft.

Ziel dabei ist, …

… soweit möglich Code wiederzuverwenden, …

… Programmierparadigmen der Plattform zu nutzen …

… und die Ergebnisse vergleichbar zu machen

Das können nur …

Page 12: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 12 Copyright © 2014 MATHEMA Software GmbH

Weltenbummler

Für das tolle Foto vielen Dank an Monika Künneth

Page 13: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 13 Copyright © 2014 MATHEMA Software GmbH

Polyglott (mehrsprachig)

eine Person, die viele Fremdsprachen spricht

wie viele Sprachen man sprechen muss, um polyglott genannt

zu werden, und wie gut, ist nicht genau definiert

Der englische politische Ökonom, Reisende und Schriftsteller

Sir John Bowring (1792 – 1872) kannte über 200 Sprachen

und sprach über 100 davon.

Der italienische Kardinal Giuseppe Mezzofanti (1774 - 1849)

beherrschte 38 Sprachen (obwohl er Italien nie verließ).

Page 14: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 14 Copyright © 2014 MATHEMA Software GmbH

Übertragung des Begriffs in die Informatik

Der Begriff Polyglot Programming wird Neal Ford

zugeschrieben (sein Blogpost vom 05.12.2006)

Mehrere bedeutende Ökosysteme (Java und .Net)

Innerhalb eines Projekts unterschiedliche Programmiersprachen

für unterschiedliche Aufgaben-/Problemstellungen

Knapp zwei Jahre später prägt Scott Leberknight den Begriff

Polyglot Persistence (sein Blogpost vom 15.10.2008)

Daten müssen nicht zwingend in relationalen Datenbanken

abgelegt werden

Anwendungen bedienen sich aus unterschiedlichen Quellen

Mittlerweile wird der Begriff recht frei verwendet.

Page 15: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 15 Copyright © 2014 MATHEMA Software GmbH

Selbst IDEs sind polyglott

Page 16: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 16 Copyright © 2014 MATHEMA Software GmbH

Programmablauf der Wetter-App

Eingabe des Städtenamens abwarten

Auf Anklicken einer Schaltfläche reagieren

Webservice aufrufen und Daten herunterladen

Daten auswerten und anzeigen

Auf neue Benutzereingabe warten

Page 17: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 17 Copyright © 2014 MATHEMA Software GmbH

Einer für alle, alle für einen

Page 18: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 18 Copyright © 2014 MATHEMA Software GmbH

IDE für die Android-Entwicklung

Page 19: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 19 Copyright © 2014 MATHEMA Software GmbH

IDE für die Windows Store Apps-Entwicklung

Page 20: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 20 Copyright © 2014 MATHEMA Software GmbH

IDE für die JavaFX-Entwicklung

Page 21: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 21 Copyright © 2014 MATHEMA Software GmbH

Android-Apps

Android strukturiert Apps in Activities.

Navigation durch das System und durch Apps entspricht dem

Starten und Beenden von Activities. Activities können durch

Intents Nachrichten austauschen.

Die Bedienoberfläche besteht aus Komponentenbäumen.

Views sind einzelne Elemente, ViewGroups sind Layout-

fähige Container

Oberflächen werden in XML-Dateien definiert und zur Laufzeit

der App zu Objektgeflechten entfaltet

Texte können für beliebig viele Sprachen hinterlegt werden

Vertrieb über Appstores oder direkten Download

Page 22: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 22 Copyright © 2014 MATHEMA Software GmbH

Windows Store-Apps

Windows Store Apps werden mittels Seiten strukturiert

Navigation innerhalb einer App erfolgt durch gezielte

Seitenwechsel

Bedienelemente finden sich im Namespace Windows.UI.Xaml.Controls

Keine unmittelbare Unterscheidung zwischen

„Bedienelementen“ und „Containern“

Oberflächen werden in XAML-Dateien definiert und zur

Laufzeit der App zu Objektgeflechten entfaltet

Texte können für beliebig viele Sprachen hinterlegt werden

Vertrieb über den Windows Store

Page 23: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 23 Copyright © 2014 MATHEMA Software GmbH

JavaFX-Apps

Die Bedienoberfläche besteht aus Komponentenbäumen.

Oberflächen werden in FXML-Dateien definiert und zur

Laufzeit der App zu Objektgeflechten entfaltet

Erstellung des Layouts im Scene Builder

Texte können für beliebig viele Sprachen hinterlegt werden

Kein Plattform-Store, Vertrieb über die Java-üblichen Wege

(kennt noch jemand Suns Project Vector?)

Page 24: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 24 Copyright © 2014 MATHEMA Software GmbH

OpenWeatherMapWeather für Android

Wichtige Klassen:

MainActivity bildet den Lebenszyklus einer Android-App ab,

läd den Komponentenbaum und zeigt ihn an

WeatherData repräsentiert als lokales Datenobjekt die

anzuzeigenden Informationen

WeatherUtils holt die Wetterinformationen ab und bereitet sie

lokal auf

Wichtige Dateien:

activity_main.xml enthält die Beschreibung der Oberfläche

strings.xml enthält internationalisierbare Texte

Page 25: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 25 Copyright © 2014 MATHEMA Software GmbH

OpenWeatherMapWeather für Windows 8.1

Wichtige Klassen:

WeatherData repräsentiert als lokales Datenobjekt die

anzuzeigenden Informationen

WeatherUtils bereitet die bereits abgeholten

Wetterinformationen lokal auf

Wichtige Dateien:

MainPage.xaml enthält die Beschreibung der Oberfläche

MainPage.xaml.cs (Code-Behind) enthält Logik, die mit der

Oberfläche verknüpft ist (zum Beispiel das Anklicken einer

Schaltfläche)

Page 26: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 26 Copyright © 2014 MATHEMA Software GmbH

OpenWeatherMapWeather für JavaFX

Wichtige Klassen:

OpenWeatherMapWeather ist die Hauptklasse der Anwendung;

initialisiert den Komponentenbaum und zeigt ihn an

FXMLDocumentController reagiert auf Benutzereingaben

und spricht den Webservice an

WeatherData repräsentiert als lokales Datenobjekt die

anzuzeigenden Informationen

WeatherUtils holt die Wetterinformationen ab und bereitet sie

lokal auf

Wichtige Dateien:

FXMLDocument.fxml enthält die Oberflächenbeschreibung

strings.properties enthält internationalisierbare Texte

Page 27: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 27 Copyright © 2014 MATHEMA Software GmbH

Zugriff auf den Webservice in Android

findet in der Klasse WeatherUtils statt

die Methode getFromServer() erhält als Argument eine

URL

liefert die heruntergeladenen Daten als String

nutzt bekannte Klassen wie HttpURLConnection,

InputStreamReader und BufferedReader

Java-typisch etwas „geschätzig“

Page 28: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 28 Copyright © 2014 MATHEMA Software GmbH

Zugriff auf den Webservice in Windows 8.1

sehr elegante, schlanke Implementierung

Nebenläufigkeit „kostenlos“ durch Schlüsselwörter async und

await

nur zwei Klassen: HttpClient und HttpResponseMessage

Page 29: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 29 Copyright © 2014 MATHEMA Software GmbH

Zugriff auf den Webservice in JavaFX

findet in der Klasse WeatherUtils statt

die Methode getFromServer() erhält als Argument eine

URL

liefert die heruntergeladenen Daten als String

nutzt bekannte Klassen wie HttpURLConnection,

InputStreamReader und BufferedReader

Java-typisch etwas „geschätzig“

Es wird dieselbe Klasse wie unter Android verwendet

Page 30: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 30 Copyright © 2014 MATHEMA Software GmbH

Interpretieren der Daten in Android

Zugriff findet in Klasse WeatherUtils statt

Android bietet Zugriff auf JSON über das Paket org.json

Strategie:

Aus Daten des Webservice Objekt des Typs JSONObject

erzeugen

Mit has() prüfen, ob gewünschte Elemente vorhanden sind

Auslesen mit getJSONArray(), getJSONObject() und

getString()

Zur weiteren Verarbeitung wird ein Objekt des Typs WeatherData erzeugt

Page 31: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 31 Copyright © 2014 MATHEMA Software GmbH

Interpretieren der Daten in Windows 8.1

Zugriff findet in Klasse WeatherUtils statt

Windows 8.1 bietet Zugriff auf JSON über den namespace Windows.Data.Json

Strategie:

Aus Daten des Webservice Objekt des Typs JsonObject

erzeugen

Mit ContainsKey() prüfen, ob gewünschte Elemente

vorhanden sind

Auslesen mit GetNamedString(), GetNamedArray () und

GetNamedNumber()

Zur weiteren Verarbeitung wird ein Objekt des Typs WeatherData erzeugt

Page 32: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 32 Copyright © 2014 MATHEMA Software GmbH

Interpretieren der Daten in JavaFX

JSR 353 Java API for JSON Processing einschl.

Referenzimplementierung

JSON-java von Douglas Crockford scheint auch in Android

verwendet zu werden (kompatible API)

Quellen sind verfügbar, lassen sich leicht zu kleiner Lib

zusammenfassen

Deshalb Nutzung der Klasse WeatherUtils aus dem

Android-Projekt möglich

Es wird dieselbe Klasse wie unter Android verwendet

Page 33: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 33 Copyright © 2014 MATHEMA Software GmbH

Button-Klicks in Android

Für die Schaltfläche wird ein OnClickListener gesetzt

Dessen Methode onClick() muss implementiert werden

Implementierung holt Daten vom Webservice und aktualisiert

die übrigen Bedienelemente

Page 34: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 34 Copyright © 2014 MATHEMA Software GmbH

Button-Klicks in Windows 8.1

Für die Schaltfläche wird die Methode button_Click() als

Code-Behind in MainPage.xaml.cs implementiert

Implementierung holt Daten vom Webservice und aktualisiert

die übrigen Bedienelemente

Page 35: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 35 Copyright © 2014 MATHEMA Software GmbH

Button-Klicks in JavaFX

In der Klasse FXMLDocumentController wird die Methode

handleButtonAction() implementiert

Implementierung holt Daten vom Webservice und aktualisiert

die übrigen Bedienelemente

Page 36: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 36 Copyright © 2014 MATHEMA Software GmbH

Grafiken anzeigen in Android

Die Klasse MainActivity enthält die Methode getImage()

Sie liefert ein Objekt des Typs android.graphics.Bitmap

Dieses Objekt wird mittels setImageBitmap() als

Datenquelle für das korrespondierende Bedienelement

gesetzt

Page 37: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 37 Copyright © 2014 MATHEMA Software GmbH

Grafiken anzeigen in Windows 8.1

In der Methode button_Click() wird eine URL

zusammengesetzt

Diese wird direkt an das korrespondierende Bedienelement

übergeben

Page 38: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 38 Copyright © 2014 MATHEMA Software GmbH

Grafiken anzeigen in JavaFX

In der Methode handleButtonAction() wird ein Objekt

des Typs javafx.scene.image.Image erzeugt

Diese wird mittels setImage() direkt an das

korrespondierende Bedienelement übergeben

Page 39: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 39 Copyright © 2014 MATHEMA Software GmbH

Internationalisierung in Android

Android kann Texte sprachspezifisch vorhalten

Texte werden in strings.xml abgelegt und je Locale in eigenen

Unterverzeichnissen abgelegt

Zugriff erfolgt im Quelltext über Konstanten (R.string.) und

in XML-Dateien über (@string/)

Page 40: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 40 Copyright © 2014 MATHEMA Software GmbH

Internationalisierung in Windows 8.1

Texte werden analog zu Android in hierarchischen

Ressourcendateien ausgelagert

Vorgehen

Standardsprache in Package.appxmanifest auf en-US einstellen

Verzeichnis Strings anlegen, dann Unterverzeichnis en-US

Dort eine Ressourcendatei (Resources.resw) hinzufügen

Name-Wert-Paar eintragen

mit x:Uid=… Komponente mit Ressource verbinden

siehe Quickstart: Translating UI resources

Page 41: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 41 Copyright © 2014 MATHEMA Software GmbH

Internationalisierung in JavaFX

Nutzung des Java-Standard-Vorgehens ResourceBundle.getBundle()

Das Bundle wird einfach beim Laden der FXML-Datei an FXMLLoader.load() übergeben

Der zu verwendende Schlüssel kann im Scene Builder

eingetragen werden

Page 42: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 42 Copyright © 2014 MATHEMA Software GmbH

Threading in Android

Android kennt den main thread oder ui thread, in dem alle

Oberflächenoperationen stattfinden müssen

üblicherweise werden Netzwerkzugriffe auf diesem Thread mit

einer Ausnahme beendet (Stichwort StrictMode)

Start zusätzlicher Threads ist mit den bekannten Java-Bordmitteln möglich (Thread, Runnable)

Hierbei ist der Lifecycle von Activities zu beachten

Android kennt weitere, komfortable Möglichkeiten (u. a. android.os.AsyncTask)

Ausführen eines Runnables auf den ui thread mit

runOnUiThread()

Page 43: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 43 Copyright © 2014 MATHEMA Software GmbH

Threading in Windows 8.1

Nebenläufigkeit entsteht durch die zwei Schlüsselwörter async und await

die Methode button_Click() holt die Daten vom

Webservice und aktualisiert die Oberfläche

Page 44: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 44 Copyright © 2014 MATHEMA Software GmbH

Threading in JavaFX

JavaFX kennt den application thread; in diesem wird die start()-Methode der App ausgeführt; auch Manipulationen

der Oberfläche und Modifikationen des Szene-Graphen

müssen hier erfolgen

JavaFX gestattet den Zugriff auf das bewährte Java-

Threading-Modell

bietet neu die einfach nutzbare Klasse Task

das gezielte Ausführen von Aktionen auf dem application thread ist mit Platform.runLater() möglich

Page 45: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 45 Copyright © 2014 MATHEMA Software GmbH

Leicht überbrückbare Unterschiede

Platzhalter-Substitution

In Java zum Beispiel für http://api.openweathermap.org/data/2.5/weather?q

=0&lang=de: MessageFormat.format(URL, city)

In C#: String.Format("0 \u2103", (int)temp);

Konstanten-artiges Verhalten

In Java: private static final String

In C#: private const String

Page 46: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 46 Copyright © 2014 MATHEMA Software GmbH

Was haben wir gelernt?

Android und JavaFX sehr ähnlich

Gleiche Programmiersprache

In Teilen gleiche Klassenbibliothek

Die Klassen WeatherData und WeatherUtils sind gleich

Konzepte lassen sich leicht von Java nach C# übertragen

import analog zu using

parametrisierbare Zeichenketten treten in Java und C# Erbe von

C an

einige universelle Konzepte

Internationalisierung durch Auslagerung von Zeichenketten

UI-Frameworks sind seit jeher single threaded

Page 47: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 47 Copyright © 2014 MATHEMA Software GmbH

Warum Entwickler polyglott sein sollten

Weil es Geld bringt

Weil der Kunde oder Auftraggeber es möchte

Weil es Spaß macht

Weil es den Horizont erweitert

Weil es hilft, Sachverhalte besser zu verstehen

Page 48: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 48 Copyright © 2014 MATHEMA Software GmbH

Worauf man achten sollte

Best Practices einer Plattform nicht unreflektiert übertragen

Sich stets an die Konventionen der jeweiligen Plattform halten

Nicht spekulieren

Es ist schwer genug, eine Sache wirklich gut zu beherrschen.

Auf mehreren Hochzeiten zu tanzen, umso mehr.

Page 49: Die drei Musketiere - Ein Programm – drei Plattformen

Die drei Musketiere – Thomas Künneth 49 Copyright © 2014 MATHEMA Software GmbH

Fragen?

Vielen Dank!

[email protected]