52
Next Generation Java Ceylon, Kotlin, Scala & Fantom im Überblick Autor: dogmadic : http://www.sxc.hu/photo/436457 http://www.sxc.hu/photo/36128

Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Next Generation Java Ceylon, Kotlin, Scala & Fantom im Überblick

Autor: dogmadic : http://www.sxc.hu/photo/436457

http://www.sxc.hu/photo/36128

Page 2: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Disclaimer

Next Generation JVM Languages 2 |

Java

Page 3: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Übersicht & Entwicklung JVM Sprachen

Next Generation JVM Languages 3 |

Inzwischen über 50 verschiedene Sprachen auf der JVM…

Page 4: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

[...] programming by larger groups of people or by smaller groups over

longer time periods [...] result in large, and hence complicated, programs

[...] place emphasis on partitioning work into modules with precisely-

specified interactions.

http://en.wikipedia.org/wiki/Programming_in_the_large_and_programming_in_the_small

sprachen für den Unternehmenseinsatz

Next Generation JVM Languages 4 |

Page 5: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Übersicht & Entwicklung JVM Sprachen

Next Generation JVM Languages 5 |

Page 6: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

JVM Sprachen im Überblick (Historie)

Next Generation JVM Languages 6 |

Page 7: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Next Generation JVM Languages 7 |

Beginning Buzz-Word Bingoing….

http://www.sxc.hu/photo/377913

Page 8: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Von Lambdas und „1. Klasse“-Rechnen

Next Generation JVM Languages 8 |

Page 9: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Next Generation JVM Languages 9 |

http://www.flickr.com/photos/tonino62/2295302323/ .

Page 10: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Scala im Portrait

Next Generation JVM Languages 10 |

l

Page 11: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Scala im Portrait

Next Generation JVM Languages 11 |

l

l

Page 12: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Traits & Mixins

trait Similarity {

def isSimilar(x: Any): Boolean

def isNotSimilar(x: Any): Boolean = !isSimilar(x)

}

Next Generation JVM Languages 12 |

Page 13: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Extension Methods

l

l

Next Generation JVM Languages 13 |

Page 14: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Scala & Ko-/Kontravarianz

Next Generation JVM Languages 14 | http://www.sxc.hu/photo/330223

TL;DR Too long; didn‘t read

Page 15: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Scala im Portrait

Next Generation JVM Languages 15 |

l

l

l

Page 16: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Next Generation JVM Languages 16 |

Page 17: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Pattern Matching = Instanceof++

Next Generation JVM Languages 17 |

Page 18: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Scala Hello World

Next Generation JVM Languages 18 |

package examples

/** Quick sort, functional style */

object sort1 {

def sort(a: List[Int]): List[Int] = {

if (a.length < 2)

a

else {

val pivot = a(a.length / 2)

sort(a.filter(_ < pivot)) :::

a.filter(_ == pivot) :::

sort(a.filter(_ > pivot))

}

}

def main(args: Array[String]) {

val xs = List(6, 2, 8, 5, 1)

println(xs)

println(sort(xs))

}

}

Page 19: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Erfahrungen

l–

l–

l–

l

Next Generation JVM Languages 19 |

Page 20: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

JVM Sprachen im Überblick (Features)

Next Generation JVM Languages 20 |

Page 21: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Scala Summary

l

l

l

l

Next Generation JVM Languages 21 |

Page 22: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Next Generation JVM Languages 22 | http://www.sxc.hu/photo/366158

Fantom

Page 23: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Fantom : Portabilität

l

l

Next Generation JVM Languages 23 |

„one portable system, graphics, and widget library

that just works everywhere”

Page 24: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Fantom im Portrait

l

l

l

Next Generation JVM Languages 24 |

Page 25: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Fantom : Quadratur der Kreise

l

l

l

obj.methode()

obj->methode()

l

l

Next Generation JVM Languages 25 |

Page 26: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Fantom : Multi-Threading

Next Generation JVM Languages 26 |

Page 27: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Fantom : Elegante APIs und Sprache

Next Generation JVM Languages 27 |

Page 28: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Fantom Hello World (Webapp)

