Next Generation Javaalt.java-forum-stuttgart.de/jfs/2012/folien/A1Ersatzvortrag.pdf · Next...

Preview:

Citation preview

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

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

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

Disclaimer

Next Generation JVM Languages 2 |

Java

Übersicht & Entwicklung JVM Sprachen

Next Generation JVM Languages 3 |

Inzwischen über 50 verschiedene Sprachen auf der JVM…

[...] 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 |

Übersicht & Entwicklung JVM Sprachen

Next Generation JVM Languages 5 |

JVM Sprachen im Überblick (Historie)

Next Generation JVM Languages 6 |

Next Generation JVM Languages 7 |

Beginning Buzz-Word Bingoing….

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

Von Lambdas und „1. Klasse“-Rechnen

Next Generation JVM Languages 8 |

Next Generation JVM Languages 9 |

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

Scala im Portrait

Next Generation JVM Languages 10 |

l

Scala im Portrait

Next Generation JVM Languages 11 |

l

l

Traits & Mixins

trait Similarity {

def isSimilar(x: Any): Boolean

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

}

Next Generation JVM Languages 12 |

Extension Methods

l

l

Next Generation JVM Languages 13 |

Scala & Ko-/Kontravarianz

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

TL;DR Too long; didn‘t read

Scala im Portrait

Next Generation JVM Languages 15 |

l

l

l

Next Generation JVM Languages 16 |

Pattern Matching = Instanceof++

Next Generation JVM Languages 17 |

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))

}

}

Erfahrungen

l–

l–

l–

l

Next Generation JVM Languages 19 |

JVM Sprachen im Überblick (Features)

Next Generation JVM Languages 20 |

Scala Summary

l

l

l

l

Next Generation JVM Languages 21 |

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

Fantom

Fantom : Portabilität

l

l

Next Generation JVM Languages 23 |

„one portable system, graphics, and widget library

that just works everywhere”

Fantom im Portrait

l

l

l

Next Generation JVM Languages 24 |

Fantom : Quadratur der Kreise

l

l

l

obj.methode()

obj->methode()

l

l

Next Generation JVM Languages 25 |

Fantom : Multi-Threading

Next Generation JVM Languages 26 |

Fantom : Elegante APIs und Sprache

Next Generation JVM Languages 27 |

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")

}

}

Fantom: Summary

l–

l

l–

Next Generation JVM Languages 29 |

JVM Sprachen im Überblick (Features)

Next Generation JVM Languages 30 |

Next Generation JVM Languages 31 |

http://bit.ly/LKM5YG

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.”

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);

}

}

}

…bisschen Spannendes hat Ceylon aber schon…

l

l

l

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

Nullables

Next Generation JVM Languages 35 |

Von Typen mit und ohne Charakter

Next Generation JVM Languages 36 |

Ceylon: Summary

l

l

Next Generation JVM Languages 37 |

JVM Sprachen im Überblick (Features)

Next Generation JVM Languages 38 |

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

Kotlin im Portrait

l

Next Generation JVM Languages 40 |

“General-purpose language intended for industrial use”

Kotlin = Java++ bzw. Skala--

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.”

Next Generation JVM Languages 42 |

Kotlin Sprach-Features

l

l

l

l

l

l

l

l

l

Next Generation JVM Languages 43 |

Kotlin: Online Demo

Next Generation JVM Languages 44 |

Kotlin Summary:

l

l

l

l

l

l

Next Generation JVM Languages 45 |

JVM Sprachen im Überblick (Features)

Next Generation JVM Languages 46 |

Resumee

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

JVM Sprachen im Überblick (Features)

Next Generation JVM Languages 48 |

JVM Sprachen im Überblick (Projekt)

Next Generation JVM Languages 49 |

Next Generation JVM Languages 50 |

Resumée

Resumée

l

l–

Next Generation JVM Languages 51 |

Next Generation JVM Languages 52 | Autor: woodleywonderworks

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

Weiterführende Information

Benjamin.Schmid@exxcellent.de

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

Recommended