View
1
Download
0
Category
Preview:
Citation preview
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 |
Recommended