SlideShare une entreprise Scribd logo
1  sur  99
Next Generation Java
Ceylon, Kotlin, Scala & Fantom im Überblick

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

Java

2 | Next Generation JVM Languages
Überblick

3.
3 | Next Generation JVM Languages
Überblick

3.
4 | Next Generation JVM Languages
Ist Java das neue Cobol?

–
–
–
–
–

5 | Next Generation JVM Languages

http://www.sxc.hu/photo/1389360
Ein BLick auf die .NET Plattform

l
l

l

–
–
–
–
–
–
–

6 | Next Generation JVM Languages
The JVM at a glance

l
l

l

–
–
–
–
–
–
–

7 | Next Generation JVM Languages
Das Java- Universum
8 | Next Generation JVM Languages
Überblick

3.
9 | Next Generation JVM Languages
Warum neue JVM Sprachen?

10 | Next Generation JVM Languages
Beginning Buzz-Word Bingo….

11 | Next Generation JVM Languages

http://www.sxc.hu/photo/377913
Warum neue JVM Sprachen?

12 | Next Generation JVM Languages
Von Lambdas und „1. Klasse“-Rechnen

13 | Next Generation JVM Languages
Imperativ vs. Funktional: Beispiel #1 Quicksort
public void quicksort(int array[]) {
quicksort(array, 0, array.length - 1);
}
public void quicksort(int array[], int start, int end){
int i = start;
int k = end;
if (end - start >= 1) {
int pivot = array[start];
while (k > i) {
while (array[i] <= pivot && i <= end && k > i) i++;
while (array[k] > pivot && k >= start && k >= i) k--;
if (k > i) swap(array, i, k);
}
swap(array, start, k);
quicksort(array, start, k - 1);
quicksort(array, k + 1, end);
} else {
return;
}
}
public void swap(int array[], int index1, int index2) {
int temp = array[index1];
array[index1] = array[index2];
array[index2] = temp;
}

14 | Next Generation JVM Languages
Imperativ vs. Funktional: Beispiel #1 Quicksort
public void quicksort(int array[]) {
quicksort(array, 0, array.length - 1);
}
public void quicksort(int array[], int start, int end){
int i = start;
int k = end;
if (end - start >= 1) {
int pivot = array[start];
while (k > i) {
while (array[i] <= pivot && i <= end && k > i) i++;
while (array[k] > pivot && k >= start && k >= i) k--;
if (k > i) swap(array, i, k);
}
swap(array, start, k);
quicksort(array, start, k - 1);
quicksort(array, k + 1, end);
} else {
return;
}
}
public void swap(int array[], int index1, int index2) {
int temp = array[index1];
array[index1] = array[index2];
array[index2] = temp;
}

15 | Next Generation JVM Languages
Imperativ vs. Funktional: Beispiel #2
int sum = 0;
for (int i = 0; i < 150; i++)
{
if (i % 5 != 0)
sum += i;
}

int sum = Enumerable.Range(0, 150).Where(i => i % 5 != 0).Sum();
f1(

16 | Next Generation JVM Languages

f2(

f3(

f4())))
Objektorientierte vs. Funktionale Programmierung

FP
Sammlung von Funktionen
Zustandlos & Unveränderlich
Rekursiv
Auswertung: Lazy
17 | Next Generation JVM Languages

OOP
Sammlung von Objekten
Zustandsbehaftet
Iterativ
Imperativer Ablauf
Warum neue JVM Sprachen?

18 | Next Generation JVM Languages
Dynamic Typing

Parsen und
Auflisten der Daten
19 | Next Generation JVM Languages

Practically Groovy: Building, parsing, and slurping XML
http://www.ibm.com/developerworks/java/library/j-pg05199/
Dynamic Typing
import
import
import
import

org.xml.sax.SAXException;
org.w3c.dom.*;
javax.xml.parsers.*;
java.io.IOException;

public class ParseXml {
public static void main(String[] args) {
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse("src/languages.xml");
//print the "type" attribute
Element langs = doc.getDocumentElement();
System.out.println("type = " + langs.getAttribute("type"));
//print the "language" elements
NodeList list = langs.getElementsByTagName("language");
for(int i = 0 ; i < list.getLength();i++) {
Element language = (Element) list.item(i);
System.out.println(language.getTextContent());
}
}catch(ParserConfigurationException pce) {
pce.printStackTrace();
}catch(SAXException se) {
se.printStackTrace();
}catch(IOException ioe) {
ioe.printStackTrace();
}
}
}
20 | Next Generation JVM Languages

Parsen und
Auflisten der
Daten
Practically Groovy: Building, parsing, and slurping XML
http://www.ibm.com/developerworks/java/library/j-pg05199/
Dynamic Typing

