C1 Mobile Apps mit DSLs und entfernter Codegenerierung Codierst Du noch oder generierst Du schon? Powered by Generative Software GmbH Freiburg Powered by Inhalt Powered by Plattformabhängige Entwicklung JavaScript Firefox OS Java Android Objective-C iOS C# Windows Phone Powered by Plattformunabhängige Entwicklung Web-Apps Entwicklung von mobilen Web-Apps, im Browser ausgeführt Hybrid Apps Entwicklung von nativen Apps, mit Hilfe von Web-Technologien Native Apps Entwicklung von nativen Apps, mit Hilfe von konventionellen Programmiersprachen und Umgebungen, speziellen Frameworks, Crosscompiling oder Interpretation Powered by Web-Apps jQuery Mobile/JavaScript Vaadin TouchKit/Java Hybrid Apps Appcelerator/JavaScript Worklight/JavaScript PhoneGap/JavaScript Native Apps Tabris/Java Adobe Air/ActionScript Delphi XE4/Object Pascal Codename One/Java Corona/Lua Qt/C++ Mono/C# Powered by Alternative: DSLs + Codegenerierung + Powered by Wir sind nicht die Einzigen … Powered by Plattformunabhängige Entwicklung mit DSLs Firefox OS JavaScript Android Java gApp/gapp-DSLs Objective-C iOS C# Windows Phone Powered by Vergleich – X Plattformen Native Anzahl Codebases X Plattformnähe (Styleguide, API) Ja Entwicklungsaufwand Hoch Anzahl Entwickler mit nativem Plattform X Know-How Cross-Plattform DSL + Codegen 1 X Nein Ja Niedrig Niedrig 0 (*) X (*) Bei der Notwendigkeit von plattformspezifischen Erweiterungen ist dieser Wert > 0 Powered by Firefox/JavaScript Android/Java iOS/Objective-C Windows Phone/C# jQuery Mobile/JavaScript Vaadin TouchKit/Java Appcelerator/JavaScript gApp/gapp-DSLs Worklight/JavaScript PhoneGap/JavaScript Tabris/Java Adobe Air/ActionScript Delphi XE4/Object Pascal Codename One/Java Corona/Lua Qt/C++ Mono/C# Powered by Modulare Codegenerierung = Parser Android Converter Converter Abstrac t Syntax Tree Interne s Modell Android Modell = Modell = M2M Transformation = M2C Transformation Powered by Entfernte Codegenerierung - IDE Virtual Developer IDE Eclipse Virtual Developer Generation Delegate REST-API Virtual Developer Generation-Unit gApp Powered by Entfernte Codegenerierung - Server Eclipse Virtual Developer Cloud-Connector Virtual Developer Portal Virtual Developer Generation-Unit Virtual Developer Marketplace Maven Virtual Developer Cloud-Connector NetBeans Virtual Developer Cloud-Connector Virtual Developer Portal Virtual Developer Generation-Unit Virtual Developer Server Powered by gApp - Textuelle DSLs Ui: User Interface Function: Schnittstellen, Business-Logik Persistence: Daten und Persistenz Basic: Typdefinitionen Powered by gApp DSL Tooling – Editor, Parser, … Powered by gApp - DSL für DSLs UiElementsDefinition.gapp hello-world-ui.gapp Powered by Ein Editor für beliebige textuelle DSLs Powered by Ui DSL - Sprachelemente Application Component Databinding Display Flow Interfaces Layout Storage Toolbar Module Powered by Android - Was wird generiert? ApplicationManifest StyleXML DummyData StringResXML Application Powered by Function DSL - Sprachelemente Function Module Powered by REST, EJB – Was wird generiert? REST Resource REST REST Resource Test EJB Implementation EJB Local Interface EJB EJB Remote Interface EJB Test Powered by Persistence DSL - Sprachelemente Entity Module Powered by Android, JPA – Was wird generiert? Entity Class JPA Entity DAO Entity Test Entity DAO Test Data Class Data Class Test Android Data Source Class Data Source Class Test Powered by Basic DSL - Sprachelemente Enumeration Type Module Powered by Plattformspezifische Modellierung Spezifika für … Mobile Android REST EJB JPA -> -> -> -> -> MobileOptions.gapp AndroidOptions.gapp RestOptions.gapp EJBOptions.gapp JPAOptions.gapp Powered by Plattformspezifische Codierung Spezifika für … Layout Navigation Business-Logik Powered by Beispiel Powered by Powered by