My talk(German) I gave at JavaLand 2017 / Cologne. It shows how a hexagonal architecture style in combination with cross-compiling technologies can be used to create portable applications.
@mirkosertic | [email protected] | https://www.mirkosertic.de Wer steht hier? Mirko Sertic Software Craftsman im Web / eCommerce Umfeld Habe Spaß an Technologie und deren Anwendung @mirkosertic [email protected] https://www.mirkosertic.de https://github.com/mirkosertic
@mirkosertic | [email protected] | https://www.mirkosertic.de Warum ein Reisebericht? Eine (Technologie-) Reise durch die letzten Jahre Ein Tagebuch der Erlebnisse und Erfahrungen Ein Rückblick und auch ein Ausblick
@mirkosertic | [email protected] | https://www.mirkosertic.de Eine Idee… Die Welt verändert sich schnell! Welche Technologie, welches Framework? Was ist wirklich nachhaltig? Was funktioniert? Ich brauche ein Testbed!
@mirkosertic | [email protected] | https://www.mirkosertic.de Eine Idee… Bitte nicht noch ein Hello-World! Ich brauche komplexe Domänenlogik mit synchronen und asynchronen Komponenten performancekritisch und transportabel
@mirkosertic | [email protected] | https://www.mirkosertic.de Das Reiseziel Ich möchte etwas prüfen und dabei lernen Spaß mit Arbeit kombinieren, Stichwort Gamification
@mirkosertic | [email protected] | https://www.mirkosertic.de Das Reiseziel Ich möchte etwas prüfen und dabei lernen Spaß mit Arbeit kombinieren, Stichwort Gamification Yes, GAMIFICATION!!
@mirkosertic | [email protected] | https://www.mirkosertic.de Das Reiseziel Ein Computerspiel hat alles: Komplexe Domänenlogik Synchrone und asynchrone Komponenten Performancekritisch Plattformunabhängig
@mirkosertic | [email protected] | https://www.mirkosertic.de Koffer packen Java als plattformunabhängige Programmiersprache Domain-driven Design für die Modellierung Fachliteratur und Werkzeuge
@mirkosertic | [email protected] | https://www.mirkosertic.de Fremde Sprachen lernen Computerspiele können echt komplex sein! Was sind Objects, Instances, Behaviors,Templates, Views, Events, Sprites, Sounds? Wie passt das alles zusammen, wo ist mein Wörterbuch?
@mirkosertic | [email protected] | https://www.mirkosertic.de Fremde Sprachen lernen Ich nutze Domain-driven Design als Wörterbuch Hexagonale Architektur, um adaptiv zu bleiben Reaktiver Style(Events) für alle Komponenten
@mirkosertic | [email protected] | https://www.mirkosertic.de Das erste Wörterbuch Core Domain Input Adapter Game State Renderer Process Manager Physics Resource Loader Sound System
@mirkosertic | [email protected] | https://www.mirkosertic.de Die Reise nach JavaSwingLand Einfaches Jump & Run für den Desktop Java Swing für die UI Java Sound API Keyboard Events für die Eingabe
@mirkosertic | [email protected] | https://www.mirkosertic.de Die Reise nach JavaFXLand JavaFX für die UI Java Sound API Keyboard Events für die Eingabe Die Game IDE betritt die Bühne
@mirkosertic | [email protected] | https://www.mirkosertic.de Neue Länder am Horizont Mobileland, z.B. Android? War da nicht jeder schon mal? Das ganze große Internetland? Da gibt’s bestimmt viele neue Benutzer!
@mirkosertic | [email protected] | https://www.mirkosertic.de Die Reise nach AndroidLand Android Canvas für die UI SoundPool API Touch Events für die Eingabe
@mirkosertic | [email protected] | https://www.mirkosertic.de Die Reise nach InternetLand Moment, hier ist was anders Desktop != Browser Die reden hier alle JavaScript!
@mirkosertic | [email protected] | https://www.mirkosertic.de Am Horizont ist noch mehr Was ist mit anderen Sprachen auf der JVM? Warum die gwt.xml, muss das so invasiv sein? Geht das nicht auch schneller mit dem transpilieren?
@mirkosertic | [email protected] | https://www.mirkosertic.de Der Subkontinent TeaVMLand JVM Bytecode-to-JavaScript Transpiler Keine Anpassungen an der Modulstruktur (keine gwt.xml) Extrem schnell Hilf mir, hexagonale Architektur!
@mirkosertic | [email protected] | https://www.mirkosertic.de Am Horizont ist noch mehr Im Internet ist doch alles vernetzt, oder? Warum nicht im Netz miteinander spielen? Wie passt das mit dem Konzept zusammen?
@mirkosertic | [email protected] | https://www.mirkosertic.de Reaktiv durch und durch Im Domänenmodell ist doch alles ein Event Schicken wir die Events doch über die Leitung und synchronisieren so verteilte Modelle!
@mirkosertic | [email protected] | https://www.mirkosertic.de Am Horizont ist noch mehr Die Game IDE im Netz wäre super und bitte GitHub Integration etwas modernere Optik wäre auch toll
@mirkosertic | [email protected] | https://www.mirkosertic.de Ankunft in TeaVM PolymerLand TeaVM als Grundlage Polymer (WebComponents) für UI Komponenten IndexedDB als Datenspeicher oAuth / GitHub JavaScript API für die Integration
@mirkosertic | [email protected] | https://www.mirkosertic.de Zurück nach Desktopland Webanwendungen mit Electron paketieren Raus aus der Sandkiste, Zugriff auf das lokale Dateisystem Immer ein Chromium, weniger Testaufwand
@mirkosertic | [email protected] | https://www.mirkosertic.de Gegenwart und Futureland Hohe Produktivität durch Java und die komplette Tooling Landschaft Hexagonale Architektur hilft, adaptiv zu bleiben „Reaktiver Style“ hilft, Komplexität besser abzubilden
@mirkosertic | [email protected] | https://www.mirkosertic.de Gegenwart und Futureland Das Web ist überall JavaScript ist gekommen um zu bleiben Transpiler funktionieren und werden auch eingesetzt (GWT, TeaVM, aber auch SASS/LESS, Typescript oder Kotlin)
@mirkosertic | [email protected] | https://www.mirkosertic.de Gegenwart und Futureland Deep Learning ! AI in Computerspielen ist ideales Testgebiet für Planung, Mustererkennung, Sprach / Gestenerkennung, … Tests mit ConvNetJS stehen an ☺
@mirkosertic | [email protected] | https://www.mirkosertic.de Lessons learned Objektorientierung ist ein mächtiges Werkzeug „ Ein Name ist ein Name und kein String “ - * *Autor unbekannt
@mirkosertic | [email protected] | https://www.mirkosertic.de Fragen? falls nicht, besten Dank für Ihre Aufmerksamkeit! Quellcode gibt es hier: https://github.com/mirkosertic/GameComposer