def langs = new XmlParser().parse("languages.xml")
println "type = ${langs.attribute("type")}"
langs.language.each{
println it.text()
}

Parsen und
Auflisten der
Daten
21 | Next Generation JVM Languages

Practically Groovy: Building, parsing, and slurping XML
http://www.ibm.com/developerworks/java/library/j-pg05199/
Warum neue JVM Sprachen?

22 | Next Generation JVM Languages
Schlankere Syntax : Listen befüllen
List<String> languages = new LinkedList<String>();
languages.add("Java");
languages.add("Ruby");
languages.add("Python");
languages.add("Perl");

stuff = []
stuff << "Java", "Ruby", "Python"

23 | Next Generation JVM Languages

Practically Groovy: Building, parsing, and slurping XML
http://www.ibm.com/developerworks/java/library/j-pg05199/
Schlankere Syntax : Getter/Setter
Class Circle
private Coordinate center, float radius;
public void setCenter(Coordinate center){
this.center = center;
}
public Coordinate getCenter(){
return center;
}
public void setRadius(float radius){
this.radius = radius;
}
public Coordinate getRadius(){
return radius;
}
}

class Circle
attr_accessor :center, :radius
end

24 | Next Generation JVM Languages

Practically Groovy: Building, parsing, and slurping XML
http://www.ibm.com/developerworks/java/library/j-pg05199/
Warum neue JVM Sprachen?

25 | Next Generation JVM Languages
Warum neue JVM Sprachen?

26 | Next Generation JVM Languages
java.lang.NullPointerException
at
at
at
at
at
at
at
at
at
at

com.sun.tools.javac.comp.Check.checkCompatibleConcretes(Check.java:1141)
com.sun.tools.javac.comp.Check.checkCompatibleSupertypes(Check.java:1495)
com.sun.tools.javac.comp.Attr.attribClassBody(Attr.java:2451)
com.sun.tools.javac.comp.Attr.attribClass(Attr.java:2406)
com.sun.tools.javac.comp.Attr.attribClass(Attr.java:2355)
com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:444)
com.sun.tools.javac.main.Main.compile(Main.java:592)
com.sun.tools.javac.main.Main.compile(Main.java:544)
com.sun.tools.javac.Main.compile(Main.java:67)
com.sun.tools.javac.Main.main(Main.java:52)

27 | Next Generation JVM Languages
Die Null zügeln

l

l

28 | Next Generation JVM Languages
Warum neue JVM Sprachen?

29 | Next Generation JVM Languages
Domain Specific Languages

l

30 | Next Generation JVM Languages
Warum neue JVM Sprachen?

31 | Next Generation JVM Languages
Warum neue JVM Sprachen?

32 | Next Generation JVM Languages
33 | Next Generation JVM Languages
Alternativen zur Threads & Co.

l

–

–
–
l

–
–

34 | Next Generation JVM Languages

http://www.sxc.hu/photo/515995
Warum neue JVM Sprachen?

35 | Next Generation JVM Languages
Warum neue JVM Sprachen?

36 | Next Generation JVM Languages
Scripting

l

l

–

–
–
–

37 | Next Generation JVM Languages
Warum neue JVM Sprachen?

38 | Next Generation JVM Languages
Meta-Programmierung
Programmen, die sich oder andere P. als Daten behandeln und verändert.

l

–
–
–

l
l

–
–

39 | Next Generation JVM Languages
Warum neue JVM Sprachen?

40 | Next Generation JVM Languages
Dynamic & Weak Typing

l
“A programming language is said to be dynamically typed when the majority
of its type checking is performed at run-time as opposed to at compile-time.
In dynamic typing values have types, but variables do not […]”
https://en.wikipedia.org/wiki/Dynamic_typing#Dynamic_typing

l
[…] strong typing when it specifies one or more restrictions on how operations
involving values of different data types can be intermixed.
Weak typing means that a language implicitly converts (or casts) types when used.
https://en.wikipedia.org/wiki/Dynamic_typing#Dynamic_typing

41 | Next Generation JVM Languages
Warum neue JVM Sprachen?

42 | Next Generation JVM Languages
Überblick

3.
43 | Next Generation JVM Languages
Auszug neuer JVM Sprachen

Inzwischen über 50-250 verschiedene Sprachen auf der JVM…
44 | Next Generation JVM Languages
Anforderungen für den Industriellen Einsatz

–
–

–
–
45 | Next Generation JVM Languages
Sprachen im industriellen Einsatz

[...] 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 preciselyspecified interactions.
http://en.wikipedia.org/wiki/Programming_in_the_large_and_programming_in_the_small

–
–

