Xtend beyond Java: DSL für mobile Business-Apps
()
About this ebook
Related to Xtend beyond Java
Titles in the series (100)
Algorithmen: Grundlagen und Implementierung Rating: 0 out of 5 stars0 ratingsJava EE Security Rating: 0 out of 5 stars0 ratingsTFS 2012 Anforderungsmanagement: Work Items und Prozessvorlagen Rating: 0 out of 5 stars0 ratingsNFC: Near Field Communication für Android-Entwickler Rating: 5 out of 5 stars5/5Überzeugende Präsentationen: Konzeption, Technik und Design Rating: 0 out of 5 stars0 ratingsSkalierbare Softwaresysteme: Design, Betrieb und Optimierungspotenziale Rating: 0 out of 5 stars0 ratingsEinstieg in Google Go Rating: 0 out of 5 stars0 ratingsHTML5 für Mobile Web Rating: 0 out of 5 stars0 ratingsGeolocation mit PHP: Foursquare-API, Google Places & Qype Rating: 0 out of 5 stars0 ratingsF#: Ein praktischer Einstieg Rating: 0 out of 5 stars0 ratingsServiceorientierte Architektur: Anforderungen, Konzeption und Praxiserfahrungen Rating: 0 out of 5 stars0 ratingsIT Wissensmanagement: Theorie und Praxis Rating: 0 out of 5 stars0 ratingsErfolgreiche Spieleentwicklung: OpenGL, OpenAL und KI Rating: 0 out of 5 stars0 ratingsErfolgreiche Spieleentwicklung: OpenCL Rating: 0 out of 5 stars0 ratingsJava EE 7: Ein Ausblick Rating: 0 out of 5 stars0 ratingsHTML5 Security Rating: 0 out of 5 stars0 ratingsJava 7: Fork-Join-Framework und Phaser Rating: 0 out of 5 stars0 ratingsJavaScript auf dem Server Rating: 0 out of 5 stars0 ratingsWebentwicklung mit dem Play Framework Rating: 0 out of 5 stars0 ratingsJavaScript für Eclipse-Entwickler: Orion, RAP und GWT Rating: 0 out of 5 stars0 ratingsUX Design für Tablet-Websites: Ein Überblick Rating: 0 out of 5 stars0 ratingsZend Framework 2: Für Einsteiger und Umsteiger Rating: 0 out of 5 stars0 ratingsBig Data: Technologiegrundlagen Rating: 0 out of 5 stars0 ratingsQualitätssicherung mit JavaScript und PHP Rating: 0 out of 5 stars0 ratingsQualität in IT-Architekturen: Management Rating: 0 out of 5 stars0 ratingsAgile Architektur mit .NET - Grundlagen und Best Practices Rating: 0 out of 5 stars0 ratingsMobile Business: Was Entscheider morgen wissen müssen Rating: 0 out of 5 stars0 ratingsApache Tapestry: Einstieg in die komponentenorientierte Webentwicklung Rating: 0 out of 5 stars0 ratingsTFS 2012 Versionskontrolle: Grundlagen, Check-In Policies und Branch-Modelle Rating: 0 out of 5 stars0 ratingsJava FX - Embedded Rating: 0 out of 5 stars0 ratings
Related ebooks
JavaFX Rendering & 3D Rating: 0 out of 5 stars0 ratingsEnterprise Java Web Services Rating: 0 out of 5 stars0 ratingsCDI - Dependency Injection in Java EE 7: Dependency Injection in Java EE 7 Rating: 0 out of 5 stars0 ratingsAufsetzen, Testen und Betrieb einer Android-App Rating: 0 out of 5 stars0 ratingsApps mit Azure Rating: 0 out of 5 stars0 ratingsModerne Webanwendungen mit AngularJS Rating: 0 out of 5 stars0 ratingsSoftware Development Trends: Wegweisende Beiträge für eine neue IT: Wegweisende Beiträge für eine neue IT Rating: 0 out of 5 stars0 ratingsJava EE 6: Enterprise-Anwendungsentwicklung leicht gemacht Rating: 0 out of 5 stars0 ratingsSpring: Vier Perspektiven auf Framework und Ökosystem Rating: 0 out of 5 stars0 ratingsMicrosoft AJAX: AJAX Libary, ASP .NET 2.0 Extensions, AJAX Control Toolkit Rating: 0 out of 5 stars0 ratingsADF - Mobile Apps entwickeln und Swing ablösen: Mobile Apps entwickeln und Swing ablösen Rating: 0 out of 5 stars0 ratingsiOS Essentials: Frameworks, Tools und Twitter API Rating: 0 out of 5 stars0 ratingsVue.js für alle: Wissenswertes für Einsteiger und Experten Rating: 0 out of 5 stars0 ratingsWebanwendungen erstellen mit Vue.js: MVVM-Muster für konventionelle und Single-Page-Webseiten Rating: 0 out of 5 stars0 ratingsASP.NET Core: Eine Einführung Rating: 0 out of 5 stars0 ratingsAngular 2: Moderne Frontends für alle Plattformen entwickeln Rating: 0 out of 5 stars0 ratingsWebentwicklung mit dem Play Framework Rating: 0 out of 5 stars0 ratingsAmazon Web Services für .NET Entwickler Rating: 0 out of 5 stars0 ratingsStructr: Quelloffenes Daten-CMS auf Neo4j-Basis Rating: 0 out of 5 stars0 ratingsCloud Computing Grundlagen: Technisch / rechtlich / wirtschaftlich und architekturell Rating: 0 out of 5 stars0 ratingsJava FX - Status Quo: Status Quo Rating: 0 out of 5 stars0 ratings.NET Core 1.0 und 1.1: Entwicklung mit den Core-Produkten Rating: 0 out of 5 stars0 ratingsVaadin Schnelleinstieg Rating: 0 out of 5 stars0 ratingsSingle-Page-Web-Apps: JavaScript im Einsatz: Webseiten erstellen mit AngularJS, Meteor und jQuery Mobile Rating: 0 out of 5 stars0 ratingsDie Serverwelt von Node.js Rating: 0 out of 5 stars0 ratingsForms over Data mit Knockout.js: Die freie MVVM-JavaScript-Bibliothek im Praxiseinsatz Rating: 0 out of 5 stars0 ratingsJavaScript und Ajax: Das Praxisbuch für Web-Entwickler Rating: 0 out of 5 stars0 ratingsExpertentipps zu Angular: Neuerungen in Angular 6, Umgang mit Microservices, Performanz und UX-Design Rating: 0 out of 5 stars0 ratingsMicroservices: Der Hype im Realitätscheck Rating: 0 out of 5 stars0 ratingsDocker: Webseiten mittels Containerarchitektur erstellen Rating: 3 out of 5 stars3/5
Programming For You
Algorithmen: Grundlagen und Implementierung Rating: 0 out of 5 stars0 ratingsPowerShell: Anwendung und effektive Nutzung Rating: 5 out of 5 stars5/5Eigene Spiele programmieren – Python lernen: Der spielerische Weg zur Programmiersprache Rating: 0 out of 5 stars0 ratingsWeniger schlecht programmieren Rating: 4 out of 5 stars4/5Programmieren für Einsteiger: Teil 1 Rating: 0 out of 5 stars0 ratingsPython kurz & gut: Für Python 3.x und 2.7 Rating: 3 out of 5 stars3/5JavaScript kurz & gut Rating: 3 out of 5 stars3/5Linux Grundlagen - Ein Einstieg in das Linux-Betriebssystem Rating: 0 out of 5 stars0 ratingsGit kurz & gut Rating: 0 out of 5 stars0 ratingsMicrosoft Word 2016 (Microsoft Press): Einfache Anleitungen für wichtige Aufgaben Rating: 0 out of 5 stars0 ratingsHacken mit Python und Kali-Linux: Entwicklung eigener Hackingtools mit Python unter Kali-Linux Rating: 0 out of 5 stars0 ratingsMikrocontroller in der Elektronik: Mikrocontroller programmieren und in der Praxis einsetzen Rating: 0 out of 5 stars0 ratingsAndroid-Entwicklung für Einsteiger - 20.000 Zeilen unter dem Meer: 2. erweiterte Auflage Rating: 0 out of 5 stars0 ratingsC++: Eine kompakte Einführung Rating: 0 out of 5 stars0 ratingsRichtig einsteigen: Excel VBA-Programmierung: Für Microsoft Excel 2007 bis 2016 Rating: 0 out of 5 stars0 ratingsProgrammieren lernen mit Python 3: Schnelleinstieg für Beginner Rating: 0 out of 5 stars0 ratingsRaspberry Pi: Mach's einfach: Die kompakteste Gebrauchsanweisung mit 222 Anleitungen. Geeignet für Raspberry Pi 3 Modell B / B+ Rating: 0 out of 5 stars0 ratingsHTML5-Programmierung von Kopf bis Fuß: Webanwendungen mit HTML5 und JavaScript Rating: 0 out of 5 stars0 ratingsEinstieg in TypeScript: Grundlagen für Entwickler Rating: 0 out of 5 stars0 ratingsLinux Befehlsreferenz: Schnelleinstieg in die Arbeit mit der Konsole, regulären Ausdrücken und Shellscripting Rating: 0 out of 5 stars0 ratingsPraktisches Programmieren in C: Grundlagen und Tipps Rating: 0 out of 5 stars0 ratingsSQL – kurz & gut Rating: 0 out of 5 stars0 ratingsRaspberry Pi: Einstieg • Optimierung • Projekte Rating: 5 out of 5 stars5/5Das große Python3 Workbook: Mit vielen Beispielen und Übungen - Programmieren leicht gemacht! Rating: 4 out of 5 stars4/5Vue.js für alle: Wissenswertes für Einsteiger und Experten Rating: 0 out of 5 stars0 ratingsSQL von Kopf bis Fuß Rating: 4 out of 5 stars4/5Python | Schritt für Schritt Programmieren lernen: Der ultimative Anfänger Guide für einen einfachen & schnellen Einstieg Rating: 0 out of 5 stars0 ratings.NET-Praxis: Tipps und Tricks zu .NET und Visual Studio Rating: 0 out of 5 stars0 ratingsPython-Grundlagen Rating: 0 out of 5 stars0 ratingsUser Experience Testing 3.0: Status Quo, Entwicklung und Trends Rating: 0 out of 5 stars0 ratings
Reviews for Xtend beyond Java
0 ratings0 reviews
Book preview
Xtend beyond Java - Ekkehard Gentz
GmbH
1 DSLs mit Xtext, Sirius und Vaadin
Modellbasierte Technologien und domänenspezifische Programmiersprachen können die Entwicklung von Software entscheidend vereinfachen. Dieses Kapitel zeigt, wie auf diese Art vollständige Businessanwendungen schnell und sauber geschrieben werden können.
Wer kennt sie nicht, die nervenaufreibende Tätigkeit: „Schreibe und teste JPA-Entities"? Üblicherweise beinhaltet dies das seitenweise händische Coden von Benutzerschnittstellen samt mühsamem Nachziehen von Änderungen über das gesamte System, von der Persistenzschicht bis hin zum UI. Ernst zu nehmende Businesssoftware erfordert oft beträchtlichen Aufwand in Planung und Umsetzung. Doch mit den richtigen Werkzeugen kann die Aufgabe erleichtert und die Qualität des Ergebnisses verbessert werden.
Dieses Kapitel richtet sich an Entwickler im Businessumfeld, die auf der Suche nach eleganten Lösungen sind. Wir zeigen einige Ansätze, wie mithilfe modellbasierter Technologien und eigener domänenspezifischer Sprachen (Domain Specific Languages, DSLs) die Entwicklung von Businesssoftware wesentlich vereinfacht werden kann. Dabei behandeln wir vor allem die Erstellung von JPA-Entities und Data Transfer Objects mittels einer eigenen DSL sowie ECView, unser Framework zur modellbasierten UI-Definition. Diese Technologien kommen im Herzen des OSBP-Projekts [1] zum Einsatz, stehen aber auch anderen zur Verfügung.
Persistenz leicht gemacht mit der Entity-DSL
Das JPA (Java Persistence API) ist aus Enterprise-Anwendungen kaum mehr wegzudenken. Viele Java-Entwickler sind mit JPA und seinen Implementierungen bestens vertraut. Dennoch stellt die Erstellung und Wartung von JPA-Entities einen nicht zu vernachlässigenden Aufwand dar. Um die zahlreichen JPA Annotations richtig im Code zu platzieren, bedarf es eines guten Maßes an Erfahrung sowie hoher Konzentration, um die zahlreichen Fehlerquellen zu vermeiden.
Um diese noch dazu recht langweilige Arbeit an JPA-Entities zu vereinfachen, bietet sich die Verwendung einer DSL für Entities an. Mit EMF, Xtext und Sirius stehen Frameworks bereit, die es erlauben, die JPA-Entities auf eine wesentlich einfachere und übersichtlichere Art und Weise beschreiben, erstellen und den eigentlichen Java-Code mit allen erforderlichen Annotationen automatisch generieren zu können.
Die von uns geschriebene Entity-DSL erlaubt die Generierung von JPA-Code inklusive verschiedener Optionen für das Datenbankschema, versionierte bzw. zeitabhängige Einträge, Indizes, frei definierbare Datentypen, verschiedene Vererbungsstrategien u. v. m. Ein Beispiel dafür, wie Entities in wenigen Codezeilen definiert werden können, und um wie viel einfacher die Erstellung und Pflege von Entities mit der Entity-DSL wird, findet sich in Abbildung 1.1.
Abbildung 1.1: Aus den vier Zeilen „entity Order extends Base …" wird eine JPA-Entity mit allen nötigen Annotationen generiert
Um nicht bei jedem Zugriff auf ein Feld in einer Entity eine Datenbankabfrage starten zu müssen und um die Größe der Datenpakete bei der Kommunikation zwischen Prozessen gering zu halten, bietet sich die Verwendung von Data Transfer Objects (DTOs) an. Wichtig ist dabei, keine Abhängigkeiten zur Persistenzschicht zu haben.
Die von uns geschriebene Entity-DSL erzeugt solche DTOs und die für die Umsetzung zwischen JPA und DTO nötigen Mapper und DataAccessServices automatisch. Mittels einer eigenen DTO DSL können die DTOs bearbeitet und erweitert werden, etwa um Funktionalität für Durchschnittswerte. Mithilfe solcher Technologien lässt sich also der Entwicklungsaufwand für die Datenbank- und einen Teil der Logikebene wesentlich reduzieren, wobei aufgrund des generativen Ansatzes die Fehlerquote deutlich unter der von händisch geschriebenem Code liegt.
Im nächsten Abschnitt wollen wir uns auf die Ebene der Benutzerschnittstelle begeben. Auch dort kann durch die Kombination moderner Technologien vieles vereinfacht werden.
Modelle für das UI mit ECView
ECView ist ein OSGi-Framework, das es