alles außer java! jvm-sprachen sagen „happy birthday“ · 2012. 9. 26. · beone stuttgart gmbh...

20
JUGS 20 Jahre Java Alles außer Java! JVM-Sprachen sagen „Happy Birthday“ Jan-Paul Buchwald BeOne Stuttgart GmbH

Upload: others

Post on 17-Aug-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Alles außer Java! JVM-Sprachen sagen „Happy Birthday“ · 2012. 9. 26. · BeOne Stuttgart GmbH . 2 15 Jahre JVM Sprachen 1992: Oak 1998: 1992 2002 2012 1996: Java 1.0 1997: Java

JUGS 20 Jahre Java

Alles außer Java!

JVM-Sprachen sagen „Happy Birthday“

Jan-Paul Buchwald

BeOne Stuttgart GmbH

Page 2: Alles außer Java! JVM-Sprachen sagen „Happy Birthday“ · 2012. 9. 26. · BeOne Stuttgart GmbH . 2 15 Jahre JVM Sprachen 1992: Oak 1998: 1992 2002 2012 1996: Java 1.0 1997: Java

2

15 Jahre JVM Sprachen

1992: Oak

1992 2012 2002

1996: Java 1.0

1997: Java 1.1

1998: Java 1.2

2000: Java 1.3

2002: Java 1.4

2004: Java 5

2006: Java 6

2011: Java 7

1997: Jython

1997: Rhino

2001: JRuby

2003: Groovy 2003:

Scala 2007: Clojure

Page 3: Alles außer Java! JVM-Sprachen sagen „Happy Birthday“ · 2012. 9. 26. · BeOne Stuttgart GmbH . 2 15 Jahre JVM Sprachen 1992: Oak 1998: 1992 2002 2012 1996: Java 1.0 1997: Java

3

Jython: Steckbrief

• Entwickler: Jim Hugunin (Microsoft, Google)

• Aktuelle Version: 2.5.3

• Verbeitung:

• Scripting Sprache im WebSphere Application Server

• jHepWork (Framework für wissenschaftliche Berechnungen)

• Website: http://www.jython.org

1992: Oak

1996: Java 1.0

1997: Java 1.1

1998: Java 1.2

2000: Java 1.3

2002: Java 1.4

2004: Java 5

2006: Java 6

2011: Java 7

1997: Jython

1997: Rhino

2001: JRuby

2003: Groovy

2003: Scala

2007: Clojure

Page 4: Alles außer Java! JVM-Sprachen sagen „Happy Birthday“ · 2012. 9. 26. · BeOne Stuttgart GmbH . 2 15 Jahre JVM Sprachen 1992: Oak 1998: 1992 2002 2012 1996: Java 1.0 1997: Java

4

Jython: Sprache

• Implementierung der Python Programmiersprache in Java

• inkl. der meisten Standard Python Module

• Import von Java Klassen und Bibliotheken

• Bytecode Kompilierung dynamisch als Skriptsprache oder statisch

Page 5: Alles außer Java! JVM-Sprachen sagen „Happy Birthday“ · 2012. 9. 26. · BeOne Stuttgart GmbH . 2 15 Jahre JVM Sprachen 1992: Oak 1998: 1992 2002 2012 1996: Java 1.0 1997: Java

5

Jython: Geburtstagsgruß from javax.swing import Jframe, JButton

def congrat(event):

event.source.text="Happy Birthday Java!"

frame = JFrame("BeOne Stuttgart congrats Java")

button = JButton("20 Years...", actionPerformed = congrat)

frame.add(button)

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

frame.setSize(350, 200)

frame.show()

Page 6: Alles außer Java! JVM-Sprachen sagen „Happy Birthday“ · 2012. 9. 26. · BeOne Stuttgart GmbH . 2 15 Jahre JVM Sprachen 1992: Oak 1998: 1992 2002 2012 1996: Java 1.0 1997: Java

6

Rhino: Steckbrief

• Entwickler: Netscape (Vorarbeit zu Java Netscape Navigator)

• Aktuelle Version: 1.7

• Verbreitung:

• Enthalten in Sun/Oracle Java seit Version 6 (2006) als Standard JavaScript Engine

• Website: https://developer.mozilla.org/en-US/docs/Rhino

1992: Oak

1996: Java 1.0

1997: Java 1.1

1998: Java 1.2

2000: Java 1.3

2002: Java 1.4

2004: Java 5

2006: Java 6

2011: Java 7

1997: Jython

1997: Rhino

2001: JRuby

2003: Groovy

2003: Scala

2007: Clojure

Page 7: Alles außer Java! JVM-Sprachen sagen „Happy Birthday“ · 2012. 9. 26. · BeOne Stuttgart GmbH . 2 15 Jahre JVM Sprachen 1992: Oak 1998: 1992 2002 2012 1996: Java 1.0 1997: Java