46 | Next Generation JVM Languages
Auszug neuer JVM Sprachen

47 | Next Generation JVM Languages
Übersicht & Entwicklung JVM Sprachen

48 | Next Generation JVM Languages
Statisch-typisierte JVM Sprachen im Überblick

49 | Next Generation JVM Languages
50 | Next Generation JVM Languages

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

.
Scala im Portrait

l

–

51 | Next Generation JVM Languages
Scala im Portrait

l
l

–
–
–

52 | Next Generation JVM Languages
Traits & Mixins

trait Similarity {
def isSimilar(x: Any): Boolean
def isNotSimilar(x: Any): Boolean = !isSimilar(x)
}

53 | Next Generation JVM Languages
Extension Methods

l
l
54 | Next Generation JVM Languages
TL;DR
Too long; didn‘t read

Scala & Ko-/Kontravarianz
55 | Next Generation JVM Languages

http://www.sxc.hu/photo/330223
Scala im Portrait

l
l

l

–
–
–
–
–

56 | Next Generation JVM Languages
Scala - Implicit Conversion

object A {
implicit def aToB(a: A) : B = {
new B()
}
}

57 | Next Generation JVM Languages

object MainClass {
def main(args: Array[String]) {
val b : B = new A()
}
}
58 | Next Generation JVM Languages
Pattern Matching = Switch/Instanceof++

59 | Next Generation JVM Languages
Beherrschbarkeit?
http://bit.ly/LP2Spb

60 | Next Generation JVM Languages
Erfahrungen

l

–
–
–

l

–
–
–

61 | Next Generation JVM Languages
Erfahrungen

l

l

–
–
–
–
–

62 | Next Generation JVM Languages
JVM Sprachen im Überblick (Features)










































63 | Next Generation JVM Languages





















Scala Summary

l

–
–

l
l

–
–
–

64 | Next Generation JVM Languages
Fantom

65 | Next Generation JVM Languages

http://www.sxc.hu/photo/366158
Fantom : Portabilität

l
„one portable system, graphics, and widget library
that just works everywhere”

l
–
–
–

66 | Next Generation JVM Languages
Fantom im Portrait

l

l

l

–
–
–
–
–
–
–
–

67 | Next Generation JVM Languages
Fantom : Quadratur der Kreise

l
l
l
obj.methode()
obj->methode()

l
l

68 | Next Generation JVM Languages
Fantom : Multi-Threading

–
–
–

69 | Next Generation JVM Languages
Fantom : Elegante APIs und Sprache

–
–
–
–
–
–
–
–
70 | Next Generation JVM Languages
Fantom Hello World (Webapp)
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])
}
}

71 | Next Generation JVM Languages

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

–
–
–

72 | Next Generation JVM Languages
JVM Sprachen im Überblick (Features)










































73 | Next Generation JVM Languages





















http://bit.ly/LKM5YG

74 | Next Generation JVM Languages
Ceylon im Portrait
„Ceylon’s goal is to design the language that Java would have been
if its designers had been able to predict the future.”

–
–
–
–
–

75 | Next Generation JVM Languages
Ceylon: Code Example
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);
}
}
}

76 | Next Generation JVM Languages
…bisschen Spannendes hat Ceylon aber schon…

l
l
l
77 | Next Generation JVM Languages

http://www.sxc.hu/photo/732192
Nullables

78 | Next Generation JVM Languages
Von Typen mit und ohne Charakter

79 | Next Generation JVM Languages
Ceylon: Summary

l
l

–
–
–
–
–
–

80 | Next Generation JVM Languages
JVM Sprachen im Überblick (Features)










































81 | Next Generation JVM Languages





















82 | Next Generation JVM Languages

http://www.sxc.hu/photo/1339625
Kotlin im Portrait
“General-purpose language intended for industrial use”
Kotlin = Java++ bzw. Scala--

l

–
–
–
–
–

83 | Next Generation JVM Languages
Kotlin Motivation & Hintergrund

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

l

–
–
–
–

84 | Next Generation JVM Languages
85 | Next Generation JVM Languages
Kotlin Sprach-Features

–
–

86 | Next Generation JVM Languages
Kotlin Sprach-Features

l
l
interface Collection<E> ... {
void addAll(Collection<? extends E> items);
}

abstract class Source<out T> {
fun nextT() : T
}
fun fill(dest : Array<in String>, value : String) {
// ...
}
87 | Next Generation JVM Languages
Kotlin Sprach-Features

l
l
l
l
l
l
l

88 | Next Generation JVM Languages
Kotlin: Online Demo

89 | Next Generation JVM Languages
Kotlin Summary:

l
l
l
l
l
l

90 | Next Generation JVM Languages
JVM Sprachen im Überblick (Features)










































