next generation java - exxcellent.de · next generation java ceylon, kotlin, scala & fantom im...

Post on 16-Oct-2020

1 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Next Generation Java

Ceylon, Kotlin, Scala & Fantom im Überblick

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

Agenda

Next Generation JVM Languages 2 |

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

Programmiersprachen für Unternehmenseinsatz

Next Generation JVM Languages 4 |

Übersicht & Entwicklung JVM Sprachen

Next Generation JVM Languages 5 |

JVM Sprachen im Überblick (Projekt)

Next Generation JVM Languages 6 |

JVM Sprachen im Überblick (Features)

Next Generation JVM Languages 7 |

Next Generation JVM Languages 8 |

Scala

Scala im Portrait

Next Generation JVM Languages 9 |

l

l

l

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

}

}

Scala Summary

l

l

l

l

l

l

Next Generation JVM Languages 11 |

Fantom

Next Generation JVM Languages 12 |

Fantom im Portrait

l

l

l

l

Next Generation JVM Languages 13 |

Fantom : Portabilität

l

l

Next Generation JVM Languages 14 |

„one portable system, graphics, and widget library

that just works everywhere”

Fantom : Elegante APIs und Sprache

l

l

Next Generation JVM Languages 15 |

Fantom : Quadratur der Kreise

l

l

l

l

l

l

Next Generation JVM Languages 16 |

Fantom : Multi-Threading

l

Next Generation JVM Languages 17 |

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

}

}

Fantom: Summary

l

l

l

Next Generation JVM Languages 19 |

Ceylon

Next Generation JVM Languages 20 |

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

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

}

}

}

Ceylon: Summary

l

l

Next Generation JVM Languages 23 |

Kotlin

Next Generation JVM Languages 24 |

Kotlin im Portrait

l

Next Generation JVM Languages 25 |

“General-purpose language intended for industrial use”

Kotlin = Java++ bzw. Skala--

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

Kotlin Sprach-Features

l

l

l

l

l

l

l

l

l

l

Next Generation JVM Languages 27 |

Next Generation JVM Languages 28 |

Kotlin: Online Demo

Next Generation JVM Languages 29 |

Kotlin Summary:

l

l

l

l

l

l

Next Generation JVM Languages 30 |

Resumee

Next Generation JVM Languages 31 |

Resume

l

l

l

l

l

l

l

Next Generation JVM Languages 32 |

Next Generation JVM Languages 33 |

top related