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 Java - eXXcellent solutions€¦ · Next Generation Java Ceylon, ... programming by larger groups of people or by smaller groups over ... Lamda, Kotlin, Gosu, Ceylon,

Embed Size (px)

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

[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