91 | Next Generation JVM Languages





















Überblick

3.
92 | Next Generation JVM Languages
Blick über den Tellerrand

93 | Next Generation JVM Languages

http://www.sxc.hu/photo/1167119/
Resumee

94 | Next Generation JVM Languages

http://www.sxc.hu/photo/1022369
Anforderungen für den Industriellen Einsatz

–
–

–
–
95 | Next Generation JVM Languages
Wertung JVM Sprachen für den Industrie-Einsatz















































96 | Next Generation JVM Languages















Resumée

l
l
l
l

–
–

–

l
l
l

97 | Next Generation JVM Languages
Resumée

98 | Next Generation JVM Languages
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
99 | Next Generation JVM Languages

Gosu: http://gosu-lang.org/
Search for a better Java:
http://blog.joda.org/2011/07/kotlin-and-search-forbetter-java_9066.html

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

Contenu connexe

Tendances

Introduction to the Java bytecode - So@t - 20130924
Introduction to the Java bytecode - So@t - 20130924Introduction to the Java bytecode - So@t - 20130924
Introduction to the Java bytecode - So@t - 20130924yohanbeschi
 
Java Performance Tuning
Java Performance TuningJava Performance Tuning
Java Performance TuningMinh Hoang
 
Graal Tutorial at CGO 2015 by Christian Wimmer
Graal Tutorial at CGO 2015 by Christian WimmerGraal Tutorial at CGO 2015 by Christian Wimmer
Graal Tutorial at CGO 2015 by Christian WimmerThomas Wuerthinger
 
Graal and Truffle: One VM to Rule Them All
Graal and Truffle: One VM to Rule Them AllGraal and Truffle: One VM to Rule Them All
Graal and Truffle: One VM to Rule Them AllThomas Wuerthinger
 
Graal VM: Multi-Language Execution Platform
Graal VM: Multi-Language Execution PlatformGraal VM: Multi-Language Execution Platform
Graal VM: Multi-Language Execution PlatformThomas Wuerthinger
 
Talk Python To Me: Stream Processing in your favourite Language with Beam on ...
Talk Python To Me: Stream Processing in your favourite Language with Beam on ...Talk Python To Me: Stream Processing in your favourite Language with Beam on ...
Talk Python To Me: Stream Processing in your favourite Language with Beam on ...Aljoscha Krettek
 
Towards JVM Dynamic Languages Toolchain
Towards JVM Dynamic Languages ToolchainTowards JVM Dynamic Languages Toolchain
Towards JVM Dynamic Languages ToolchainAttila Szegedi
 
Graal and Truffle: Modularity and Separation of Concerns as Cornerstones for ...
Graal and Truffle: Modularity and Separation of Concerns as Cornerstones for ...Graal and Truffle: Modularity and Separation of Concerns as Cornerstones for ...
Graal and Truffle: Modularity and Separation of Concerns as Cornerstones for ...Thomas Wuerthinger
 
Java bytecode and classes
Java bytecode and classesJava bytecode and classes
Java bytecode and classesyoavwix
 
Jfokus 2016 - A JVMs Journey into Polyglot Runtimes
Jfokus 2016 - A JVMs Journey into Polyglot RuntimesJfokus 2016 - A JVMs Journey into Polyglot Runtimes
Jfokus 2016 - A JVMs Journey into Polyglot RuntimesCharlie Gracie
 
CS6270 Virtual Machines - Java Virtual Machine Architecture and APIs
CS6270 Virtual Machines - Java Virtual Machine Architecture and APIsCS6270 Virtual Machines - Java Virtual Machine Architecture and APIs
CS6270 Virtual Machines - Java Virtual Machine Architecture and APIsKwangshin Oh
 
FOSDEM2016 - Ruby and OMR
FOSDEM2016 - Ruby and OMRFOSDEM2016 - Ruby and OMR
FOSDEM2016 - Ruby and OMRCharlie Gracie
 
Intrinsic Methods in HotSpot VM
Intrinsic Methods in HotSpot VMIntrinsic Methods in HotSpot VM
Intrinsic Methods in HotSpot VMKris Mok
 
Graal in GraalVM - A New JIT Compiler
Graal in GraalVM - A New JIT CompilerGraal in GraalVM - A New JIT Compiler
Graal in GraalVM - A New JIT CompilerKoichi Sakata
 
JVM JIT compilation overview by Vladimir Ivanov
JVM JIT compilation overview by Vladimir IvanovJVM JIT compilation overview by Vladimir Ivanov
JVM JIT compilation overview by Vladimir IvanovZeroTurnaround
 
