Einbindung dynamischer Sprachen in Java



Ähnliche Dokumente
Struts 2 Das Imperium schlägt zurück?

Einbindung dynamischer Sprachen in Java

Last- und Stresstest mit the Grinder 3

Issue Tracker & Wiki

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Atlassian Git Essentials Nahtlose Entwicklungsworkflows aus einer Hand

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

Gerrit und Jenkins ein Traumpaar für Pre-Tested Commit

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, Java Forum Stuttgart 2007

IntelliJ IDEA. Gliederung. Was ist IntelliJ IDEA? Lizenzmodell Warum IntelliJ einsetzen? IntelliJ und Eclipse Demo. Blick über den Eclipse-Tellerrand

WLGauge: : Web Link Gauge to Measure the Quality of External WWW Links. Andreas Lübcke

Gerrit und Jenkins ein Traumpaar für Pre-Tested Commit

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Copyright 2014 Delta Software Technology GmbH. All Rights reserved.

Eignet sich Eclipse RCP als Enterprise Plattform? 2. Mai 2006 Lars Stucki & Edwin Steiner

Spring Dynamic Modules for OSGi Service Platforms

Große Übung Praktische Informatik 1

Design Patterns 2. Model-View-Controller in der Praxis

Testen mit JUnit. Motivation

Web-basierte Benutzerschnittstellen für Embedded Systeme: Eine Benutzerschnittstelle drei Sichtweisen

MOBILE ON POWER MACHEN SIE IHRE ANWENDUNGEN MOBIL?!

Sicherheit in Rich Internet Applications

Übersicht. Eclipse Foundation. Eclipse Plugins & Projects. Eclipse Ganymede Simultaneous Release. Web Tools Platform Projekt. WSDL Editor.

Di 8.4. Silverlight: Windows Presentation Foundation für s Web. Christian Wenz

Algorithmen mit Python

Seminar Bassem Ben Helal

Das Content-Management-System OpenCms im Vergleich mit TYPO3 und Joomla. Seminarvortrag von Wolfgang Neuß

Open Source. Hendrik Ebbers 2015

Der Cloud Point of Purchase. EuroCloud Conference, 18. Mai 2011 (Christoph Streit, CTO & Co-Founder ScaleUp)"

Abacus Formula Compiler (AFC)

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

Database Change Management für Continuous Delivery. Diana Lander und Andreas Falk NovaTec Consulting GmbH

Objektorientierte Programmierung

Task: Nmap Skripte ausführen

Metadateneditoren für ArcGIS

Java Script für die Nutzung unseres Online-Bestellsystems

Ein mobiler Electronic Program Guide

Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers

Albert Dengg. Graz,

Einführung in Javadoc

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Kap. 35 Swing: Grundlagen Kap Swing: Hauptfenster

SMART Newsletter Education Solutions April 2015

Software-Engineering und Optimierungsanwendungen in der Thermodynamik

Spock und Geb: Übersichtlich und nachvollziehbar Testen für alle!

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008

Fragen Arthur Zaczek. Apr 2015

Wo sind meine Anforderungen?

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

THEMA: "SAS STORED PROCESSES - SCHNELL GEZAUBERT" HELENE SCHMITZ

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Programmieren I. Kapitel 15. Ein und Ausgabe

Installations Guide für YAJSW und DTLDAP

Ein mobiler Electronic Program Guide für Android

Anpassung einer freien SSL/TLS Implementierung an die Kertasarie VM

Android-Testautomatisierung mit Robotium

Reporting Services und SharePoint 2010 Teil 1

Von Windows-Forms zu WPF mit Expression Blend? Thomas Müller conplement AG Nürnberg

HMS. Statistiken mit SAS ins Internet. HMS Analytical Software GmbH - Johannes Lang

Handbuch. Artologik EZ-Equip. Plug-in für EZbooking version 3.2. Artisan Global Software

Step by Step Webserver unter Windows Server von Christian Bartl

Gliederung. 1. That s Radiant 2. User Interface 3. Rollen 4. Installation 5. Extensions 6. Fazit

