DOAG SIG Java: Grails und Oracle

Slides:



Advertisements
Ähnliche Präsentationen
Forschungszentrum Informatik
Advertisements

GWT - google Web Toolkit
Persistente Domänenmodelle mit JPA 2.0 und Bean Validation
Objektrelationales Mapping mit JPA Advanced Topics Jonas Bandi Simon Martinelli.
JPQL Java Persistence Query Language
Software Engineering Praktikum SS 2003
Software Engineering Praktikum WS 2002/03
Übung 5 Mehrstufige Client/Server-Systeme mit Enterprise Java Beans
Seite 1 Reinhard Huber Anna Völkl ITTBA Apache Tomcat Anna Völkl, Reinhard Huber
Ruby on Rails im Überblick
Objektrelationales Mapping mit JPA Getting Started Jonas Bandi Simon Martinelli.
Java 2 Enterprise Edition (J2EE)
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
Java: Dynamische Datentypen
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Oracle WebServer - Einführung. © Prof. T. Kudraß, HTWK Leipzig Oracle Web Application Server HTML WebServer ® File system Static HTML PL/SQL Packages.
Tomcat (I) Ende 1999 Jakarta-Projekt von Apache, IBM und Sun gegründet
Christian Kästner Modellgetriebene Softwareentwicklung Eclipse Modelling Framework.
Projektplan: Fachgebiet Software Engineering Übersicht © Albert Zündorf, Kassel University.
Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt.
Einführung Servlets/JSPs
Herzlich Willkommen… welcome… soyez la bienvenue….
University of Applied Sciences Übung Objektorientierte Programmierung II Dipl.-Inf. (FH) Markus Vogler.
Wir bauen uns eine Webapplikation!
Michael Haverbeck System Engineer
Einführung in die Programmiersprache Java
08. September 2010Entwicklungsstrategien in Liferay 1 Christian Krause, URZ FSU Jena, IDM-Arbeitsgruppe.
MDA – Framework AndroMDA
Robotron – Titel der Präsentation Martin Kunze,
Einführung / Geschichte Einführung / Geschichte Motivation Motivation Beispiel Beispiel Architektur / Komponenten Architektur / Komponenten Konfiguration.
EJB-Applikationsserver
Java und Eclipse.
Consulting and Solutions.NET Vortragsreihe – Vorstellung der Referenten Happy Arts Software Markus Kämmerer IT-Erfahrung seit 1987,
Aichinger Christian, Strasser Jürgen. Inhalt JSF EJB Praxis - Integration.
Your name Bedeutung von Internet- Technologien Gruppe 1 Andreas Feuerstein Philipp Hochratner Christian Weinzinger.
Developer Day Office APPs entwicklen Simon Amrein Trivadis AG Die ersten Schritte in eine neue Office-Welt.
Cooperation unlimited © Zühlke Juni 2009 Hansjörg Scherer Folie 1 Cooperation unlimited TFS als BackEnd für Visual Studio und Eclipse.
Getting Started Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Java Server Pages Sergej Keterling
FIN-IVS Dr.Fritz Zbrog Verteilte Systementwicklung EJB Tutorial Was wird für EJB-Entwicklung benötigt ? J2EESDK 1.4 (software developement kit)
JavaServer Faces Urs Frei. Inhalt JSF Funktionsweise Rückblick JSP Bestandteile von JSF So einfach ist die Anwendung (Beispiel) Eclipse im Einsatz (Entwicklungsumgebung)
Torque in Turbine Team 4 Josef Bohninger Thomas Lindenhofer
Einführung in Web Services Web Services in der Praxis
Projekt Pokémon (CSL) Evaluation Technologien / Entwicklungsumgebungen Schlusspräsentation, Philip Iezzi, BDLI 2.
Enhydra Shark Workflow-Management Frank Aurich Markus Reisch.
Vassil Dimov.  Was ist Blue Age  Eigenschaften  Möglichkeiten  Hello World (Beispiel)  Entity Creation(Beispiel)  Benefit.
Web und Mobile Apps Programmieren Marco Jakob Kurzvortrag OSS an Schulen
Geschichte - Entstehung - Was ist PHP? Einordnung - Allgemeines
Java 2 Enterprise Edition (J2EE) Sascha Baumeister Software Architect Specification Lead JSR086 IBM Deutschland Entwicklung GmbH
Rusch Philipp, Spiegel Philipp, Sieber Michael, Ucar Sahin, Wetzel Markus.
Seminararbeit Release Management von Web-Systemen Minh Tran Lehrstuhl für Software Engineering RWTH Aachen
Forms 9i - New FeaturesSeite 1 Forms 9i New Features Gerd Volberg OPITZ CONSULTING GmbH.
© 2012 TravelTainment Einführung in Enterprise JavaBeans Seminarvortrag von Ralf Penners Folie 1 von 34.
Cubido business solutions gmbh Haidfeldstrasse 33 A-4060 Leonding di(fh) Wolfgang Straßer ° Rundumblick.
JAVA - Einführung. © Übersicht Hintergrund und Geschichte Wie sieht ein JAVA Programm aus ? Was ist ein JAVA Programm ? Wie schreibt/übersetzt.
WebServices Vortrag zur Diplomarbeit WebServices Analyse und Einsatz von Thomas Graf FH Regensburg
Infopoint - Ruby on Rails - Jörg Wüthrich
Verteilte Anwendungen: J2EE
Workshop 1 Getting Started 2016 Boris Wylutzki
Google App Engine - Technische Stärken und Schwächen
Apache Camel Christian Schneider
The IT–Information System
Jakarta Struts Quasi-Standard für JSP-basierte Entwicklung: Jakarta Struts Key Features von Struts: Implementierung des Action-Command-Pattern („Model.
Investitionen sichern - wachse mit Forms in die neue Welt
Wesentliche Bestandteile:
Von Oracle Reports zum BI Publisher
Ein kurzer Überblick Thomas Karp
Senior Java/J2EE Developer – jetzt verfügbar
 Präsentation transkript:

DOAG SIG Java: Grails und Oracle Rapid Web Application Development mit Grails und Oracle Referent: Frank Szilinski

Firmenvorstellung Kernkompetenzen esentri Strategieberatung Projektmanagement Technologie Java/SOA Software Solutions Open Source Oracle RIA

Technologie Portfolio

Ziele des Vortrags mit Grails und Oracle Overview Technology-Stack Rapid Web Application Development mit Grails und Oracle Overview Technology-Stack Wo gehört das Framework hin? Groovy und Grails Einblick in die Sprache Groovy und das Framework Grails Grails und Oracle Zusammenspiel Datenbank, Grails und WebLogic Real-Life Plug-In, Integration, Einsatzgebiete, Conclusion

Trends – Groovy und Grails

Was ist Groovy? 2003 gestartet 2004 als JSR-241als Standard aufgenommen 2007 Release 1.0 2007 Jax Innovation Award 2010 Release 1.7.1 Basis für Grails Allzweck-Programmiersprache für die JVM Ausdrucksstärke von Ruby, Lisp und Python Stabile, funktionsreiche Sprache Objektorientiert Template Mechanismen

Was ist Grails? 2005 gestartet 2006 Release 0.1 2008 Release 1.0 2008 Februar Das Unternehmen Groovy Grails wurde von SpringSource gekauft 2008 November SpringSource wird von VMWare übernommen aktuell Release 1.2.2

Was ist Grails? Web Application Development Plattform Rapid Getting things done Open Source keine Lizenzkosten Full-stack MVC Framework JVM als Laufzeitumgebung Code Compile Package Deploy Test Debug Nahtlose Java Integration Ausführbar in diversen Containern Deckt den JEE Development Cycle ab Verbindet bewährte OSS Frameworks wie Spring, Hibernate, Sitemesh, HSQLDB, Quartz

Vergleichbare Frameworks* Application Development Framework

Java Development Kit (JDK) Grails Framework Grails Spring Hibernate Sitemesh JEE Groovy Java Language Java Development Kit (JDK) Java Virtual Machine

Integrated Development Environments SpringSource ToolSuite Grails-Nature Code-Completion Grails Aktionen über Kommandozeile Eclipse Bisher keine Integration Oracle JDeveloper Grails Aktionen über konfigurierbare externe Tools Oracle NetBeans Grails Integration in Projektbaum Automatische Generierung und Konfiguration Bester Support

Demo Teil I Scaffolding Sample

Grails Einflussfaktoren Scaffolding und templating Rock-solid foundations Java Integration Agiles Vorgehen Incredible wetware Grails Convertion over Configuration ProduktivitätsEthos

Begriffe = Best Practices Scaffolding Gerüst um die notwendigsten CRUD Operationen, Controller und Views eines Domain-Objects generieren zu lassen Convention over configuration (CoC) Ein Entwickler kann sich darauf verlassen, dass ein Standardverhalten ohne Konfiguration erreicht wird, was jedoch angepasst werden kann, falls dies notwendig ist Don‘t repeate yourself (DRY) Redundanzen, Mehrfachkonfiguration und Copy&Paste vermeiden Default is what you expect (DIWYE) Das Verhalten und die Standards sind so definiert, wie ein Entwickler es erwarten würde Domain-driven-Development (DDD) Die Domain ist die treibende Kraft

Der Einstieg in Groovy Groovy ist eine... dynamische Scriptsprache Quelle: Bild: http://www.pedantique.org/2010/02/14/life-on-the-jvm/

Groovy Interpreter Groovy Groovy Source compile (groovy) Java ByteCode execute (Class Loader)

Der Einstieg in Groovy Erfahrener Entwickler spart mit Groovy gegenüber Java 40-60% Quellcode und benötigt nur ⅓ der Zeit Kann mit Java vermischt werden Wird in Java ByteCode übersetzt Groovy Klasse = Java Klasse Groovy Servlets und Templates bieten optimale Voraussetzung zur Erstellung nicht nur von Webseiten Viele neue Sprachfeatures wie GPath GString Internal iterations Closures Meta Object Protocol (MOP) Dynamics/Expandos, Kategorien, Metaclass, AST Transformations

Die Sprache Groovy Beispiel 1 Parse alle Dateien rekursiv unterhalb des Verzeichnisses „aFolder“, die mit „TAG“ enden und prüfe die Gültigkeit und Wohlgeformtheit dieser Dateien: im Terminal groovy -e 'new File(“aFolder").eachFileRecurse{ f -> if (!f.isDirectory() && f.name.endsWith(“TAG")){ new XmlParser().parse(f)}}'

Die Sprache Groovy Beispiel 2 Beispiel 3 Java Groovy Java Groovy ((Date)getAttribute("PromotionDate")).compareTo((Date)getAttribute("HireDate")) > 0 Groovy PromotionDate > HireDate Beispiel 3 Java ((Number)getAttribute("Salary").multiply(new Number(0.10)) Groovy Salary * 0.10

Die Sprache Groovy Beispiel 4 Java Java Groovy List names = new ArrayList(); for (Iterator iterator = people.iterator(); iterator.hasNext();) { Person person = (Person) iterator.next(); names.add(person.getName()); } System.out.println(names); Java List names = new ArrayList(); for (Iterator iterator = people.iterator(); iterator.hasNext();) { Person person = (Person) iterator.next(); names.add(person.getName()); } System.out.println(names); Groovy def names = people*.name println names

Die Sprache Groovy Beispiel 5 Java Groovy try { // Create a URL for the desired page URL url = new URL("http://hostname:80/index.html"); // Read all the text returned by the server BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); String str; StringBuffer sb = new StringBuffer(); while ((str = in.readLine()) != null) { sb.append(str); } in.close(); } catch (MalformedURLException e) { } catch (IOException e) { System.out.println(sb.toString()); Groovy def text = new URL("http://hostname:80/index.html").text println text

Die Sprache Groovy Beispiel 6: Closures def adder = {a,b -> a+b } assert 3 == adder.call(1,2) def multiplier = {a,b -> a*b } assert 2 == multiplier(1,2) def map = {a,b,f -> f(a,b) } assert 3 == map(1,2,adder) Beispiel 6: Closures

Die Sprache Groovy Beispiel 7: Expandos coach = new Expando() coach.firstName = "Louis" coach.lastName = "Van Gaal" coach.victories = 148 coach.matchWon = { coach.victories++; } coach.matchWon() assert coach.victories == 149

Grails Architektur Grails Dojo Prototype Yahoo UI Flex Acegi ... Quarz JUnit Canoo WebTest Groovy Java Spring Hibernate Sitemesh

Grails DispatcherServlet Grails Integration Client Presentation Geschäftslogik Integration Data GSP Controller GORM Grails DispatcherServlet Service Domain Remote Services Enterprise Services

Grails MVC Paradigma Aufruf von Client: http://localhost/bookapp/Book/show class BookController { def show = { ["books": Book.list ] } <html> <head> <title> Book list </title> </head> <body> <h1> Book list </h1> <table> <tr> <th> Title </th> <th> Author </th> </tr> <g:each in=" ${ books } "> <td> ${ it.title } </td> <td> ${ it.author } </td> </g:each> </table> </body> </html> Controller class Book { String title Author author String ISBN BigDecimal price def belongsTo = Author } Model View

Grails GORM GORM = Groovy Object-Relational Mapping Basis für GORM ist Hibernate, kann aber durch Plug-Ins beliebige ausgetauscht werden Persistence Management ist ohne Konfiguration verfügbar Domain Klassen haben durch Konvention automatisch Methoden Zugriff über dynamische Finder-Methoden find count findAll list get ... class User { String login String firstName String lastName String role } User.findByLastNameAndFirstName('Szilinski', 'Robert') User.findByFirstNameLike('Sz%')

Grails GORM Automatische Instanzmethoden user.save(), user.validate(), user.update(), user.delete() Uni- und Bi-Direktionale Beziehungen id, version, equals, hashCode, toString von Grails generiert Domain-Klasse und anwendungsspezifisch Validatoren class Author { String firstName String lastName def hasMany = [books : Book] static constraints={ firstName( blank:false) lastName( } class Book { String title Author author Publisher publisher def belongsTo = [author:Author] } class Publisher { String name def hasMany = [books:Book] }

Grails DataSource - Oracle Datenbanken pooled = true driverClassName = "oracle.jdbc.driver.OracleDriver" username = "xeuser" password = "xepass" dialect = "org.hibernate.dialect.Oracle9Dialect" } hibernate { cache.use_second_level_cache=true cache.use_query_cache=true cache.provider_class='net.sf.ehcache.hibernate.EhCacheProvider' environments { development { dbCreate = "update" url = "jdbc:oracle:thin:@myXEDatabase:1521:XE" test { ... production {

Grails und Groovy Server Pages (GSP) Meta Tags in den HTML-Dateien oder per Konvention angeben Konvention: Decorator in entsprechende Verzeichnisse legen DecoratorMapper Beispielsweise PrintDecoratorMapper GSP ≈ JSP eigenen TagLibs und Integration in Sitemesh Ajax TagLib unterstützt Prototype, Rico, Yahoo UI, Dojo, DWR, OpenLazlo, Wicket

Verkürzter Entwicklungszyklus Code Compile Package Deploy Test Debug Entwicklungszyklus Grails Entwicklungszyklus JEE Code Test Debug

Deployment-Matrix Mögliche Application Container ab Grails 1.0 Oracle AS GlassFish v3 Prelude v3 "Prelude“ Weblogic 8.1.2 IBM Integrated Web Application Server for i 7.1 Weblogic 9.2 Weblogic 10 Sun App Server 8.2 Resin 3.2 Tomcat 5.5 JBoss 4.2 Tomcat 6.0 Jetty 6.1 JOnAS 5.1 SpringSource Application Platform 1.0 beta JOnAS 5.2 Websphere Application Server Community Edition 2.0 (WAS CE) Geronimo 2.1.1 GlassFish v1 (Sun AS 9.0) and v2 (Sun AS 9.1) Websphere 6.1

Grails Application on Oracle WebLogic <?xml version="1.0" encoding="UTF-8"?> <weblogic-web-app xmlns="http://www.bea.com/ns/weblogic/90" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance“ xsi:schemaLocation="http://www.bea.com/ns/weblogic/90 http://www.bea.com/ns/weblogic/90/weblogic-web-app.xsd"> <container-descriptor> <prefer-web-inf-classes>true</prefer-web-inf-classes> </container-descriptor> </weblogic-web-app>

Plug-Ins – die Welt liegt Grails zu Füssen Grails ist eine Plugin-Laufzeit-Umgebung Der Grails Kern besteht aus Plug-Ins (im Standard MVC, GORM etc.) Macht Grails sehr flexibel und Umfangreich Grails-Plugin-Community > 390 Plug-Ins Apache Camel Google Analytics Comet Google Maps Cloud Foundry JPA DataSources JMS Facebook LDAP Feeds Twitter Flex/BlazeDS ...

Grails Performance und Zukunft Problem Groovy bisher Faktor 5x bis 15x langsamer als Java!!! Abhilfe JRockit JVM * InvokeDynamic (Java7) Groovy Optimizations (Loop unrolling, etc) Groovy++

Grails Integration Grails auf der Grünen Wiese? Grails Integration in existierende Umgebungen? Wiederverwendung von existierenden Anwendungen? Ist Grails Enterprise-Ready?

Erfahrungsberichte http://www.noiteuniversitaria.com.br/ Brasilianische Entertainment-Seite 1 Million Seitenzugriffe im Monat http://www.virtualtourist.com/ Travel Community 1 Million Benutzer und 3 Millionen Photos http://www.sky.com Multi-Channel Television Service mit nahezu 10 Millionen Kunden http://kontoblick.de/ Persönliches Finanz-Tracking in kürzester Zeit realisiert

Demo Teil II Grails on Oracle

Kontakt Frank Szilinski Bachelor of Science in Computer Science frank.szilinski@esentri.com Stephanienstr. 36 76133 Karlsruhe Tel 0721 / 7540 7530 Fax 0721 / 7540 7539 www.esentri.com info@esentri.com