Next Generation Java - exxcellent.de · Next Generation Java Ceylon, Kotlin, Scala & Fantom im...

33
Next Generation Java Ceylon, Kotlin, Scala & Fantom im Überblick http://www.flickr.com/photos/38235150@N00/1987461591

Transcript of Next Generation Java - exxcellent.de · Next Generation Java Ceylon, Kotlin, Scala & Fantom im...

Page 1: Next Generation Java - exxcellent.de · Next Generation Java Ceylon, Kotlin, Scala & Fantom im Überblick N00/1987461591

Next Generation Java

Ceylon, Kotlin, Scala & Fantom im Überblick

http://www.flickr.com/photos/38235150@N00/1987461591

Page 2: Next Generation Java - exxcellent.de · Next Generation Java Ceylon, Kotlin, Scala & Fantom im Überblick N00/1987461591

Agenda

Next Generation JVM Languages 2 |

Page 3: Next Generation Java - exxcellent.de · Next Generation Java Ceylon, Kotlin, Scala & Fantom im Überblick N00/1987461591

Übersicht & Entwicklung JVM Sprachen

Next Generation JVM Languages 3 |

Inzwischen über 50 verschiedene Sprachen auf der JVM…

Page 4: Next Generation Java - exxcellent.de · Next Generation Java Ceylon, Kotlin, Scala & Fantom im Überblick N00/1987461591

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

Programmiersprachen für Unternehmenseinsatz

Next Generation JVM Languages 4 |

Page 5: Next Generation Java - exxcellent.de · Next Generation Java Ceylon, Kotlin, Scala & Fantom im Überblick N00/1987461591

Übersicht & Entwicklung JVM Sprachen

Next Generation JVM Languages 5 |

Page 6: Next Generation Java - exxcellent.de · Next Generation Java Ceylon, Kotlin, Scala & Fantom im Überblick N00/1987461591

JVM Sprachen im Überblick (Projekt)

Next Generation JVM Languages 6 |

Page 7: Next Generation Java - exxcellent.de · Next Generation Java Ceylon, Kotlin, Scala & Fantom im Überblick N00/1987461591

JVM Sprachen im Überblick (Features)

Next Generation JVM Languages 7 |

Page 8: Next Generation Java - exxcellent.de · Next Generation Java Ceylon, Kotlin, Scala & Fantom im Überblick N00/1987461591

Next Generation JVM Languages 8 |

Scala

Page 9: Next Generation Java - exxcellent.de · Next Generation Java Ceylon, Kotlin, Scala & Fantom im Überblick N00/1987461591

Scala im Portrait

Next Generation JVM Languages 9 |

l

l

l

Page 10: Next Generation Java - exxcellent.de · Next Generation Java Ceylon, Kotlin, Scala & Fantom im Überblick N00/1987461591

Scala Hello World

Next Generation JVM Languages 10 |

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 11: Next Generation Java - exxcellent.de · Next Generation Java Ceylon, Kotlin, Scala & Fantom im Überblick N00/1987461591

Scala Summary

l

l

l

l

l

l

Next Generation JVM Languages 11 |

Page 12: Next Generation Java - exxcellent.de · Next Generation Java Ceylon, Kotlin, Scala & Fantom im Überblick N00/1987461591

Fantom

Next Generation JVM Languages 12 |

Page 13: Next Generation Java - exxcellent.de · Next Generation Java Ceylon, Kotlin, Scala & Fantom im Überblick N00/1987461591

Fantom im Portrait

l

l

l

l

Next Generation JVM Languages 13 |

Page 14: Next Generation Java - exxcellent.de · Next Generation Java Ceylon, Kotlin, Scala & Fantom im Überblick N00/1987461591

Fantom : Portabilität

l

l

Next Generation JVM Languages 14 |

„one portable system, graphics, and widget library

that just works everywhere”

Page 15: Next Generation Java - exxcellent.de · Next Generation Java Ceylon, Kotlin, Scala & Fantom im Überblick N00/1987461591

Fantom : Elegante APIs und Sprache

l

l

Next Generation JVM Languages 15 |