Scala & Lift. Ferenc Lajko

Frankfurt,

Radius Online-Campus. PC-technische Voraussetzungen

Eclipse Plugins für die komfortablere Verwendung von ibatis SQLMaps

Präsentation zur Vorstellung meiner Bachelor-Arbeit beim BSE- Seminar. Vortrag von Patrick Bitterling

Java Entwicklung für Embedded Devices Best & Worst Practices!

Comparing Software Factories and Software Product Lines

Ökonomik der Agrar und Ernährungswirtschaft in ILIAS

robotron*e count robotron*e sales robotron*e collect Anmeldung Webkomponente Anwenderdokumentation Version: 2.0 Stand:

GUTEN TAG. Herzlich willkommen bei Lista Office LO. Februar Ein Unternehmen der Lienhard Office Group.

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Free your work. Free your work. Wir wollen Ihnen die Freiheit geben, sich auf Ihr Geschäft zu konzentrieren.

MO 27. Aug. 2007, 17:00 UHR JAVA FRAMEWORKS TIPPS VON PROFI-GÄRTNERN GEGEN WILDWUCHS

OSGi-basierte Webapplikationen Ein Erfahrungsbericht

Herzlich Willkommen. Herzlich Willkommen. Effiziente Java Entwicklung für OpenOffice Folie 1

Henning Mersch. Tomcat. im Rahmen des RBG-Seminar SS04. Apache-Jakarta-Tomcat-Server RBG-Seminar 1/17

Andreas Mösching Senior IT Architekt Hewlett-Packard (Schweiz) GmbH HP Banking Service Center Bern

Switching. Übung 7 Spanning Tree. 7.1 Szenario

Workshop 6. Einführung in die objektorientierte Programmierung. Teil: Java mit BlueJ

Schulung Marketing Engine Thema : Einrichtung der App

Windows Server 2012 R2 Essentials & Hyper-V

Betriebliche Gestaltungsfelder

Agile Ressourcenplanung

Java Frameworks im Vergleich - ADF vs. Grails vs. Spring

arlanis Software AG SOA Architektonische und technische Grundlagen Andreas Holubek

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein: - Ein Bootimage ab Version Optional einen DHCP Server.

Effektiver Einsatz von Code-Reviews

JEAF Cloud Plattform Der Workspace aus der Cloud

How-to: Webserver NAT. Securepoint Security System Version 2007nx

J.6 Programmierung eingebetteter Systeme

Entwicklungen bei der Linux Clustersoftware

Der lokale und verteilte Fall

mobilepoi 0.91 Demo Version Anleitung Das Software Studio Christian Efinger Erstellt am 21. Oktober 2005

Weblogic Server: Administration für Umsteiger

Java Einführung Packages

Transkript:

Einbindung dynamischer Sprachen in Java Orientation in Objects GmbH Steffen Schluff Weinheimer Str. 68 68309 Mannheim Version: 1.0 www.oio.de info@oio.de Gliederung Einleitung Einsatzszenarien Java Scripting API Zusammenfassung 2

Java, XML und Open Source seit 1998 ) Software Factory ) ) Object Rangers ) ) Competence Center) Schlüsselfertige Realisierung von Java Software Individualsoftware Pilot- und Migrationsprojekte Sanierung von Software Software Wartung Unterstützung laufender Java Projekte Perfect Match Rent-a-team Coaching on the project Inhouse Outsourcing Schulungen, Coaching, Weiterbildungsberatung, Train & Solve-Programme Methoden, Standards und Tools für die Entwicklung von offenen, unternehmensweiten Systemen 3 Steffen Schluff Im a pogramar Iam a programer I'm a programor I write code Beratung Projekte Training 4

Gliederung Einleitung Einsatzszenarien Java Scripting API Zusammenfassung 5 Kennen Sie Java? [..] there are four completely different things that go by the name Java Language Enormous class library Virtual machine Security model (Jamie Zawinski, java sucks., 2000) 6