Next Generation JVM Languages 28 |

using util

using web

using wisp

class WebHello : AbstractMain

{

@Opt { help = "http port" }

Int port := 8080

override Int run()

{

wisp := WispService

{

it.port = this.port

it.root = HelloMod()

}

return runServices([wisp])

}

}

const class HelloMod : WebMod

{

override Void onGet()

{

res.headers["Content-Type"] =

"text/plain; charset=utf-8"

res.out.print("hello world #4")

}

}

Page 29: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Fantom: Summary

l–

l

l–

Next Generation JVM Languages 29 |

Page 30: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

JVM Sprachen im Überblick (Features)

Next Generation JVM Languages 30 |

Page 31: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Next Generation JVM Languages 31 |

http://bit.ly/LKM5YG

Page 32: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Ceylon im Portrait

Next Generation JVM Languages 32 |

„Ceylon’s goal is to design the language that Java would have been

if its designers had been able to predict the future.”

Page 33: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Ceylon: Code Example

Next Generation JVM Languages 33 |

doc "A component"

shared abstract class Component() {

OpenList<Callable<Void,Event>> observers =

OpenList<Callable<Void,Event>>();

shared void addObserver(void observe(Event event)) {

observers.append(observe);

}

shared void fire(Event event) {

for (void observe(Event event) in observers) {

observe(event);

}

}

}

Page 34: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

…bisschen Spannendes hat Ceylon aber schon…

l

l

l

Next Generation JVM Languages 34 | http://www.sxc.hu/photo/732192

Page 35: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Nullables

Next Generation JVM Languages 35 |

Page 36: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Von Typen mit und ohne Charakter

Next Generation JVM Languages 36 |

Page 37: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Ceylon: Summary

l

l

Next Generation JVM Languages 37 |

Page 38: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

JVM Sprachen im Überblick (Features)

Next Generation JVM Languages 38 |

Page 39: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Next Generation JVM Languages 39 | http://www.sxc.hu/photo/1339625

Page 40: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Kotlin im Portrait

l

Next Generation JVM Languages 40 |

“General-purpose language intended for industrial use”

Kotlin = Java++ bzw. Skala--

Page 41: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Kotlin Motivation & Hintergrund

l

Next Generation JVM Languages 41 |

“Although we’ve developed support for several JVM-targeted programming languages,

we are still writing all of our IntelliJ-based IDEs almost entirely in Java.

We want to become more productive by switching to a more expressive language.”

Page 42: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Next Generation JVM Languages 42 |

Page 43: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Kotlin Sprach-Features

l

l

l

l

l

l

l

l

l

Next Generation JVM Languages 43 |

Page 44: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Kotlin: Online Demo

Next Generation JVM Languages 44 |

Page 45: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Kotlin Summary:

l

l

l

l

l

l

Next Generation JVM Languages 45 |

Page 46: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

JVM Sprachen im Überblick (Features)

Next Generation JVM Languages 46 |

Page 47: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Resumee

Next Generation JVM Languages 47 | http://www.sxc.hu/photo/1022369

Page 48: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

JVM Sprachen im Überblick (Features)

Next Generation JVM Languages 48 |

Page 49: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

JVM Sprachen im Überblick (Projekt)

Next Generation JVM Languages 49 |

Page 50: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Next Generation JVM Languages 50 |

Resumée

Page 51: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Resumée

l

l–

Next Generation JVM Languages 51 |

Page 52: Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next Generation JVM Languages Author: Benjamin Schmid Subject: Übersicht über das aktuelle

Next Generation JVM Languages 52 | Autor: woodleywonderworks

http://www.flickr.com/photos/wwworks/4759535950/

Weiterführende Information

[email protected]

Scala: http://www.scala-lang.org/

Ceylon: http://ceylon-lang.org/

Kotlin: http://blog.jetbrains.com/kotlin/

Kotlin Demo: http://kotlin-demo.jetbrains.com/

Fantom vs. Kotlin http://fantom.org/sidewalk/topic/1581

Gosu: http://gosu-lang.org/

Search for a better Java:

http://blog.joda.org/2011/07/kotlin-and-search-for-

better-java_9066.html