SlideShare ist ein Scribd-Unternehmen logo
1 von 35
Rapid Application Development 
mit Grails und AngularJS 
Stefan Glase 
Stefan Scheidt
Eure Sprecher 
Stefan.Glase@opitz-consulting.com 
twitter/stefanglase 
github/codescape 
Stefan.Scheidt@opitz-consulting.com 
twitter/stefanscheidt 
github/stefanscheidt
Mission 
Wir entwickeln gemeinsam mit allen 
Branchen Lösungen, die dazu führen, dass 
sich diese Organisationen besser entwickeln 
als ihr Wettbewerb. 
Unsere Dienstleistung erfolgt 
partnerschaftlich und ist auf eine langjährige 
Zusammenarbeit angelegt. 
Leistungsangebot 
 Application Lifecycle Management 
 IT-Beratung 
Business-Lösungen 
Managed Services 
Training und Coaching 
 IT-Trends 
Märkte 
 Branchenübergreifend 
 Über 600 Kunden 
29% 
Industrie / Versorger / 
Telekommunikation 
29% 
Handel / Logistik / 
Dienstleistungen 
42% 
Öffentliche Auftraggeber / Banken und 
Versicherungen / Vereine und Verbände 
Eckdaten 
Gründung 1990 
 400 Mitarbeiter 
 9 Standorte 
© OPITZ CONSULTING <Präsentationstitel – bitte im Folienmaster ändern> GmbH 2011 Seite 3
Frontend-Architekturen
"Multi-Page Web Apps" 
Browser Server 
Model 
View 
Controller 
Backend 
HTML-Page 
UI Values 
Data 
Request 
Response 
HTML
"Single Page Web Apps" 
Browser Server 
Model 
View 
Controller 
Data Backend
Laufzeit-Sicht "Single Page" 
Web Server 
REST 
Endpoints 
Browser 
HTML 
+ CSS 
+ JavaScript 
HTML 
+ CSS 
+ JavaScript 
Request 
Response: 
JSON, HTML 
Initiales 
Laden 
JavaScript 
aktualisiert DOM
AngularJS
"AngularJS is a structural framework for dynamic web 
apps. [...] It attempts to minimize the impedance 
mismatch between document centric HTML and what 
an application needs by creating new HTML 
constructs." 
http://docs.angularjs.org/guide/introduction
AngularJS im Überblick 
Framework 
Declarative 
UI Templates 
Two-Way 
Data Binding 
MVC with 
Dependency Injection
Demo: AngularJS 
http://www.flickr.com/photos/dissolved/2514697398/
Grails
"Grails is an Open Source, full stack, web application 
framework for the JVM. It takes advantage of the 
Groovy programming language and convention over 
configuration to provide a productive and stream-lined 
development experience." 
http://grails.org
Technologie-Unterbau 
Spring Groovy 
Grails 
Hibernate SiteMesh
Einheitliche Verzeichnisstruktur 
grails-app 
- conf 
- controllers 
- domain 
- i18n 
- services 
- taglib 
- utils 
- views 
lib 
scripts 
src 
- groovy 
- java 
test 
- integration 
- unit 
web-app
Konfiguration 
grails-app/conf/ 
hibernate/ 
spring/ 
resources 
ApplicationResources 
BootStrap 
BuildConfig 
Config 
DataSource 
UrlMappings
Fachklassenmodellierung 
class Person { 
String firstname 
String lastname 
String email 
static constraints = { 
firstname(blank: false) 
lastname(blank: false) 
email(unique: true, email: true) 
} 
String toString() { 
"$firstname $lastname ($email)" 
} 
}
„Groovyness“ 
new File('beispiel.txt').eachLine { 
line -> println line 
} 
new Person( 
firstname: 'Max', lastname: 'Mustermann' 
).save() 
100.times { 
println 'Hello World' 
}
Plugins
Grails 
& 
AngularJS
Aufgabenverteilung 
Web Server 
REST 
Endpoints 
Browser 
HTML 
+ CSS 
+ JavaScript 
AngularJS 
Request Response: JSON 
Grails 
Same Origin Policy
Same Origin Policy 
Reverse Proxy 
Cross-origin resource sharing (CORS) 
JSON with padding (JSONP)
Same Origin Policy 
Reverse Proxy 
Cross-origin resource sharing (CORS) 
JSON with padding (JSONP)
Integration bei Entwicklung 
Separate Projekte 
AngularJS-App eingebettet als Asset
Integration bei Entwicklung 
Separate Projekte 
AngularJS-App eingebettet als Asset
Demo: Grails & AngularJS
Integration bei Entwicklung 
Separate Projekte 
AngularJS-App eingebettet als Asset
Asset Pipeline Plugin 
The Asset-Pipeline is a plugin used for 
managing and processing static assets 
in Grails applications. 
http://bertramdev.github.io/asset-pipeline/
Demo: AngularJS-App als Asset
Bewertung und Fazit
Fazit (1) 
AngularJS ermöglicht eine produktive Entwicklung von 
Single-Page-Apps als Konsument eines REST-Backends. 
Grails ermöglicht die produktive Entwicklung von Multi- 
Page-Apps und des Backends für Single-Page-Apps.
Fazit (2) 
Eine Trennung in separate Projekte erlaubt die 
Entkopplung von Frontend und Backend bei 
Entwicklung und im Betrieb. 
Da AngularJS optional nur Teile einer Page 
"kontrollieren" kann, ist auch eine Mischung von Multi- 
Page- und Single-Page-Architektur möglich.
Beispiel-Code 
https://github.com/opitzconsulting/tasklist-grails-angular
Links 
http://grails.org 
http://angularjs.org 
Grails in Action, 2nd Ed., Ch. 14 
http://angular-tips.com/blog/2013/08/ 
my-workflow-with-lineman/
Herzlichen Dank für 
Ihre Aufmerksamkeit! 
youtube.com/opitzconsulting 
twitter.com/OC_WIRE 
slideshare.net/opitzconsulting 
xing.com/net/opitzconsulting