JVM Sprachen (Auszug) Java Script Groovy Jython Bean Shell JRuby Scala JavaFX Script Clojure 1998 2000 2002 2004 2006 7 Klappe, die erste! JVM Sprachen werden häufig als Skriptsprachen bezeichnet Beispiel: JSR 223 - Scripting for the Java Platform Skript ermöglicht Steuerung und Kontrolle eines Programms Häufig interpretiert oder mit vernachlässigbarem Kompilierschritt Begriffe Skript und Programm heute schwer unterscheidbar Eigene Benutzer sagen nicht Skriptsprache Skriptsprachen werden mit bestimmten Eigenschaften assoziiert Vor allem Speicherverwaltung und dynamische Typisierung 8

We got both kinds. We got Country and Western. Viele dynamisch typisierte Sprachen sind älter als Java...... und die JVM Portierungen sind auch nicht neu Renaissance durch Web Frameworks als Killer Apps Ruby on Rails, Grails, Django,... Wiederentdecken für andere isolierte Zwecke Shell Skripte, Buildmanagement, Testen,... Einbindung in bestehende Java Anwendungen Neues Steinchen im Java Architektur Baukasten Zum Steuern und Kontrollieren, d.h. Scripting 9 Gliederung Einleitung Einsatzszenarien Java Scripting API Zusammenfassung 10

Die üblichen Verdächtigen Kommandozeilen Shell in Anwendungen Graphische Konfiguration ist Standard Administratoren bevorzugen häufig Kommandozeile Anpassung und Erweiterung von Anwendungen Auslagern von Geschäftslogik und dynamische Konfiguration Benutzermakros und Reporting Rapid Prototyping Vermeidung des edit-compile-deploy Zyklus Ermöglicht schnelles Benutzer-Feedbacks 11 Wachs in meinen Händen Komplexe Anwendungen sollen häufig customizable sein Geschäftslogik, Reporting, Benutzermakros Benutzerschnittstelle von Computerspielen Keiner ist wirklich geeignet Entwickler ist zu teuer und hat kein fachliches Verständnis Anwender kann nicht (genug) programmieren Auslagern von bestimmten Anwendungsteilen Zugriff durch kundengerechte Abstraktion Skriptsprachen oder Domain Specific Language (DSL) 12

Rapid Prototyping Experimentierkasten um Ideen auszuprobieren Ziel ist das schnelle Evaluieren und Bewerten von Ideen Lösung hat keinen Anspruch auf technische Perfektion Gewisse Opfer werden gemacht (Architektur, Typisierung,...) Dynamische Sprachen können unterstützen Buildprozess schrumpft von edit-compile-run auf edit-run Dynamische Sprachen sind oft einfach und mächtig Sprache ist aber nur Teil der Lösung (Infrastruktur, Frameworks,...) Prototypen können gefährlich sein Kunden können Prototyp und Produkt oft nicht unterscheiden Nicht jedes dynamische Framework ist ein Prototyp-Framework 13 in Java Gliederung Einleitung Einsatzszenarien Java Scripting API Zusammenfassung 14