bai giang java co ban - java cơ bản - bai 1
bai giang java co ban - java cơ bản - bai 1bai giang java co ban - java cơ bản - bai 1
bai giang java co ban - java cơ bản - bai 1ifis
 
JIT Versus AOT: Unity And Conflict of Dynamic and Static Compilers (JavaOne 2...
JIT Versus AOT: Unity And Conflict of Dynamic and Static Compilers (JavaOne 2...JIT Versus AOT: Unity And Conflict of Dynamic and Static Compilers (JavaOne 2...
JIT Versus AOT: Unity And Conflict of Dynamic and Static Compilers (JavaOne 2...Nikita Lipsky
 
Java byte code & virtual machine
Java byte code & virtual machineJava byte code & virtual machine
Java byte code & virtual machineLaxman Puri
 

Tendances (20)

Introduction to the Java bytecode - So@t - 20130924
Introduction to the Java bytecode - So@t - 20130924Introduction to the Java bytecode - So@t - 20130924
Introduction to the Java bytecode - So@t - 20130924
 
Java Performance Tuning
Java Performance TuningJava Performance Tuning
Java Performance Tuning
 
Graal Tutorial at CGO 2015 by Christian Wimmer
Graal Tutorial at CGO 2015 by Christian WimmerGraal Tutorial at CGO 2015 by Christian Wimmer
Graal Tutorial at CGO 2015 by Christian Wimmer
 
JAVA BYTE CODE
JAVA BYTE CODEJAVA BYTE CODE
JAVA BYTE CODE
 
Graal and Truffle: One VM to Rule Them All
Graal and Truffle: One VM to Rule Them AllGraal and Truffle: One VM to Rule Them All
Graal and Truffle: One VM to Rule Them All
 
Graal VM: Multi-Language Execution Platform
Graal VM: Multi-Language Execution PlatformGraal VM: Multi-Language Execution Platform
Graal VM: Multi-Language Execution Platform
 
Talk Python To Me: Stream Processing in your favourite Language with Beam on ...
Talk Python To Me: Stream Processing in your favourite Language with Beam on ...Talk Python To Me: Stream Processing in your favourite Language with Beam on ...
Talk Python To Me: Stream Processing in your favourite Language with Beam on ...
 
Towards JVM Dynamic Languages Toolchain
Towards JVM Dynamic Languages ToolchainTowards JVM Dynamic Languages Toolchain
Towards JVM Dynamic Languages Toolchain
 
Graal and Truffle: Modularity and Separation of Concerns as Cornerstones for ...
Graal and Truffle: Modularity and Separation of Concerns as Cornerstones for ...Graal and Truffle: Modularity and Separation of Concerns as Cornerstones for ...
Graal and Truffle: Modularity and Separation of Concerns as Cornerstones for ...
 
Java bytecode and classes
Java bytecode and classesJava bytecode and classes
Java bytecode and classes
 
LLVM
LLVMLLVM
LLVM
 
Jfokus 2016 - A JVMs Journey into Polyglot Runtimes
Jfokus 2016 - A JVMs Journey into Polyglot RuntimesJfokus 2016 - A JVMs Journey into Polyglot Runtimes
Jfokus 2016 - A JVMs Journey into Polyglot Runtimes
 
CS6270 Virtual Machines - Java Virtual Machine Architecture and APIs
CS6270 Virtual Machines - Java Virtual Machine Architecture and APIsCS6270 Virtual Machines - Java Virtual Machine Architecture and APIs
CS6270 Virtual Machines - Java Virtual Machine Architecture and APIs
 
FOSDEM2016 - Ruby and OMR
FOSDEM2016 - Ruby and OMRFOSDEM2016 - Ruby and OMR
FOSDEM2016 - Ruby and OMR
 
Intrinsic Methods in HotSpot VM
Intrinsic Methods in HotSpot VMIntrinsic Methods in HotSpot VM
Intrinsic Methods in HotSpot VM
 
Graal in GraalVM - A New JIT Compiler
Graal in GraalVM - A New JIT CompilerGraal in GraalVM - A New JIT Compiler
Graal in GraalVM - A New JIT Compiler
 
JVM JIT compilation overview by Vladimir Ivanov
JVM JIT compilation overview by Vladimir IvanovJVM JIT compilation overview by Vladimir Ivanov
JVM JIT compilation overview by Vladimir Ivanov
 
bai giang java co ban - java cơ bản - bai 1
bai giang java co ban - java cơ bản - bai 1bai giang java co ban - java cơ bản - bai 1
bai giang java co ban - java cơ bản - bai 1
 
JIT Versus AOT: Unity And Conflict of Dynamic and Static Compilers (JavaOne 2...
JIT Versus AOT: Unity And Conflict of Dynamic and Static Compilers (JavaOne 2...JIT Versus AOT: Unity And Conflict of Dynamic and Static Compilers (JavaOne 2...
JIT Versus AOT: Unity And Conflict of Dynamic and Static Compilers (JavaOne 2...
 
Java byte code & virtual machine
Java byte code & virtual machineJava byte code & virtual machine
Java byte code & virtual machine
 

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

Jruby synergy-of-ruby-and-java
Jruby synergy-of-ruby-and-javaJruby synergy-of-ruby-and-java
Jruby synergy-of-ruby-and-javaKeith Bennett
 
4CS4-25-Java-Lab-Manual.pdf
4CS4-25-Java-Lab-Manual.pdf4CS4-25-Java-Lab-Manual.pdf
4CS4-25-Java-Lab-Manual.pdfamitbhachne
 
Scala clojure techday_2011
Scala clojure techday_2011Scala clojure techday_2011
Scala clojure techday_2011Thadeu Russo
 
It pro dev_birbilis_20101127_en
It pro dev_birbilis_20101127_enIt pro dev_birbilis_20101127_en
It pro dev_birbilis_20101127_enGeorge Birbilis
 
Clojure made-simple - John Stevenson
Clojure made-simple - John StevensonClojure made-simple - John Stevenson
Clojure made-simple - John StevensonJAX London
 
Spring Boot Revisited with KoFu and JaFu
Spring Boot Revisited with KoFu and JaFuSpring Boot Revisited with KoFu and JaFu
Spring Boot Revisited with KoFu and JaFuVMware Tanzu
 
Core java over view basics introduction by quontra solutions
Core java over view basics introduction by quontra solutionsCore java over view basics introduction by quontra solutions
Core java over view basics introduction by quontra solutionsQUONTRASOLUTIONS
 
Native Java with GraalVM
Native Java with GraalVMNative Java with GraalVM
Native Java with GraalVMSylvain Wallez
 
Clojure Fundamentals Course For Beginners
Clojure Fundamentals Course For Beginners Clojure Fundamentals Course For Beginners
Clojure Fundamentals Course For Beginners Paddy Lock
 
MCE^3 - Kyle Fuller - End-to-end Building Web Services in-swift-mce-2016
MCE^3 - Kyle Fuller - End-to-end Building Web Services in-swift-mce-2016MCE^3 - Kyle Fuller - End-to-end Building Web Services in-swift-mce-2016
MCE^3 - Kyle Fuller - End-to-end Building Web Services in-swift-mce-2016PROIDEA
 
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...Paul King
 
Short intro to scala and the play framework
Short intro to scala and the play frameworkShort intro to scala and the play framework
Short intro to scala and the play frameworkFelipe
 
DevNexus 2020: Discover Modern Java
DevNexus 2020: Discover Modern JavaDevNexus 2020: Discover Modern Java
DevNexus 2020: Discover Modern JavaHenri Tremblay
 

Similaire à Next Generation Java - Ceylon, Kotlin, Scala & Fantom im Überblick (20)

Jruby synergy-of-ruby-and-java
Jruby synergy-of-ruby-and-javaJruby synergy-of-ruby-and-java
Jruby synergy-of-ruby-and-java
 
JavaFX
JavaFXJavaFX
JavaFX
 
4CS4-25-Java-Lab-Manual.pdf
4CS4-25-Java-Lab-Manual.pdf4CS4-25-Java-Lab-Manual.pdf
4CS4-25-Java-Lab-Manual.pdf
 
Tech Days 2010
Tech  Days 2010Tech  Days 2010
Tech Days 2010
 
All experiment of java
All experiment of javaAll experiment of java
All experiment of java
 
Clojure And Swing
Clojure And SwingClojure And Swing
Clojure And Swing
 
Scala clojure techday_2011
Scala clojure techday_2011Scala clojure techday_2011
Scala clojure techday_2011
 
It pro dev_birbilis_20101127_en
It pro dev_birbilis_20101127_enIt pro dev_birbilis_20101127_en
It pro dev_birbilis_20101127_en
 
Clojure made-simple - John Stevenson
Clojure made-simple - John StevensonClojure made-simple - John Stevenson
Clojure made-simple - John Stevenson
 
Spring Boot Revisited with KoFu and JaFu
Spring Boot Revisited with KoFu and JaFuSpring Boot Revisited with KoFu and JaFu
Spring Boot Revisited with KoFu and JaFu
 
Core java over view basics introduction by quontra solutions
Core java over view basics introduction by quontra solutionsCore java over view basics introduction by quontra solutions
Core java over view basics introduction by quontra solutions
 
Native Java with GraalVM
Native Java with GraalVMNative Java with GraalVM
Native Java with GraalVM
 
Polyglot JVM
Polyglot JVMPolyglot JVM
Polyglot JVM
 
Clojure Fundamentals Course For Beginners
Clojure Fundamentals Course For Beginners Clojure Fundamentals Course For Beginners
Clojure Fundamentals Course For Beginners
 
MCE^3 - Kyle Fuller - End-to-end Building Web Services in-swift-mce-2016
MCE^3 - Kyle Fuller - End-to-end Building Web Services in-swift-mce-2016MCE^3 - Kyle Fuller - End-to-end Building Web Services in-swift-mce-2016
MCE^3 - Kyle Fuller - End-to-end Building Web Services in-swift-mce-2016
 
Java introduction
Java introductionJava introduction
Java introduction
 
Completable future
Completable futureCompletable future
Completable future
 
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...
Industrial Strength Groovy - Tools for the Professional Groovy Developer: Pau...
 
Short intro to scala and the play framework
Short intro to scala and the play frameworkShort intro to scala and the play framework
Short intro to scala and the play framework
 
DevNexus 2020: Discover Modern Java
DevNexus 2020: Discover Modern JavaDevNexus 2020: Discover Modern Java
DevNexus 2020: Discover Modern Java
 

Plus de Benjamin Schmid

Power catch up - Everything Practical and Important in Java 9 to 13
Power catch up - Everything Practical and Important in Java 9 to 13Power catch up - Everything Practical and Important in Java 9 to 13
Power catch up - Everything Practical and Important in Java 9 to 13Benjamin Schmid
 
Schnelle Winkel: 10x schnellere Webapps mit AngularJS und JEE
Schnelle Winkel: 10x schnellere Webapps mit AngularJS und JEESchnelle Winkel: 10x schnellere Webapps mit AngularJS und JEE
Schnelle Winkel: 10x schnellere Webapps mit AngularJS und JEEBenjamin Schmid
 
Komponentenorientierte Webanwendungen mit wingS 2.0
Komponentenorientierte Webanwendungen mit wingS 2.0 Komponentenorientierte Webanwendungen mit wingS 2.0
Komponentenorientierte Webanwendungen mit wingS 2.0 Benjamin Schmid
 
Der 10-Punkte Plan für den sicheren Weg zum nicht-wartbaren Code
Der 10-Punkte Plan für den sicheren Weg zum nicht-wartbaren CodeDer 10-Punkte Plan für den sicheren Weg zum nicht-wartbaren Code
Der 10-Punkte Plan für den sicheren Weg zum nicht-wartbaren CodeBenjamin Schmid
 
Automatisierte GUI-Tests mit Selenium
Automatisierte GUI-Tests mit SeleniumAutomatisierte GUI-Tests mit Selenium
Automatisierte GUI-Tests mit SeleniumBenjamin Schmid
 
Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg!
Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg!Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg!
Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg!Benjamin Schmid
 
Vital und fit bis ins hohe Alter: Refactoring im Projekt
Vital und fit bis ins hohe Alter: Refactoring im ProjektVital und fit bis ins hohe Alter: Refactoring im Projekt
Vital und fit bis ins hohe Alter: Refactoring im ProjektBenjamin Schmid
 
Datenbank-Refactoring mit LiquiBase
Datenbank-Refactoring mit LiquiBaseDatenbank-Refactoring mit LiquiBase
Datenbank-Refactoring mit LiquiBaseBenjamin Schmid
 
Vielfalt vs. Abstraktion - Der Jakobsweg der modellbasierten GUI-Entwicklung
Vielfalt vs. Abstraktion - Der Jakobsweg der modellbasierten GUI-EntwicklungVielfalt vs. Abstraktion - Der Jakobsweg der modellbasierten GUI-Entwicklung
Vielfalt vs. Abstraktion - Der Jakobsweg der modellbasierten GUI-EntwicklungBenjamin Schmid
 
Scharfe Anmerkungen für Java 6 mit Lombok
Scharfe Anmerkungen für Java 6 mit LombokScharfe Anmerkungen für Java 6 mit Lombok
Scharfe Anmerkungen für Java 6 mit LombokBenjamin Schmid
 
Das lustige Überlebenshandbuch für JavaScript
Das lustige Überlebenshandbuch für JavaScriptDas lustige Überlebenshandbuch für JavaScript
Das lustige Überlebenshandbuch für JavaScriptBenjamin Schmid
 
Trittsicher auf allen Mobilen Pfaden mit HTML5 & jQuery Mobile
Trittsicher auf allen Mobilen Pfaden mit HTML5 & jQuery MobileTrittsicher auf allen Mobilen Pfaden mit HTML5 & jQuery Mobile
Trittsicher auf allen Mobilen Pfaden mit HTML5 & jQuery MobileBenjamin Schmid
 
Hybride Schönheit - Das Java/JavaScript Webframeworks Echo
Hybride Schönheit - Das Java/JavaScript Webframeworks EchoHybride Schönheit - Das Java/JavaScript Webframeworks Echo
Hybride Schönheit - Das Java/JavaScript Webframeworks EchoBenjamin Schmid
 
'Git started' für Fortgeschrittene!
'Git started' für Fortgeschrittene!'Git started' für Fortgeschrittene!
'Git started' für Fortgeschrittene!Benjamin Schmid
 

Plus de Benjamin Schmid (14)

Power catch up - Everything Practical and Important in Java 9 to 13
Power catch up - Everything Practical and Important in Java 9 to 13Power catch up - Everything Practical and Important in Java 9 to 13
Power catch up - Everything Practical and Important in Java 9 to 13
 
Schnelle Winkel: 10x schnellere Webapps mit AngularJS und JEE
Schnelle Winkel: 10x schnellere Webapps mit AngularJS und JEESchnelle Winkel: 10x schnellere Webapps mit AngularJS und JEE
Schnelle Winkel: 10x schnellere Webapps mit AngularJS und JEE
 
Komponentenorientierte Webanwendungen mit wingS 2.0
Komponentenorientierte Webanwendungen mit wingS 2.0 Komponentenorientierte Webanwendungen mit wingS 2.0
Komponentenorientierte Webanwendungen mit wingS 2.0
 
Der 10-Punkte Plan für den sicheren Weg zum nicht-wartbaren Code
Der 10-Punkte Plan für den sicheren Weg zum nicht-wartbaren CodeDer 10-Punkte Plan für den sicheren Weg zum nicht-wartbaren Code
Der 10-Punkte Plan für den sicheren Weg zum nicht-wartbaren Code
 
Automatisierte GUI-Tests mit Selenium
Automatisierte GUI-Tests mit SeleniumAutomatisierte GUI-Tests mit Selenium
Automatisierte GUI-Tests mit Selenium
 
Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg!
Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg!Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg!
Auf dem Weg zu Unwartbarkeit - Die besten Strategien für den sicheren Erfolg!
 
Vital und fit bis ins hohe Alter: Refactoring im Projekt
Vital und fit bis ins hohe Alter: Refactoring im ProjektVital und fit bis ins hohe Alter: Refactoring im Projekt
Vital und fit bis ins hohe Alter: Refactoring im Projekt
 
Datenbank-Refactoring mit LiquiBase
Datenbank-Refactoring mit LiquiBaseDatenbank-Refactoring mit LiquiBase
Datenbank-Refactoring mit LiquiBase
 
Vielfalt vs. Abstraktion - Der Jakobsweg der modellbasierten GUI-Entwicklung
Vielfalt vs. Abstraktion - Der Jakobsweg der modellbasierten GUI-EntwicklungVielfalt vs. Abstraktion - Der Jakobsweg der modellbasierten GUI-Entwicklung
Vielfalt vs. Abstraktion - Der Jakobsweg der modellbasierten GUI-Entwicklung
 
Scharfe Anmerkungen für Java 6 mit Lombok
Scharfe Anmerkungen für Java 6 mit LombokScharfe Anmerkungen für Java 6 mit Lombok
Scharfe Anmerkungen für Java 6 mit Lombok
 
Das lustige Überlebenshandbuch für JavaScript
Das lustige Überlebenshandbuch für JavaScriptDas lustige Überlebenshandbuch für JavaScript
Das lustige Überlebenshandbuch für JavaScript
 
Trittsicher auf allen Mobilen Pfaden mit HTML5 & jQuery Mobile
Trittsicher auf allen Mobilen Pfaden mit HTML5 & jQuery MobileTrittsicher auf allen Mobilen Pfaden mit HTML5 & jQuery Mobile
Trittsicher auf allen Mobilen Pfaden mit HTML5 & jQuery Mobile
 
Hybride Schönheit - Das Java/JavaScript Webframeworks Echo
Hybride Schönheit - Das Java/JavaScript Webframeworks EchoHybride Schönheit - Das Java/JavaScript Webframeworks Echo
Hybride Schönheit - Das Java/JavaScript Webframeworks Echo
 
'Git started' für Fortgeschrittene!
'Git started' für Fortgeschrittene!'Git started' für Fortgeschrittene!
'Git started' für Fortgeschrittene!
 

Dernier

Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Strongerpanagenda
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 

Dernier (20)

Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better StrongerModern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
Modern Roaming for Notes and Nomad – Cheaper Faster Better Stronger
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 

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