grails - fh-muenster.de · 2015-01-14 · grails –Überblick folie 3 [grails –web 2.0...

23
Grails …the search is over? Web 2.0 Software - Architekturen Wintersemester 2014/2015 14. Januar 2015 Bruno Burke, B.Sc. burke@fh - muenster.de Peter Weßeler, B.Sc. pw554483@fh - muenster.de

Upload: others

Post on 28-May-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Grails - fh-muenster.de · 2015-01-14 · Grails –Überblick Folie 3 [Grails –Web 2.0 Software-Architekturen] –[Burke/Weßeler] Full Stack Web Application Framework Spring MVC

Grails…the search is over?

Web 2.0 Software-ArchitekturenWintersemester 2014/2015

14. Januar 2015Bruno Burke, [email protected]

Peter Weßeler, [email protected]

Page 2: Grails - fh-muenster.de · 2015-01-14 · Grails –Überblick Folie 3 [Grails –Web 2.0 Software-Architekturen] –[Burke/Weßeler] Full Stack Web Application Framework Spring MVC

Agenda

Folie 2 [Grails – Web 2.0 Software-Architekturen] – [Burke/Weßeler]

Überblick Geschichte

Popularität

Architektur / Eigenschaften / Konzepte

Domain

View

Controller

Testing

Groovy

Page 3: Grails - fh-muenster.de · 2015-01-14 · Grails –Überblick Folie 3 [Grails –Web 2.0 Software-Architekturen] –[Burke/Weßeler] Full Stack Web Application Framework Spring MVC

Grails – Überblick

Folie 3 [Grails – Web 2.0 Software-Architekturen] – [Burke/Weßeler]

Full Stack Web Application FrameworkSpring MVC

SiteMesh

Hibernate

Groovy (Programmiersprache)

MVC Paradigma (Domain Class / View / Controller)

Frontend/Backend

Angelehnt an „Ruby on Rails

Entwicklung durch G2One, jetzt Pivotal

Page 4: Grails - fh-muenster.de · 2015-01-14 · Grails –Überblick Folie 3 [Grails –Web 2.0 Software-Architekturen] –[Burke/Weßeler] Full Stack Web Application Framework Spring MVC

Grails – Überblick

Folie 4 [Grails – Web 2.0 Software-Architekturen] – [Burke/Weßeler]

Kommandozeilenprogramm grails(Aufgebaut auf Gant)

Projekterstellung

Testen

Server starten

Erstellen von Komponenten

Standalone FrameworkBesitzt eigenen Webserver (Tomcat) und Datenbank (h2DB)

Export als WAR Archive

Page 5: Grails - fh-muenster.de · 2015-01-14 · Grails –Überblick Folie 3 [Grails –Web 2.0 Software-Architekturen] –[Burke/Weßeler] Full Stack Web Application Framework Spring MVC

Grails – Geschichte

Folie 5 [Grails – Web 2.0 Software-Architekturen] – [Burke/Weßeler]

2005- Erste Veröffentlichung noch als Groovy on Rails durch G2One

Vergleich: Rails erste Veröffentlichung 2004

2006 – Umbenennung in Grails

Bitte um Namensverzicht durch Ruby on Rails Autor

2008 – Release der Version 1.0

2008 – Aufkauf durch SpringSource

2011 – Release der Version 2.0

Aktuell: Version 2.4.3 (30. Juli 2014) Pivotal Software, Inc.

Page 6: Grails - fh-muenster.de · 2015-01-14 · Grails –Überblick Folie 3 [Grails –Web 2.0 Software-Architekturen] –[Burke/Weßeler] Full Stack Web Application Framework Spring MVC

Grails – Popularity

Folie 6 [Grails – Web 2.0 Software-Architekturen] – [Burke/Weßeler]

Quelle: http://www.indeed.com/jobanalytics/

Page 7: Grails - fh-muenster.de · 2015-01-14 · Grails –Überblick Folie 3 [Grails –Web 2.0 Software-Architekturen] –[Burke/Weßeler] Full Stack Web Application Framework Spring MVC

Grails – Eigenschaften und Konzepte

Folie 7 [Grails – Web 2.0 Software-Architekturen] – [Burke/Weßeler]

Rapid Prototyping

Scaffolding

Generierung von CRUD-Pages

Konvention vor Konfiguration

Namen und Bezeichnungen

Ordnerstruktur

No XML Configuration

Ready-to-use Entwicklungsumgebung

Functionality through mixins

Page 8: Grails - fh-muenster.de · 2015-01-14 · Grails –Überblick Folie 3 [Grails –Web 2.0 Software-Architekturen] –[Burke/Weßeler] Full Stack Web Application Framework Spring MVC

Grails – Architektur

Folie 8 [Grails – Web 2.0 Software-Architekturen] – [Burke/Weßeler]

Quelle: http://www-igm.univ-mlv.fr/~dr/XPOSE2009/Groovy_and_Grails/img/architecture_grails.png

Page 9: Grails - fh-muenster.de · 2015-01-14 · Grails –Überblick Folie 3 [Grails –Web 2.0 Software-Architekturen] –[Burke/Weßeler] Full Stack Web Application Framework Spring MVC

Grails – Domain

Folie 9 [Grails – Web 2.0 Software-Architekturen] – [Burke/Weßeler]

Domain ist „Model“ von MVC

Validation

Relationships

Persistenz (Hibernate)

Mapping

Groovy File

Quelle: http://grails.org/doc/latest/guide/GORM.html

Page 10: Grails - fh-muenster.de · 2015-01-14 · Grails –Überblick Folie 3 [Grails –Web 2.0 Software-Architekturen] –[Burke/Weßeler] Full Stack Web Application Framework Spring MVC

Grails – Domain – GORM

Folie 10 [Grails – Web 2.0 Software-Architekturen] – [Burke/Weßeler]

Grails Implementierung des Object-Relational-Mapping (ORM)

Nutzt Hibernate

Entwicklungsumgebung kommt mit H2 Datenbank

Quelle: http://tutorials.techmytalk.com/2013/08/07/grails-gorm/

Page 11: Grails - fh-muenster.de · 2015-01-14 · Grails –Überblick Folie 3 [Grails –Web 2.0 Software-Architekturen] –[Burke/Weßeler] Full Stack Web Application Framework Spring MVC

Grails – Domain – Relationships

Folie 11 [Grails – Web 2.0 Software-Architekturen] – [Burke/Weßeler]

Beziehung per Attribut für jede Richtung einzeln definierbarhasOne

hasMany

belongsTo

Basiert meist auf Java Sets

Umstellbar auf SortedSets

Page 12: Grails - fh-muenster.de · 2015-01-14 · Grails –Überblick Folie 3 [Grails –Web 2.0 Software-Architekturen] –[Burke/Weßeler] Full Stack Web Application Framework Spring MVC

Grails – Domain – Validation

Folie 12 [Grails – Web 2.0 Software-Architekturen] – [Burke/Weßeler]

Validation durch Constraints Code-Block in Domain-Class

Vielzahl an Constraints vorhanden

Definition eigener Validators möglich

Page 13: Grails - fh-muenster.de · 2015-01-14 · Grails –Überblick Folie 3 [Grails –Web 2.0 Software-Architekturen] –[Burke/Weßeler] Full Stack Web Application Framework Spring MVC

Grails – Domain – Validation - Constraints

Folie 13 [Grails – Web 2.0 Software-Architekturen] – [Burke/Weßeler]

Quelle: http://grails.org/doc/latest/ref/Constraints/Usage.html

Page 14: Grails - fh-muenster.de · 2015-01-14 · Grails –Überblick Folie 3 [Grails –Web 2.0 Software-Architekturen] –[Burke/Weßeler] Full Stack Web Application Framework Spring MVC

Grails – Domain – Objektfindung

Folie 14 [Grails – Web 2.0 Software-Architekturen] – [Burke/Weßeler]

Alle

Bestimmte ID

Mehrere IDs

Dynamic Methods:

http://grails.org/doc/2.3.x/ref/Domain%20Classes/findAllBy.html

Page 15: Grails - fh-muenster.de · 2015-01-14 · Grails –Überblick Folie 3 [Grails –Web 2.0 Software-Architekturen] –[Burke/Weßeler] Full Stack Web Application Framework Spring MVC

Grails – View

Folie 15 [Grails – Web 2.0 Software-Architekturen] – [Burke/Weßeler]

Eigene View Technology, genannt GSP – Groovy Server PagesÄhnlichkeit zu ASP und JSP

Definition eigener Tag Libraries möglich

Links

Formulare

Schleifen

If Anweisungen

Variablen / Mehrere Scopes

Templates (SiteMesh)

Page 16: Grails - fh-muenster.de · 2015-01-14 · Grails –Überblick Folie 3 [Grails –Web 2.0 Software-Architekturen] –[Burke/Weßeler] Full Stack Web Application Framework Spring MVC

Grails – View – Beispiel

Folie 16 [Grails – Web 2.0 Software-Architekturen] – [Burke/Weßeler]

Loops:

Filter:

Links:

Page 17: Grails - fh-muenster.de · 2015-01-14 · Grails –Überblick Folie 3 [Grails –Web 2.0 Software-Architekturen] –[Burke/Weßeler] Full Stack Web Application Framework Spring MVC

Grails – View – Beispiel

Folie 17 [Grails – Web 2.0 Software-Architekturen] – [Burke/Weßeler]

Formulare:

Formularelemente:

• textField• passwordField• checkBox• radio• hiddenField• select

Submitbuttons:

Page 18: Grails - fh-muenster.de · 2015-01-14 · Grails –Überblick Folie 3 [Grails –Web 2.0 Software-Architekturen] –[Burke/Weßeler] Full Stack Web Application Framework Spring MVC

Grails – Controller

Folie 18 [Grails – Web 2.0 Software-Architekturen] – [Burke/Weßeler]

Request Handling und Erstellung/Vorbereitung der Antwort

Direkte Antwort oder Delegation an ein View

Bestimmung der View durch Konvention (änderbar)

Weiterleitung zu anderen Actions möglich

Rückgabewert der Action dient als Model für View

Page 19: Grails - fh-muenster.de · 2015-01-14 · Grails –Überblick Folie 3 [Grails –Web 2.0 Software-Architekturen] –[Burke/Weßeler] Full Stack Web Application Framework Spring MVC

Grails – Testing

Folie 19 [Grails – Web 2.0 Software-Architekturen] – [Burke/Weßeler]

Automatische Tests sind wichtiger Bestandteil von Grails

Früher jUnit3 Tests

Ab Grails 2.0 verschiedene Frameworks möglichjUnit 3jUnit 4Spock

Unterstützung für 4 TestphasenUnitIntegrationFunctionalother

Page 20: Grails - fh-muenster.de · 2015-01-14 · Grails –Überblick Folie 3 [Grails –Web 2.0 Software-Architekturen] –[Burke/Weßeler] Full Stack Web Application Framework Spring MVC

Grails – Testing – SpecificationTest

Folie 20 [Grails – Web 2.0 Software-Architekturen] – [Burke/Weßeler]

Beispiel für Specification Test http://grails.org/doc/2.3.7/guide/testing.htm

Page 21: Grails - fh-muenster.de · 2015-01-14 · Grails –Überblick Folie 3 [Grails –Web 2.0 Software-Architekturen] –[Burke/Weßeler] Full Stack Web Application Framework Spring MVC

Grails - Groovy

Folie 21 [Grails – Web 2.0 Software-Architekturen] – [Burke/Weßeler]

Java Superset

Kompiliert direkt zu Java Bytecode

Viele FeaturesMetaprogramming

Closures & Currying

Mixins

Operator Overloading

Flexible Typisierung

Page 22: Grails - fh-muenster.de · 2015-01-14 · Grails –Überblick Folie 3 [Grails –Web 2.0 Software-Architekturen] –[Burke/Weßeler] Full Stack Web Application Framework Spring MVC

Grails - Fazit

Folie 22 [Grails – Web 2.0 Software-Architekturen] – [Burke/Weßeler]

Framework bietet großen Funktionsumfang

Sehr ausführliche und gut strukturierte Dokumentationhttp://grails.org/doc/2.3.x/

Schnelle Prototypen-Entwicklung möglich

Geringe Einarbeitungszeit

Viele Möglichkeiten dank flexibler Programmiersprache

Benutzung bestehender Java Bibliotheken

Leicht erweiterbar durch mehr als 1000 Plugins

Page 23: Grails - fh-muenster.de · 2015-01-14 · Grails –Überblick Folie 3 [Grails –Web 2.0 Software-Architekturen] –[Burke/Weßeler] Full Stack Web Application Framework Spring MVC

Grails - Praktikum

Folie 23 [Grails – Web 2.0 Software-Architekturen] – [Burke/Weßeler]

Frontend / Backend Entwicklung

Entwicklung eines Microblog (á la Twitter)

Sammlung von Interessanten Weblinks

Kommunikation mit anderen Blogs über REST Schnittstelle im JSON Format