Weitere ähnliche Inhalte

Mehr von OPITZ CONSULTING Deutschland

OC|Webcast: Oracle Lizenzierung - Die größten Fallen in der Praxis
OC|Webcast: Oracle Lizenzierung - Die größten Fallen in der PraxisOC|Webcast: Oracle Lizenzierung - Die größten Fallen in der Praxis
OC|Webcast: Oracle Lizenzierung - Die größten Fallen in der PraxisOPITZ CONSULTING Deutschland
 
OC|Webcast: Oracle Lizenzierung - Virtualisierung und Cloud
OC|Webcast: Oracle Lizenzierung - Virtualisierung und CloudOC|Webcast: Oracle Lizenzierung - Virtualisierung und Cloud
OC|Webcast: Oracle Lizenzierung - Virtualisierung und CloudOPITZ CONSULTING Deutschland
 
OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!
OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!
OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!OPITZ CONSULTING Deutschland
 
OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...
OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...
OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...OPITZ CONSULTING Deutschland
 
OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...
OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...
OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...OPITZ CONSULTING Deutschland
 
OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?
OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?
OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?OPITZ CONSULTING Deutschland
 
OC|Weekly Talk - Digitales Coaching & Smart Sparring
OC|Weekly Talk - Digitales Coaching & Smart Sparring OC|Weekly Talk - Digitales Coaching & Smart Sparring
OC|Weekly Talk - Digitales Coaching & Smart Sparring OPITZ CONSULTING Deutschland
 
Effiziente Betriebsoptimierung durch Cloud Nutzung
Effiziente Betriebsoptimierung durch Cloud NutzungEffiziente Betriebsoptimierung durch Cloud Nutzung
Effiziente Betriebsoptimierung durch Cloud NutzungOPITZ CONSULTING Deutschland
 
