Upgrade to Pro — share decks privately, control downloads, hide ads and more …

From Legacy to modern Web

From Legacy to modern Web

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.

Mirko Sertic

March 28, 2017
Tweet

More Decks by Mirko Sertic

Other Decks in Programming

Transcript

  1. @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
  2. @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
  3. @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!
  4. @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
  5. @mirkosertic | [email protected] | https://www.mirkosertic.de Das Reiseziel Ich möchte etwas

    prüfen und dabei lernen Spaß mit Arbeit kombinieren, Stichwort Gamification
  6. @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!!
  7. @mirkosertic | [email protected] | https://www.mirkosertic.de Das Reiseziel Ein Computerspiel hat

    alles: Komplexe Domänenlogik Synchrone und asynchrone Komponenten Performancekritisch Plattformunabhängig
  8. @mirkosertic | [email protected] | https://www.mirkosertic.de Koffer packen Java als plattformunabhängige

    Programmiersprache Domain-driven Design für die Modellierung Fachliteratur und Werkzeuge
  9. @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?
  10. @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
  11. @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
  12. @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
  13. @mirkosertic | [email protected] | https://www.mirkosertic.de Die Reise nach JavaSwingLand Core

    Domain Swing JPanel Java Sound API Keyboard Events Java File IO
  14. @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
  15. @mirkosertic | [email protected] | https://www.mirkosertic.de Die Reise nach JavaFXLand Core

    Domain JavaFX Canvas & JavaFX IDE Java Sound API Keyboard Events Java File IO
  16. @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!
  17. @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
  18. @mirkosertic | [email protected] | https://www.mirkosertic.de Die Reise nach AndroidLand Core

    Domain Android Canvas Android AudioMgr Touch Events Android AssetMgr
  19. @mirkosertic | [email protected] | https://www.mirkosertic.de Das Reisebudget prüfen Java als

    Programmiersprache Domain-driven Design Hexagonale Architektur
  20. @mirkosertic | [email protected] | https://www.mirkosertic.de Das Reisebudget prüfen Java als

    Programmiersprache Domain-driven Design Hexagonale Architektur
  21. @mirkosertic | [email protected] | https://www.mirkosertic.de Das Reisebudget prüfen Java als

    Programmiersprache Domain-driven Design Hexagonale Architektur
  22. @mirkosertic | [email protected] | https://www.mirkosertic.de Das Reisebudget prüfen Java als

    Programmiersprache Domain-driven Design Hexagonale Architektur
  23. @mirkosertic | [email protected] | https://www.mirkosertic.de Das Reisebudget prüfen Java als

    Programmiersprache Domain-driven Design Hexagonale Architektur
  24. @mirkosertic | [email protected] | https://www.mirkosertic.de Das Reisebudget prüfen Java als

    Programmiersprache Domain-driven Design Hexagonale Architektur
  25. @mirkosertic | [email protected] | https://www.mirkosertic.de Die Reise nach InternetLand Moment,

    hier ist was anders Desktop != Browser Die reden hier alle JavaScript!
  26. @mirkosertic | [email protected] | https://www.mirkosertic.de Der Subkontinent GWTLand Java-to-JavaScript Source-to-Source

    Transpiler Dadurch kleine Anpassungen an der Modulstruktur (gwt.xml) Hilf mir, hexagonale Architektur!
  27. @mirkosertic | [email protected] | https://www.mirkosertic.de Der Subkontinent GWTLand Core Domain

    HTML5 Canvas HTML5 Audio Touch Events & Keyboard Events Sprite Sheets
  28. @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?
  29. @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!
  30. @mirkosertic | [email protected] | https://www.mirkosertic.de Der Subkontinent TeaVMLand Core Domain

    Pixi.js WebGL & Canvas API Howler.js Audio Touch Events & Keyboard Events Sprite Sheets
  31. @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?
  32. @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!
  33. @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
  34. @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
  35. @mirkosertic | [email protected] | https://www.mirkosertic.de Ankunft in TeaVM PolymerLand Core

    Domain Polymer & Pixi.js Howler.js Audio Touch Events & Keyboard Events Sprite Sheets & IndexedDB
  36. @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
  37. @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
  38. @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)
  39. @mirkosertic | [email protected] | https://www.mirkosertic.de Gegenwart und Futureland Java ->

    JavaScript -> JIT -> CPU Opcodes JavaScript ist ein notwendiger Zwischenschritt
  40. @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 ☺
  41. @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
  42. @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