7

Rhino: Sprache

• Open Source JavaScript Engine

• Implementiert JavaScript 1.7 vollständig

• Server-seitige Verwendung

• Kann JavaScript in ByteCode kompilieren oder zur Laufzeit interpretieren

• Eignet sich als

• eingebettete Script-Sprache in Java Programmen

• eigenständige Programmiersprache

Page 8: Alles außer Java! JVM-Sprachen sagen „Happy Birthday“ · 2012. 9. 26. · BeOne Stuttgart GmbH . 2 15 Jahre JVM Sprachen 1992: Oak 1998: 1992 2002 2012 1996: Java 1.0 1997: Java

8

Rhino: Geburtstagsgruß

Page 9: Alles außer Java! JVM-Sprachen sagen „Happy Birthday“ · 2012. 9. 26. · BeOne Stuttgart GmbH . 2 15 Jahre JVM Sprachen 1992: Oak 1998: 1992 2002 2012 1996: Java 1.0 1997: Java

9

JRuby: Steckbrief

• Entwickler: Jan Arne Petersen

• Aktuelle Version: 1.6.7.2

• Verbreitung:

• Netbeans Ruby Pack (IDE Entwicklung mit Ruby und JRuby)

• Kommerzielle Hosting Services (z.B. Engine Yard)

• Website: http://www.jruby.org

1992: Oak

1996: Java 1.0

1997: Java 1.1

1998: Java 1.2

2000: Java 1.3

2002: Java 1.4

2004: Java 5

2006: Java 6

2011: Java 7

1997: Jython

1997: Rhino

2001: JRuby

2003: Groovy

2003: Scala

2007: Clojure

Page 10: Alles außer Java! JVM-Sprachen sagen „Happy Birthday“ · 2012. 9. 26. · BeOne Stuttgart GmbH . 2 15 Jahre JVM Sprachen 1992: Oak 1998: 1992 2002 2012 1996: Java 1.0 1997: Java

10

JRuby: Sprache

• Implementierung von Ruby inkl. Ökosystem in Java

• Frameworks wie Ruby on Rails

• Packaging Manager RubyGems

• Interaktion zwischen Java und Ruby in beide Richtungen möglich

• Interpretation oder Just-in-Time oder Ahead-of-Time Kompilierung

Page 11: Alles außer Java! JVM-Sprachen sagen „Happy Birthday“ · 2012. 9. 26. · BeOne Stuttgart GmbH . 2 15 Jahre JVM Sprachen 1992: Oak 1998: 1992 2002 2012 1996: Java 1.0 1997: Java

11

JRuby: Geburtstagsgruß

Page 12: Alles außer Java! JVM-Sprachen sagen „Happy Birthday“ · 2012. 9. 26. · BeOne Stuttgart GmbH . 2 15 Jahre JVM Sprachen 1992: Oak 1998: 1992 2002 2012 1996: Java 1.0 1997: Java

12

Groovy: Steckbrief

• Entwickler: James Strachan

• Aktuelle Version: 2.0.2

• Verbreitung:

• Webanwendungen mit Grails

• Buildsystem Gradle

• Testingframework Spock

• Website: http://groovy.codehaus.org

1992: Oak

1996: Java 1.0

1997: Java 1.1

1998: Java 1.2

2000: Java 1.3

2002: Java 1.4

2004: Java 5

2006: Java 6

2011: Java 7

1997: Jython

1997: Rhino

2001: JRuby

2003: Groovy

2003: Scala

2007: Clojure

2007: Groovy 1.0

Page 13: Alles außer Java! JVM-Sprachen sagen „Happy Birthday“ · 2012. 9. 26. · BeOne Stuttgart GmbH . 2 15 Jahre JVM Sprachen 1992: Oak 1998: 1992 2002 2012 1996: Java 1.0 1997: Java

13

Groovy: Sprache

• Weiterentwicklung von Java

• Nahtlose Integration mit Java in beide Richtungen → erzeugt kompatiblen Bytecode

• General-Purpose oder Skriptsprache

• Dynamische oder statische Typisierung

• Seit v2.0 auch statische Kompilierung

Page 14: Alles außer Java! JVM-Sprachen sagen „Happy Birthday“ · 2012. 9. 26. · BeOne Stuttgart GmbH . 2 15 Jahre JVM Sprachen 1992: Oak 1998: 1992 2002 2012 1996: Java 1.0 1997: Java

14

Groovy: Geburtstagsgruß import groovy.swing.SwingBuilder

import static javax.swing.WindowConstants.*

new SwingBuilder().edt {

frame(title: "BeOne Stuttgart congrats Java",

defaultCloseOperation: DISPOSE_ON_CLOSE,

pack: true, visible: true) {

gridLayout cols: 1, rows: 2

button("20 Years...", actionPerformed: {

output.text = 'Happy Birthday Java!'

})

textField id: "output", columns: 20, editable: false

}

}