OC|Weekly Talk - Mitarbeiterführung in Zeiten von Social Distance
OC|Weekly Talk - Mitarbeiterführung in Zeiten von Social DistanceOC|Weekly Talk - Mitarbeiterführung in Zeiten von Social Distance
OC|Weekly Talk - Mitarbeiterführung in Zeiten von Social DistanceOPITZ CONSULTING Deutschland
 
Oracle-Lizenzierung bei Virtualisierung und in der Cloud
Oracle-Lizenzierung bei Virtualisierung und in der CloudOracle-Lizenzierung bei Virtualisierung und in der Cloud
Oracle-Lizenzierung bei Virtualisierung und in der CloudOPITZ CONSULTING Deutschland
 
Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...
Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...
Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...OPITZ CONSULTING Deutschland
 
Handlungsoptionen bei der Modernisierung von Legacy-Systemen
Handlungsoptionen bei der Modernisierung von Legacy-SystemenHandlungsoptionen bei der Modernisierung von Legacy-Systemen
Handlungsoptionen bei der Modernisierung von Legacy-SystemenOPITZ CONSULTING Deutschland
 

Mehr von OPITZ CONSULTING Deutschland (20)

10 Thesen zur professionellen Softwareentwicklung
10 Thesen zur professionellen Softwareentwicklung10 Thesen zur professionellen Softwareentwicklung
10 Thesen zur professionellen Softwareentwicklung
 
OC|Webcast: Oracle Lizenzierung - Lizenznews 2021
OC|Webcast: Oracle Lizenzierung - Lizenznews 2021OC|Webcast: Oracle Lizenzierung - Lizenznews 2021
OC|Webcast: Oracle Lizenzierung - Lizenznews 2021
 
OC|Webcast: Oracle Lizenzierung - Die größten Fallen in der Praxis
OC|Webcast: Oracle Lizenzierung - Die größten Fallen in der PraxisOC|Webcast: Oracle Lizenzierung - Die größten Fallen in der Praxis
OC|Webcast: Oracle Lizenzierung - Die größten Fallen in der Praxis
 
OC|Webcast: Oracle Lizenzierung - Virtualisierung und Cloud
OC|Webcast: Oracle Lizenzierung - Virtualisierung und CloudOC|Webcast: Oracle Lizenzierung - Virtualisierung und Cloud
OC|Webcast: Oracle Lizenzierung - Virtualisierung und Cloud
 
OC|Webcast: Grundlagen der Oracle-Lizenzierung
OC|Webcast: Grundlagen der Oracle-LizenzierungOC|Webcast: Grundlagen der Oracle-Lizenzierung
OC|Webcast: Grundlagen der Oracle-Lizenzierung
 
OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!
OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!
OC|Weekly Talk: Inspect’n’Adapt – Make Change come true!
 
OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...
OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...
OC|Webcast: Schnell und clever in die AWS Cloud – Migrationsszenarien und Han...
 
OC|Weekly Talk The Power of DevOps…
OC|Weekly Talk  The Power of DevOps…OC|Weekly Talk  The Power of DevOps…
OC|Weekly Talk The Power of DevOps…
 
OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...
OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...
OC|Weekly Talk: "Das müsste man mal digitalisieren" - Mit Low-Code schnell zu...
 
OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?
OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?
OC|Weekly Talk: Service Management – Was hat sich durch Corona geändert?
 
OC|Weekly Talk - Digitales Coaching & Smart Sparring
OC|Weekly Talk - Digitales Coaching & Smart Sparring OC|Weekly Talk - Digitales Coaching & Smart Sparring
OC|Weekly Talk - Digitales Coaching & Smart Sparring
 
OC|Weekly Talk - Beratung remote
OC|Weekly Talk - Beratung remoteOC|Weekly Talk - Beratung remote
OC|Weekly Talk - Beratung remote
 