Page 16: Next Generation Java - exxcellent.de · Next Generation Java Ceylon, Kotlin, Scala & Fantom im Überblick N00/1987461591

Fantom : Quadratur der Kreise

l

l

l

l

l

l

Next Generation JVM Languages 16 |

Page 17: Next Generation Java - exxcellent.de · Next Generation Java Ceylon, Kotlin, Scala & Fantom im Überblick N00/1987461591

Fantom : Multi-Threading

l

Next Generation JVM Languages 17 |

Page 18: Next Generation Java - exxcellent.de · Next Generation Java Ceylon, Kotlin, Scala & Fantom im Überblick N00/1987461591

Fantom Hello World (Webapp)

Next Generation JVM Languages 18 |

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 19: Next Generation Java - exxcellent.de · Next Generation Java Ceylon, Kotlin, Scala & Fantom im Überblick N00/1987461591

Fantom: Summary

l

l

l

Next Generation JVM Languages 19 |

Page 20: Next Generation Java - exxcellent.de · Next Generation Java Ceylon, Kotlin, Scala & Fantom im Überblick N00/1987461591

Ceylon

Next Generation JVM Languages 20 |

Page 21: Next Generation Java - exxcellent.de · Next Generation Java Ceylon, Kotlin, Scala & Fantom im Überblick N00/1987461591

Ceylon im Portrait

Next Generation JVM Languages 21 |

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

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

Page 22: Next Generation Java - exxcellent.de · Next Generation Java Ceylon, Kotlin, Scala & Fantom im Überblick N00/1987461591

Ceylon: Code Example

Next Generation JVM Languages 22 |

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 23: Next Generation Java - exxcellent.de · Next Generation Java Ceylon, Kotlin, Scala & Fantom im Überblick N00/1987461591

Ceylon: Summary

l

l

Next Generation JVM Languages 23 |

Page 24: Next Generation Java - exxcellent.de · Next Generation Java Ceylon, Kotlin, Scala & Fantom im Überblick N00/1987461591

Kotlin

Next Generation JVM Languages 24 |

Page 25: Next Generation Java - exxcellent.de · Next Generation Java Ceylon, Kotlin, Scala & Fantom im Überblick N00/1987461591

Kotlin im Portrait

l

Next Generation JVM Languages 25 |

“General-purpose language intended for industrial use”

Kotlin = Java++ bzw. Skala--

Page 26: Next Generation Java - exxcellent.de · Next Generation Java Ceylon, Kotlin, Scala & Fantom im Überblick N00/1987461591

Kotlin Motivation & Hintergrund

l

Next Generation JVM Languages 26 |

“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 27: Next Generation Java - exxcellent.de · Next Generation Java Ceylon, Kotlin, Scala & Fantom im Überblick N00/1987461591

Kotlin Sprach-Features

l

l

l

l

l

l

l

l

l

l

Next Generation JVM Languages 27 |

Page 28: Next Generation Java - exxcellent.de · Next Generation Java Ceylon, Kotlin, Scala & Fantom im Überblick N00/1987461591

Next Generation JVM Languages 28 |

Page 29: Next Generation Java - exxcellent.de · Next Generation Java Ceylon, Kotlin, Scala & Fantom im Überblick N00/1987461591

Kotlin: Online Demo

Next Generation JVM Languages 29 |

Page 30: Next Generation Java - exxcellent.de · Next Generation Java Ceylon, Kotlin, Scala & Fantom im Überblick N00/1987461591

Kotlin Summary:

l

l

l

l

l

l

Next Generation JVM Languages 30 |

Page 31: Next Generation Java - exxcellent.de · Next Generation Java Ceylon, Kotlin, Scala & Fantom im Überblick N00/1987461591

Resumee

Next Generation JVM Languages 31 |

Page 32: Next Generation Java - exxcellent.de · Next Generation Java Ceylon, Kotlin, Scala & Fantom im Überblick N00/1987461591

Resume

l

l

l

l

l

l

l

Next Generation JVM Languages 32 |

Page 33: Next Generation Java - exxcellent.de · Next Generation Java Ceylon, Kotlin, Scala & Fantom im Überblick N00/1987461591

Next Generation JVM Languages 33 |