Page 15: Alles außer Java! JVM-Sprachen sagen „Happy Birthday“ · 2012. 9. 26. · BeOne Stuttgart GmbH . 2 15 Jahre JVM Sprachen 1992: Oak 1998: 1992 2002 2012 1996: Java 1.0 1997: Java

15

Scala: Steckbrief

• Entwickler: Martin Odersky (EPFL, Typesafe)

• Aktuelle Version: 2.9.2

• Verbreitung:

• General-Purpose-Sprache: polyglotte Projekte oder als vollständiger Ersatz für Java

• Website: http://www.scala-lang.org

1992: Oak

1996: Java 1.0

1997: Java 1.1

1998: Java 1.2

2000: Java 1.3

2002: Java 1.4

2004: Java 5

2006: Java 6

2011: Java 7

1997: Jython

1997: Rhino

2001: JRuby

2003: Groovy

2003: Scala

2007: Clojure

Page 16: Alles außer Java! JVM-Sprachen sagen „Happy Birthday“ · 2012. 9. 26. · BeOne Stuttgart GmbH . 2 15 Jahre JVM Sprachen 1992: Oak 1998: 1992 2002 2012 1996: Java 1.0 1997: Java

16

Scala: Sprache

• Neu konzipierte Sprache, Ziele (u.a.):

• Ausdrucksstärke, Flexibilität, mächtiges Typensystem (statisch getypt)

• Erweiterbarkeit: Einfaches Schreiben von DSLs

• “Sweet Spot” funktionaler und imperativer Programmierung

• Integration mit Java, Austausch von Klassen und Bibliotheken in beide Richtungen

Page 17: Alles außer Java! JVM-Sprachen sagen „Happy Birthday“ · 2012. 9. 26. · BeOne Stuttgart GmbH . 2 15 Jahre JVM Sprachen 1992: Oak 1998: 1992 2002 2012 1996: Java 1.0 1997: Java

17

Scala: Geburtstagsgruß

object HappyBirthday {

def printGreeting(greeting : String)(name : String) =

println(greeting + ", " + name + "!")

def main(args : Array[String]) {

val greeting = "Happy birthday"

val name = "Java"

val birthdayGreeting = printGreeting(greeting)_

birthdayGreeting(name)

}

}

Mehrere Parameter- gruppen möglich

Typinferenz; Standard: Konstanten

Funktionen sind “first-class citizens”

Currying: Erzeugen einer neuen Funktion aus einer bestehenden

Page 18: Alles außer Java! JVM-Sprachen sagen „Happy Birthday“ · 2012. 9. 26. · BeOne Stuttgart GmbH . 2 15 Jahre JVM Sprachen 1992: Oak 1998: 1992 2002 2012 1996: Java 1.0 1997: Java

18

Clojure: Steckbrief

• Entwickler: Rich Hickey

• Aktuelle Version: 1.4.0

• Verbreitung:

• Zunehmend verwendet in Java-Projekten (primär Backend, Datenhandling und -analyse)

• Website: http://www.clojure.org

1992: Oak

1996: Java 1.0

1997: Java 1.1

1998: Java 1.2

2000: Java 1.3

2002: Java 1.4

2004: Java 5

2006: Java 6

2011: Java 7

1997: Jython

1997: Rhino

2001: JRuby

2003: Groovy

2003: Scala

2007: Clojure

Page 19: Alles außer Java! JVM-Sprachen sagen „Happy Birthday“ · 2012. 9. 26. · BeOne Stuttgart GmbH . 2 15 Jahre JVM Sprachen 1992: Oak 1998: 1992 2002 2012 1996: Java 1.0 1997: Java

19

Clojure: Sprache

• JVM basierter Dialekt der funktionalen Programmiersprache Lisp

• Syntax im wesentlichen Datenstrukturen

• Listen

• Vektoren

• Mengen

• Assoziative Arrays

• Eigene Sprachkonstrukte für Nebenläufigkeit / Parallelisierung

• Interaktive Entwicklung oder statische Kompilierung in Java Bytecode

Page 20: Alles außer Java! JVM-Sprachen sagen „Happy Birthday“ · 2012. 9. 26. · BeOne Stuttgart GmbH . 2 15 Jahre JVM Sprachen 1992: Oak 1998: 1992 2002 2012 1996: Java 1.0 1997: Java

20

Clojure: Geburtstagsgruß

(import '(javax.swing JFrame JLabel))

(defn congrat [n]

(let [frame (JFrame. (str "BeOne Stuttgart congrats " n))

congratLabel (JLabel. (str "Happy Birthday " n "!"))]

(doto frame

(.add congratLabel)

(.setSize 350 100)

(.setVisible true))))

(congrat "Java")