Effiziente Betriebsoptimierung durch Cloud Nutzung
Effiziente Betriebsoptimierung durch Cloud NutzungEffiziente Betriebsoptimierung durch Cloud Nutzung
Effiziente Betriebsoptimierung durch Cloud Nutzung
 
OC|Weekly Talk - Mitarbeiterführung in Zeiten von Social Distance
OC|Weekly Talk - Mitarbeiterführung in Zeiten von Social DistanceOC|Weekly Talk - Mitarbeiterführung in Zeiten von Social Distance
OC|Weekly Talk - Mitarbeiterführung in Zeiten von Social Distance
 
OC|Weekly Talk Remote Design Thinking
OC|Weekly Talk Remote Design ThinkingOC|Weekly Talk Remote Design Thinking
OC|Weekly Talk Remote Design Thinking
 
OC|Webcast Smart Innovation am 7. April 2020
OC|Webcast Smart Innovation am 7. April 2020OC|Webcast Smart Innovation am 7. April 2020
OC|Webcast Smart Innovation am 7. April 2020
 
2020 oracle lizenznews
2020 oracle lizenznews2020 oracle lizenznews
2020 oracle lizenznews
 
Oracle-Lizenzierung bei Virtualisierung und in der Cloud
Oracle-Lizenzierung bei Virtualisierung und in der CloudOracle-Lizenzierung bei Virtualisierung und in der Cloud
Oracle-Lizenzierung bei Virtualisierung und in der Cloud
 
Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...
Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...
Wie baue ich eine KI, die besser als jeder Mensch ein Problem und dessen Ursa...
 
Handlungsoptionen bei der Modernisierung von Legacy-Systemen
Handlungsoptionen bei der Modernisierung von Legacy-SystemenHandlungsoptionen bei der Modernisierung von Legacy-Systemen
Handlungsoptionen bei der Modernisierung von Legacy-Systemen
 

Rapid Application Development mit Grails und AngularJS2

Hinweis der Redaktion

  1. Same-Origin-Policy erklären!
  2. Single Page Apps ... - erlauben interaktive Web-Applikationen ("Rich Internet Applications") - "entlasten" den Server und erlauben "Thin Server Architectures"/(nahezu) zustandslose Server-Apps - werden wie Client-Server-Applikationen entwickelt - können prinzipiell offline betrieben werden Nachteile bei ... - Search Engine Optimization - mögliche Lösung: SPA für Menschen, Seiten für Crawler - Bookmarking - mögliche Lösung: "URL hash fragments", HTML 5 History API - Page visit counters Fazit sollte sein: Hybride Lösungen sind wünschenswert Links: - http://itsnat.sourceforge.net/php/spim/spi_manifesto_en.php
  3. Angular ist – genau wie Grails – "opinionated" ... Ist das gut oder schlecht?
  4. Grails ist – genau wie Angular – "opinionated" ... Ist das gut oder schlecht?
  5. Same-Origin-Policy erklären!
  6. siehe auch http://addyosmani.com/blog/making-maven-grunt/ Gegebenenfalls zusätzliche Schritte beim Build einer SPA unter anderem: - Linting der JavaScript/CSS/HTML Sourcen - Konkatinieren und Minifizieren von JavaScript/CSS/HTML Sourcen
  7. siehe auch http://addyosmani.com/blog/making-maven-grunt/ Gegebenenfalls zusätzliche Schritte beim Build einer SPA unter anderem: - Linting der JavaScript/CSS/HTML Sourcen - Konkatinieren und Minifizieren von JavaScript/CSS/HTML Sourcen
  8. siehe auch http://addyosmani.com/blog/making-maven-grunt/ Gegebenenfalls zusätzliche Schritte beim Build einer SPA unter anderem: - Linting der JavaScript/CSS/HTML Sourcen - Konkatinieren und Minifizieren von JavaScript/CSS/HTML Sourcen