Wo tut sich was? Proprietäre Mechanismen der einzelnen Sprachen Apache Bean Scripting Framework (BSF) Scripting Support in Spring Java Community Process Scripting JSRs JSR 223 - Scripting for the Java Platform JSR 241 - Groovy Programming Language JSR 274 - BeanShell Scripting Language JSR 292 - Dynamically Typed Language Support Hauptentwickler von Jython und JRuby arbeiten bei Sun Gleiches gilt für IronPython und Microsoft 15 Java Scripting API Java Scripting API erlaubt Java Einbindung von Skriptsprachen Framework zur Script Engine Anbindung von Drittanbietern Einbindendes Programm muss konkrete Sprache nicht kennen Basiert auf JSR-223 Scripting for the Java Platform [...] background to bridge the scripting and the Java community. Seit Java 6 fester JDK Bestandteil Java 6 beinhaltet Mozilla Rhino JavaScript Implementierung für Java (Rhino 1.6R2) Weitere Sprachen per scripting project (http://scripting.dev.java.net) 16

Java Scripting API Bestandteile Überschaubare API 6 Interfaces, 5 Klassen, 1 Exception Enthalten in Package javax.script Weitere Tools und Beispiele im JDK (jrunscript, jconsole-plugin,...) Zwei grobe Aufgabenbereiche Scripting Funktionalität für die jeweiligen Sprachen Kontext in dem ein Script ausgeführt wird 17 Motoren, Fabriken und Manager (1) Interface Übersetzung und Evaluierung (Ausführung) von Skripten Überladene Methode eval() für verschiedene Quellen (String, Reader) Interface Factory Erzeugt Instanzen Enthält Metadaten (Name, Version, File Extension,...) Enthält Methoden zur Skripterzeugung in der jeweiligen Sprache Klasse Manager Sucht vorhandene Factory Implementierungen Verwendet Service Provider Mechanismus aus Jar Spezifikation Konkrete Klasse als programmatischer Einstiegspunkt 18

Motoren, Fabriken und Manager (2) Factory (Jython) spam.py Manager Service Provider Mechanismus Jython Factory (Jython) (JavaScript) foo.py rhino.js JavaScript (JavaScript) bar.js 19 Hello World in JavaScript Manager mgr = new Manager(); engine = mgr.getenginebyname("javascript"); String sayhello = "println('hello World')"; // Throws ScriptException engine.eval(sayhello); 20

Sekunde Wenn noch Zeit ist 21 Gebunden im Kontext (1) Interface ScriptContext Verbindet und ausführende Applikation Hat Reader und Writer für Ein-/Ausgabe Hat ein oder mehrere Bindings Interface Bindings Subtyp von Map<String, Object> Für Werteaustausch von und Applikation Scope ordnet die Bindings eines ScriptContext Global Scope - Sichtbar in allen Engines Engine Scope - Sichtbar in einer bestimmten Engine Instanz Suche nach Werten vom kleinsten Scope aufwärts 22

Gebunden im Kontext (2) Manager Bindings Global Scope ScriptContext Bindings Global Scope Bindings Engine Scope Script KEY hello VALUE world foo 42...... 23 Kann man machen, muss man aber nicht Manche Features von sind optional Wenn vorhanden, implementiert zusätzliche Interfaces Interface Compilable Skripte sind mehrfach ausführbar ohne Neucompilierung Verwendung eines Abstract Syntax Tree (AST) oder Java Byte Code Instanz wird umgewandelt in CompiledScript Objekt Interface Invocable Einzelne Methoden eines Skripts sind gezielt ausführbar Methoden eines Skript können Java Interfaces implementieren 24

Demo Demo Confluence Wiki mit Scriptix Plugin 25 Gliederung Einleitung Einsatzszenarien Java Scripting API Zusammenfassung 26

If you remember one thing Every sufficiently large Java program, anything beyond medium-sized, needs a scripting engine, whether the authors realize it or not. (Steve Yegge, Stevey s Blog Rants: The Universal Design Pattern, 2008) 27 Links Java Scripting Programmer s Guide http://java.sun.com/javase/6/docs/technotes/guides/ scripting/programmer_guide/index.html The scripting project http://scripting.dev.java.net Confluence - Enterprise Wiki Software http://atlassian.com/software/confluence Scriptix - Confluence Extensions http://confluence.atlassian.com/display/confext/scriptix 28

Vielen Dank für Ihre Aufmerksamkeit! Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim Version: 1.0 www.oio.de info@oio.de??? Orientation in Objects GmbH Weinheimer Str. 68 68309 Mannheim? Fragen?? Version: 1.0 www.oio.de info@oio.de

Mehr von OIO zum Thema... Schulung: JavaScript http://www.oio.de/seminar/web-design/seminar-training-javascript-schulung.htm Schulung: Einführung in Groovy http://www.oio.de/kurs-java-training-groovy-schulung.htm Artikel: Einführung in Groovy http://www.oio.de/public/java/groovy/groovy-einfuehrung.htm Beratung durch OIO zum Einsatz von Groovy und Grails http://www.oio.de/beratung-consulting/open-source-software/javaframeworks/groovy-grails-consulting.htm 31