Groovy, Grails und NetBeans - JUG Karlsruhejug-karlsruhe.de/assets/slides/GroovyGrailsNB.pdf ·...

Preview:

Citation preview

Matthias SchmidtSoftware EngineerSun Microsystems, Inc.

Groovy, Grails und NetBeans

Sun Confidential: Internal Only

Agenda

• Die Groovy Programmiersprache• Grails Web Framework• Groovy und Grails Unterstützung in NetBeans

Sun Confidential: Internal Only

Wieso Groovy?

• Dynamische Sprachen sind ein Paradigmenwechsel.• Ist syntaktisch an Java angelehnt.• Läuft in der JVM, kein JNI, kein Marshalling.• GDK ist Obermenge/Anreicherung des JDK.• JDK Klassen sofort benutzbar.• ca. 30 % weniger LOC.

Sun Confidential: Internal Only

Alles ist ein Objekt!

• Darum geht sowas:

Sun Confidential: Internal Only

Höhere Ausdrucksfähigkeit• Optionale Semikolons:

• Default imports: * java.io.* * java.lang.* * java.math.BigDecimal * java.math.BigInteger * java.net.* * java.util.* * groovy.lang.* * groovy.util.*

Sun Confidential: Internal Only

Höhere Ausdrucksfähigkeit 2• GStrings:

• Beans:

Sun Confidential: Internal Only

Closures 1• Code als Daten

• Lesbarkeit, Flexibilität

Sun Confidential: Internal Only

Closures 2• GDK ist genauso “closifiziert” wie das JDK5

generifiziert wurde.

• Currying treibt das ganze auf die Spitze:

Sun Confidential: Internal Only

Collections: List, Range• List: def list = [5, 6, 7, 8]• Range:

Sun Confidential: Internal Only

Collections: Map• Map:

• Operations:

Sun Confidential: Internal Only

GDK mixins Type JDK Groovy

Array length field size()

Array java.lang.reflect.Array.getLength(Array) size()

String length() size()

StringBuffer length() size()

Collection size() size()

Map size() size()

File length() size()

Matcher groupCount() size()

Sun Confidential: Internal Only

Builder

Sun Confidential: Internal Only

Sun Confidential: Internal Only

Was ist Grails?

• Ruby on Rails -> Groovy/Grails• Prinzip des “Convention over Configuration”.• Projektstruktur vorgegeben.• Model-View-Controller Aufbau.• Spring, Hibernate, SiteMesh• Grails-Kommandos bestimmen den Arbeitsablauf.

Sun Confidential: Internal Only

Framework + Ablaufumgebung

• Grails ist sowohl API, ...• als auch Runtime (Jetty) sowie• Shell-Kommando: “grails run-app”.

• Keine Konfiguration per XML.• Sinnvolle Defaulteinstellungen.

Sun Confidential: Internal Only

Wiederverwendung

• Spring• Hibernate• SiteMesh• Ant• Plugin-Architektur (~ 70)• AJAX per plugins, Oder Flex, oder ...

Sun Confidential: Internal Only

Projektstruktur

Sun Confidential: Internal Only

Agile/Rapid Prototyping

• grails create-app• grails create-domain-class

• grails create-controller• grails run-app

Sun Confidential: Internal Only

Groovy Server Pages• Vergleichbar mit JSP.• Per Tag-Libs erweiterbar.

Sun Confidential: Internal Only

Scaffolding

• Grails create-controller

Sun Confidential: Internal Only

Constrains

Sun Confidential: Internal Only

Datenbankanbindung

Sun Confidential: Internal Only

Sun Confidential: Internal Only

NetBeans Integration• GSF Framework als Basis des Scripting-Supports.• Benutzer: JavaScript, PHP, Scala, Erlang, Groovy,

Ruby usw.• GSF Basis seit NetBeans 6.0.• Groovy/Grails vorraussichtlich Teil von NB 6.5.• Grails-Projekte werden nicht verändert.

Sun Confidential: Internal Only

NetBeans• Laden u. Erzeugen von Projekten per Wizard:

Sun Confidential: Internal Only

NetBeans• Laden u. Erzeugen von Projekten per Wizard:

Sun Confidential: Internal Only

NetBeans

• Code Completion

Sun Confidential: Internal Only

NetBeans• Code Folding

Sun Confidential: Internal Only

NetBeans• Syntax Highlighting

Sun Confidential: Internal Only

NetBeans• Start/Stop Server

• Customizing

Sun Confidential: Internal Only

NetBeans• Navigator View

• Error-Marking

Sun Confidential: Internal Only

NetBeans• Ausgabefenster

Sun Confidential: Internal Only

Links

• http://martin.adamek.sk• http://www.netbeans.org• http://blogs.sun.com/tor/• http://hg.netbeans.org/main/summary• http://hg.netbeans.org/main/contrib/summary• http://wiki.netbeans.org/WorkingWithNetBeansSources• http://grails.org/• http://groovy.codehaus.org/

Matthias Schmidtschmidtm@sun.com

Thanks

Recommended