SlideShare ist ein Scribd-Unternehmen logo
1 von 63
Downloaden Sie, um offline zu lesen
Karakun DevHub_
dev.karakun.com
@net0pyr / @HendrikEbbers
Once upon a time in
Coderland…
Once upon a time in
Coderland…
@net0pyr / @HendrikEbbers
… lived a young coder that found this
cool new language TypeScript
But one day the coder got lost in the woods of
Coderland and found a magical old castle…
And after a while the coder and the
beast get to know each other…
In the castle lived a beast the coder had never seen before
And after a while the coder and the
beast got to know each other…
Beauty and
the Beast
@net0pyr / @HendrikEbbers
Karakun DevHub_
dev.karakun.com
About me
• Karakun Co-Founder
• Lead of JUG Dortmund
• JSR EG member
• JavaOne Rockstar, Java Champion
• AdoptOpenJDK TSC
@net0pyr / @HendrikEbbers
Karakun DevHub_
dev.karakun.com
About me
• Karakun Co-Founder
• Lead of JUG Freiburg
• Used to be: speaker, author,

developer, …
• Switched to the dark side
@net0pyr / @HendrikEbbers
Karakun DevHub_
dev.karakun.com
Java
• "Oak" (Object Application Kernel) / "The Green
Project" was developed in 1992 at Sun
Microsystems
• This project evolved to Java in 1995
@net0pyr / @HendrikEbbers
Karakun DevHub_
dev.karakun.com
Java
• In 1998 the JCP (Java Community 

Project) was formed
• Java is released under GNU GPL with
classpath exception
• Java is 100% open source (OpenJDK)
and several vendors provide JDKs
@net0pyr / @HendrikEbbers
Karakun DevHub_
dev.karakun.com
TypeScript
• First public appearance in 2012
• Developed by Microsoft
• Open-source
• Strict superset of JavaScript, adds optional
static typing
• Transcompiles to JavaScript
@net0pyr / @HendrikEbbers
primitive
datatypes
@net0pyr / @HendrikEbbers
Karakun DevHub_
dev.karakun.com
Variables
let isDone: boolean = false;
boolean isDone = false;
@net0pyr / @HendrikEbbers
Karakun DevHub_
dev.karakun.com
Variables
let isDone: boolean = false;
boolean isDone = false;
Type Name Value
@net0pyr / @HendrikEbbers
Karakun DevHub_
dev.karakun.com
Variables
let isDone: boolean = false;
boolean isDone = false;
ValueTypeName
@net0pyr / @HendrikEbbers
Karakun DevHub_
dev.karakun.com
Primitive Datatypes
boolean v = false;
int v = 1;
long v = 1L;
double v = 1.0d;
float v = 1.0f;
short v = 1;
byte v = 1;
char v = 'a';
let v: number = 6;
let v: boolean = true;
let v: string = "Hi";
@net0pyr / @HendrikEbbers
Karakun DevHub_
dev.karakun.com
Primitive Datatypes
• JavaScript numbers are always 64-bit floating
point
• Same behaviour in TypeScript
var x = 999999999999999;   // x will be 999999999999999
var y = 9999999999999999;  // y will be 10000000000000000
var x = 0.2 + 0.1;         // x will be 0.30000000000000004
@net0pyr / @HendrikEbbers
Karakun DevHub_
dev.karakun.com
Primitive Datatypes
• String is not a primitive datatype in Java (see
java.lang.String)
• Java allows to create a String like primitive data
• Internally the String class holds a char[]
@net0pyr / @HendrikEbbers
Karakun DevHub_
dev.karakun.com
Arrays and tuples
• TypeScript provides native support for arrays and tuples
• Java provides native support for arrays
let vArray: number[] = [1, 2, 3];
let vTuple: [string, number];
int[] vArray = {1, 2, 3};
@net0pyr / @HendrikEbbers
Karakun DevHub_
dev.karakun.com
Arrays and tuples
• Instead of providing native tuples in the Java
language syntax a more extensive feature is
planed for future Java versions
• With Records (JEP 169) you can easily create
constructs like tuples (and much more)
@net0pyr / @HendrikEbbers
methods and
functions
@net0pyr / @HendrikEbbers
Karakun DevHub_
dev.karakun.com
Methods / Functions
function isBig(x: number): boolean {
return x > 10;
}
boolean isBig(int x) {
return x > 10;
}
@net0pyr / @HendrikEbbers
Karakun DevHub_
dev.karakun.com
Methods / Functions
function isBig(x: number): boolean {
return x > 10;
}
Param Name Param Type Return Type
boolean isBig(int x) {
return x > 10;
}
@net0pyr / @HendrikEbbers
Karakun DevHub_
dev.karakun.com
Methods / Functions
function isBig(x: number): boolean {
return x > 10;
}
boolean isBig(int x) {
return x > 10;
}
Param NameParam TypeReturn Type
@net0pyr / @HendrikEbbers
Karakun DevHub_
dev.karakun.com
Function as a type
const f = (n: number): number => n * n;
handle(f);
• In TypeScript functions are first-class citizens
@net0pyr / @HendrikEbbers
Karakun DevHub_
dev.karakun.com
Functional Interface
@FunctionalInterface
public interface Square {
int square(int n);
}
Square f = (n) -> n * n;
handle(f);
• In Java similar functionality can be created by
using functional interfaces
@net0pyr / @HendrikEbbers
object oriented
programming
@net0pyr / @HendrikEbbers
Karakun DevHub_
dev.karakun.com
Classes
class Animal {
move(distance: number = 0) {
console.log(`Animal moved ${distance} m.`);
}
}
public class Animal {
public void move(int distance) {
System.out.println("Animal moved " + distance + "m");
}
}
@net0pyr / @HendrikEbbers
Karakun DevHub_
dev.karakun.com
Access modifiers
• You might have noticed the missing access
modifier in TypeScript.
• If you do not define an access modifier, TypeScript
automatically uses the public modifier
• Both languages know the public, protected
and private modifiers
@net0pyr / @HendrikEbbers
Karakun DevHub_
dev.karakun.com
Access modifiers
• In Java the protected modifier allows access
from inherited classes or from within the same
package
• Since we do not have package structures in
TypeScript the protected modifier only allows
access from inherited classes
@net0pyr / @HendrikEbbers
Karakun DevHub_
dev.karakun.com
Interfaces
• Both TypeScript and Java support interfaces







• We can see in the sample that TypeScript has a
different approach to handle data access
interface Countdown {
name: string;
start(sec: number): void;
}
public interface Countdown {
String getName();
void setName(String name);
void start(long sec);
}
@net0pyr / @HendrikEbbers
Karakun DevHub_
dev.karakun.com
Mutable data
class Person {
name : string;
}
public class Person {
private String name;
public void setName(String n) {this.name = n;}
public String getName() {return this.name;}
}
@net0pyr / @HendrikEbbers
Karakun DevHub_
dev.karakun.com
Immutable data
class Person {
readonly birthday : Date;
}
public class Person {
private final Date birthday;
public Person(Date birthday) {this.birthday = birthday;}
public Date getBirthday() {return this.birthday;}
}
@net0pyr / @HendrikEbbers
Karakun DevHub_
dev.karakun.com
Easier data access in Java
• With Records (JEP 359) Java will contain additional
functionality to define data classes in the future
• Properties will still be accessed by setter/
getter methods but such methods do not need
to be implemented any more.
@net0pyr / @HendrikEbbers
Karakun DevHub_
dev.karakun.com
Abstraction and Inheritance
abstract class Animal {
abstract makeSound(): void;
}
public abstract class Animal {
public abstract void makeSound();
}
@net0pyr / @HendrikEbbers
Karakun DevHub_
dev.karakun.com
Abstraction and Inheritance
class Dog extends Animal {
makeSound(): void {console.log("WUFF");}
}
public class Dog extends Animal {
public void makeSound() {System.out.println("WUFF");}
}
@net0pyr / @HendrikEbbers
Karakun DevHub_
dev.karakun.com
Generics
interface Player<T extends Media> {
play(media : T);
}
public interface Player<T extends Media> {
public void play(T media);
}
@net0pyr / @HendrikEbbers
Karakun DevHub_
dev.karakun.com
Reflection
• Java provides a powerful reflection API
• Reflection can be used to inspect code at runtime
• Reflection can be used to modify the runtime behavior
Method m = foo.getClass().getMethod("play", String.class);
m.invoke(foo, "medley.mp3");
@net0pyr / @HendrikEbbers
Karakun DevHub_
dev.karakun.com
Reflection Sample
class Demo {
public foo: number = 1;
}
console.log(Reflect.has(demo, "foo"));
console.log(Reflect.has(demo, "bar"));
@net0pyr / @HendrikEbbers
• TypeScript does not provide a stable reflection API
Karakun DevHub_
dev.karakun.com
Annotations
• Java provides annotations to apply metadata
• Annotations in Java can be accessed at compile time
or runtime
• Annotations in Java are heavily bound to reflections
@Singleton
public class DatabaseService {
}
@net0pyr / @HendrikEbbers
Karakun DevHub_
dev.karakun.com
Decorators Sample
function LogMethod(target: any) {
console.log(target);
}
class Demo {
@LogMethod
public foo() {}
}
@net0pyr / @HendrikEbbers
Karakun DevHub_
dev.karakun.com
Decorators Sample
function LogMethod(target: any) {
console.log(target);
}
class Demo {
@LogMethod
public foo() {}
}
Method with same name is
called automatically
No Concrete annotation
definition
@net0pyr / @HendrikEbbers
functional
programming
@net0pyr / @HendrikEbbers
Karakun DevHub_
dev.karakun.com
Functional Programming
@net0pyr / @HendrikEbbers
Karakun DevHub_
dev.karakun.com
Functional-ish Programming
@net0pyr / @HendrikEbbers
+ Libraries + Libraries
Karakun DevHub_
dev.karakun.com
Functional-ish Programming
@net0pyr / @HendrikEbbers
• Immutable data structures
• Pure functions
• Result depends only on parameters
• No side-effects
Karakun DevHub_
dev.karakun.com
Immutable objects
@net0pyr / @HendrikEbbers
interface Person {
readonly name: string;
}
public interface Person {
private final String name;
... more Code required
}
Karakun DevHub_
dev.karakun.com
Readonly ≠ Immutable
@net0pyr / @HendrikEbbers
function evilRename(person: any) {
person.name = "Mailer";
}
const p: Person = { name: "Müller" };
evilRename(p);
console.log(p.name);
prints Mailer
Karakun DevHub_
dev.karakun.com
Creating immutable objects
@net0pyr / @HendrikEbbers
const p1: Person = { name: "Müller" };
const p2: Person = { ...p1, name: "Maier" }
final Person p1 = new Person("Müller");
Final Person p2 = p1.withName("Müller");
requires a lot of boilerplate
Karakun DevHub_
dev.karakun.com
Immutable collections
@net0pyr / @HendrikEbbers
const n1: ReadonlyArray<number> = [ 1, 2, 3 ];
const n2: ReadonlyArray<number> = [ ...n1, 4 ];
import io.vavr.collection.Vector;
final Vector<Integer> n1 = Vector.ofAll(1, 2, 3);
Final Vector<Integer> n2 = n1.append(4);
Karakun DevHub_
dev.karakun.com
Pure Functions
@net0pyr / @HendrikEbbers
Responsibility of the developer
VAVR, Java Streams, RxJava
Lodash, RxJS
but there’s

more
@net0pyr / @HendrikEbbers
Karakun DevHub_
dev.karakun.com
Template Strings
@net0pyr / @HendrikEbbers
const s = `Hello ${name}!
How are you?`
Text blocks, rest planned…
Karakun DevHub_
dev.karakun.com
Type Alias & Union Types
@net0pyr / @HendrikEbbers
type Fruit = Apple | Banana | Strawberry;
function search(id: number): Person | Error {
...
}
Karakun DevHub_
dev.karakun.com
Type Alias & Union Types
@net0pyr / @HendrikEbbers
type Greeting = "Hello" | "Aloha";
let s: Greeting;
s = "Hello";
s = "Bonjour";
Does not compile
Karakun DevHub_
dev.karakun.com
Strict null checks
@net0pyr / @HendrikEbbers
let s: String;
S = null;
console.log(s.length);
let s: String | null;
s = null;
console.log(s.length);
Compiler Flag: strictNullChecks
Does not compile
Does not compile
Karakun DevHub_
dev.karakun.com
Strict null checks
@net0pyr / @HendrikEbbers
...
• Optional
• @NonNull, @Nullable
Karakun DevHub_
dev.karakun.com
Deconstruction
@net0pyr / @HendrikEbbers
const { firstName, lastName } = person;
console.log(firstName, lastName};
const { lastName: name } = person;
console.log(name);
const { address: { street } } = person;
console.log(street);
Karakun DevHub_
dev.karakun.com
Deconstruction
@net0pyr / @HendrikEbbers
return switch(n) {
case IntNode(int i) -> i;
case AddNode(Node left, Node right) -> left + right;
};
• Will be available for records in a future version
… and they lived happily
ever after
Happy End
Karakun@
- Beauty and the Beast: Java Versus TypeScript
- Not Dead Yet: Java on the Desktop
- Productivity Beyond Failure
- JavaFX Real-World Applications
- Team Diversity the Successful Way
- Rich Client Java: Still Going Strong!
Sessions
& StickersSocialize
dev.karakun.com

Weitere ähnliche Inhalte

Was ist angesagt?

Selenium WebDriver
Selenium WebDriverSelenium WebDriver
Selenium WebDriverRajathi-QA
 
An Introduction to Test Driven Development
An Introduction to Test Driven Development An Introduction to Test Driven Development
An Introduction to Test Driven Development CodeOps Technologies LLP
 
Automation Testing using Selenium
Automation Testing using SeleniumAutomation Testing using Selenium
Automation Testing using SeleniumNaresh Chintalcheru
 
Test Automation - Principles and Practices
Test Automation - Principles and PracticesTest Automation - Principles and Practices
Test Automation - Principles and PracticesAnand Bagmar
 
How BDD enables True CI/CD
How BDD enables True CI/CDHow BDD enables True CI/CD
How BDD enables True CI/CDRoger Turnau
 
A brief history of automation in Software Engineering
A brief history of automation in Software EngineeringA brief history of automation in Software Engineering
A brief history of automation in Software EngineeringGeorg Buske
 
Xpath in Selenium | Selenium Xpath Tutorial | Selenium Xpath Examples | Selen...
Xpath in Selenium | Selenium Xpath Tutorial | Selenium Xpath Examples | Selen...Xpath in Selenium | Selenium Xpath Tutorial | Selenium Xpath Examples | Selen...
Xpath in Selenium | Selenium Xpath Tutorial | Selenium Xpath Examples | Selen...Edureka!
 
Types of Software Testing
Types of Software TestingTypes of Software Testing
Types of Software TestingNishant Worah
 
Equivalence partinioning and boundary value analysis
Equivalence partinioning and boundary value analysisEquivalence partinioning and boundary value analysis
Equivalence partinioning and boundary value analysisniharika5412
 
Build CICD Pipeline for Container Presentation Slides
Build CICD Pipeline for Container Presentation SlidesBuild CICD Pipeline for Container Presentation Slides
Build CICD Pipeline for Container Presentation SlidesAmazon Web Services
 
A Top Down Approach to End-to-End Testing
A Top Down Approach to End-to-End TestingA Top Down Approach to End-to-End Testing
A Top Down Approach to End-to-End TestingSmartBear
 
DevOps vs Agile | DevOps Tutorial For Beginners | DevOps Training | Edureka
DevOps vs Agile | DevOps Tutorial For Beginners | DevOps Training | EdurekaDevOps vs Agile | DevOps Tutorial For Beginners | DevOps Training | Edureka
DevOps vs Agile | DevOps Tutorial For Beginners | DevOps Training | EdurekaEdureka!
 
Sql Basics | Edureka
Sql Basics | EdurekaSql Basics | Edureka
Sql Basics | EdurekaEdureka!
 
android phone ppt
android phone pptandroid phone ppt
android phone pptmehul patel
 

Was ist angesagt? (20)

Selenium WebDriver
Selenium WebDriverSelenium WebDriver
Selenium WebDriver
 
An Introduction to Test Driven Development
An Introduction to Test Driven Development An Introduction to Test Driven Development
An Introduction to Test Driven Development
 
Automation Testing using Selenium
Automation Testing using SeleniumAutomation Testing using Selenium
Automation Testing using Selenium
 
Test Automation - Principles and Practices
Test Automation - Principles and PracticesTest Automation - Principles and Practices
Test Automation - Principles and Practices
 
How BDD enables True CI/CD
How BDD enables True CI/CDHow BDD enables True CI/CD
How BDD enables True CI/CD
 
A brief history of automation in Software Engineering
A brief history of automation in Software EngineeringA brief history of automation in Software Engineering
A brief history of automation in Software Engineering
 
Devops
DevopsDevops
Devops
 
Xpath in Selenium | Selenium Xpath Tutorial | Selenium Xpath Examples | Selen...
Xpath in Selenium | Selenium Xpath Tutorial | Selenium Xpath Examples | Selen...Xpath in Selenium | Selenium Xpath Tutorial | Selenium Xpath Examples | Selen...
Xpath in Selenium | Selenium Xpath Tutorial | Selenium Xpath Examples | Selen...
 
Types of Software Testing
Types of Software TestingTypes of Software Testing
Types of Software Testing
 
ETL QA
ETL QAETL QA
ETL QA
 
WHITE BOX TESTING ashu.pptx
WHITE BOX TESTING ashu.pptxWHITE BOX TESTING ashu.pptx
WHITE BOX TESTING ashu.pptx
 
Equivalence partinioning and boundary value analysis
Equivalence partinioning and boundary value analysisEquivalence partinioning and boundary value analysis
Equivalence partinioning and boundary value analysis
 
Agile Quality and Risk Management
Agile Quality and Risk ManagementAgile Quality and Risk Management
Agile Quality and Risk Management
 
Build CICD Pipeline for Container Presentation Slides
Build CICD Pipeline for Container Presentation SlidesBuild CICD Pipeline for Container Presentation Slides
Build CICD Pipeline for Container Presentation Slides
 
Retail Data Warehouse
Retail Data WarehouseRetail Data Warehouse
Retail Data Warehouse
 
Introduction to TDD and BDD
Introduction to TDD and BDDIntroduction to TDD and BDD
Introduction to TDD and BDD
 
A Top Down Approach to End-to-End Testing
A Top Down Approach to End-to-End TestingA Top Down Approach to End-to-End Testing
A Top Down Approach to End-to-End Testing
 
DevOps vs Agile | DevOps Tutorial For Beginners | DevOps Training | Edureka
DevOps vs Agile | DevOps Tutorial For Beginners | DevOps Training | EdurekaDevOps vs Agile | DevOps Tutorial For Beginners | DevOps Training | Edureka
DevOps vs Agile | DevOps Tutorial For Beginners | DevOps Training | Edureka
 
Sql Basics | Edureka
Sql Basics | EdurekaSql Basics | Edureka
Sql Basics | Edureka
 
android phone ppt
android phone pptandroid phone ppt
android phone ppt
 

Ähnlich wie Beauty & the Beast - Java VS TypeScript

PHP 8: Process & Fixing Insanity
PHP 8: Process & Fixing InsanityPHP 8: Process & Fixing Insanity
PHP 8: Process & Fixing InsanityGeorgePeterBanyard
 
C# 7.0 Hacks and Features
C# 7.0 Hacks and FeaturesC# 7.0 Hacks and Features
C# 7.0 Hacks and FeaturesAbhishek Sur
 
Why you should be using the shiny new C# 6.0 features now!
Why you should be using the shiny new C# 6.0 features now!Why you should be using the shiny new C# 6.0 features now!
Why you should be using the shiny new C# 6.0 features now!Eric Phan
 
The Sincerest Form of Flattery
The Sincerest Form of FlatteryThe Sincerest Form of Flattery
The Sincerest Form of FlatteryJosé Paumard
 
devLink - What's New in C# 4?
devLink - What's New in C# 4?devLink - What's New in C# 4?
devLink - What's New in C# 4?Kevin Pilch
 
JSLT: JSON querying and transformation
JSLT: JSON querying and transformationJSLT: JSON querying and transformation
JSLT: JSON querying and transformationLars Marius Garshol
 
Apache Groovy's Metaprogramming Options and You
Apache Groovy's Metaprogramming Options and YouApache Groovy's Metaprogramming Options and You
Apache Groovy's Metaprogramming Options and YouAndres Almiray
 
Accessing loosely structured data from F# and C#
Accessing loosely structured data from F# and C#Accessing loosely structured data from F# and C#
Accessing loosely structured data from F# and C#Tomas Petricek
 
Rubyforjavaprogrammers 1210167973516759-9
Rubyforjavaprogrammers 1210167973516759-9Rubyforjavaprogrammers 1210167973516759-9
Rubyforjavaprogrammers 1210167973516759-9sagaroceanic11
 
Rubyforjavaprogrammers 1210167973516759-9
Rubyforjavaprogrammers 1210167973516759-9Rubyforjavaprogrammers 1210167973516759-9
Rubyforjavaprogrammers 1210167973516759-9sagaroceanic11
 
fuser interface-development-using-jquery
fuser interface-development-using-jqueryfuser interface-development-using-jquery
fuser interface-development-using-jqueryKostas Mavridis
 
PHP in one presentation
PHP in one presentationPHP in one presentation
PHP in one presentationMilad Rahimi
 
Developer’s viewpoint on swift programming language
Developer’s viewpoint on swift programming languageDeveloper’s viewpoint on swift programming language
Developer’s viewpoint on swift programming languageAzilen Technologies Pvt. Ltd.
 
Extreme Swift
Extreme SwiftExtreme Swift
Extreme SwiftMovel
 
Complete Notes on Angular 2 and TypeScript
Complete Notes on Angular 2 and TypeScriptComplete Notes on Angular 2 and TypeScript
Complete Notes on Angular 2 and TypeScriptEPAM Systems
 

Ähnlich wie Beauty & the Beast - Java VS TypeScript (20)

PHP 8: Process & Fixing Insanity
PHP 8: Process & Fixing InsanityPHP 8: Process & Fixing Insanity
PHP 8: Process & Fixing Insanity
 
C# 7.0 Hacks and Features
C# 7.0 Hacks and FeaturesC# 7.0 Hacks and Features
C# 7.0 Hacks and Features
 
Why you should be using the shiny new C# 6.0 features now!
Why you should be using the shiny new C# 6.0 features now!Why you should be using the shiny new C# 6.0 features now!
Why you should be using the shiny new C# 6.0 features now!
 
The Sincerest Form of Flattery
The Sincerest Form of FlatteryThe Sincerest Form of Flattery
The Sincerest Form of Flattery
 
devLink - What's New in C# 4?
devLink - What's New in C# 4?devLink - What's New in C# 4?
devLink - What's New in C# 4?
 
JSLT: JSON querying and transformation
JSLT: JSON querying and transformationJSLT: JSON querying and transformation
JSLT: JSON querying and transformation
 
Apache Groovy's Metaprogramming Options and You
Apache Groovy's Metaprogramming Options and YouApache Groovy's Metaprogramming Options and You
Apache Groovy's Metaprogramming Options and You
 
Introduction to java and oop
Introduction to java and oopIntroduction to java and oop
Introduction to java and oop
 
Clean Code 2
Clean Code 2Clean Code 2
Clean Code 2
 
Accessing loosely structured data from F# and C#
Accessing loosely structured data from F# and C#Accessing loosely structured data from F# and C#
Accessing loosely structured data from F# and C#
 
Rubyforjavaprogrammers 1210167973516759-9
Rubyforjavaprogrammers 1210167973516759-9Rubyforjavaprogrammers 1210167973516759-9
Rubyforjavaprogrammers 1210167973516759-9
 
Rubyforjavaprogrammers 1210167973516759-9
Rubyforjavaprogrammers 1210167973516759-9Rubyforjavaprogrammers 1210167973516759-9
Rubyforjavaprogrammers 1210167973516759-9
 
fuser interface-development-using-jquery
fuser interface-development-using-jqueryfuser interface-development-using-jquery
fuser interface-development-using-jquery
 
Javascript
JavascriptJavascript
Javascript
 
XAML/C# to HTML/JS
XAML/C# to HTML/JSXAML/C# to HTML/JS
XAML/C# to HTML/JS
 
PHP in one presentation
PHP in one presentationPHP in one presentation
PHP in one presentation
 
Developer’s viewpoint on swift programming language
Developer’s viewpoint on swift programming languageDeveloper’s viewpoint on swift programming language
Developer’s viewpoint on swift programming language
 
Type script
Type scriptType script
Type script
 
Extreme Swift
Extreme SwiftExtreme Swift
Extreme Swift
 
Complete Notes on Angular 2 and TypeScript
Complete Notes on Angular 2 and TypeScriptComplete Notes on Angular 2 and TypeScript
Complete Notes on Angular 2 and TypeScript
 

Mehr von Hendrik Ebbers

Java APIs- The missing manual (concurrency)
Java APIs- The missing manual (concurrency)Java APIs- The missing manual (concurrency)
Java APIs- The missing manual (concurrency)Hendrik Ebbers
 
Java APIs - the missing manual
Java APIs - the missing manualJava APIs - the missing manual
Java APIs - the missing manualHendrik Ebbers
 
Multidevice Controls: A Different Approach to UX
Multidevice Controls: A Different Approach to UXMultidevice Controls: A Different Approach to UX
Multidevice Controls: A Different Approach to UXHendrik Ebbers
 
Java WebStart Is Dead: What Should We Do Now?
Java WebStart Is Dead: What Should We Do Now?Java WebStart Is Dead: What Should We Do Now?
Java WebStart Is Dead: What Should We Do Now?Hendrik Ebbers
 
Java ap is you should know
Java ap is you should knowJava ap is you should know
Java ap is you should knowHendrik Ebbers
 
JavaFX JumpStart @JavaOne 2016
JavaFX JumpStart @JavaOne 2016JavaFX JumpStart @JavaOne 2016
JavaFX JumpStart @JavaOne 2016Hendrik Ebbers
 
BUILDING MODERN WEB UIS WITH WEB COMPONENTS @ Devoxx
BUILDING MODERN WEB UIS WITH WEB COMPONENTS @ DevoxxBUILDING MODERN WEB UIS WITH WEB COMPONENTS @ Devoxx
BUILDING MODERN WEB UIS WITH WEB COMPONENTS @ DevoxxHendrik Ebbers
 
Web Components & Polymer 1.0 (Webinale Berlin)
Web Components & Polymer 1.0 (Webinale Berlin)Web Components & Polymer 1.0 (Webinale Berlin)
Web Components & Polymer 1.0 (Webinale Berlin)Hendrik Ebbers
 
webcomponents (Jfokus 2015)
webcomponents (Jfokus 2015)webcomponents (Jfokus 2015)
webcomponents (Jfokus 2015)Hendrik Ebbers
 
Test Driven Development with JavaFX
Test Driven Development with JavaFXTest Driven Development with JavaFX
Test Driven Development with JavaFXHendrik Ebbers
 
JavaFX Enterprise (JavaOne 2014)
JavaFX Enterprise (JavaOne 2014)JavaFX Enterprise (JavaOne 2014)
JavaFX Enterprise (JavaOne 2014)Hendrik Ebbers
 
DataFX 8 (JavaOne 2014)
DataFX 8 (JavaOne 2014)DataFX 8 (JavaOne 2014)
DataFX 8 (JavaOne 2014)Hendrik Ebbers
 
Feature driven development
Feature driven developmentFeature driven development
Feature driven developmentHendrik Ebbers
 
Vagrant Binding JayDay 2013
Vagrant Binding JayDay 2013Vagrant Binding JayDay 2013
Vagrant Binding JayDay 2013Hendrik Ebbers
 

Mehr von Hendrik Ebbers (20)

Java Desktop 2019
Java Desktop 2019Java Desktop 2019
Java Desktop 2019
 
Java APIs- The missing manual (concurrency)
Java APIs- The missing manual (concurrency)Java APIs- The missing manual (concurrency)
Java APIs- The missing manual (concurrency)
 
Java 11 OMG
Java 11 OMGJava 11 OMG
Java 11 OMG
 
Java APIs - the missing manual
Java APIs - the missing manualJava APIs - the missing manual
Java APIs - the missing manual
 
Multidevice Controls: A Different Approach to UX
Multidevice Controls: A Different Approach to UXMultidevice Controls: A Different Approach to UX
Multidevice Controls: A Different Approach to UX
 
Java WebStart Is Dead: What Should We Do Now?
Java WebStart Is Dead: What Should We Do Now?Java WebStart Is Dead: What Should We Do Now?
Java WebStart Is Dead: What Should We Do Now?
 
Java ap is you should know
Java ap is you should knowJava ap is you should know
Java ap is you should know
 
JavaFX JumpStart @JavaOne 2016
JavaFX JumpStart @JavaOne 2016JavaFX JumpStart @JavaOne 2016
JavaFX JumpStart @JavaOne 2016
 
BUILDING MODERN WEB UIS WITH WEB COMPONENTS @ Devoxx
BUILDING MODERN WEB UIS WITH WEB COMPONENTS @ DevoxxBUILDING MODERN WEB UIS WITH WEB COMPONENTS @ Devoxx
BUILDING MODERN WEB UIS WITH WEB COMPONENTS @ Devoxx
 
Web Components & Polymer 1.0 (Webinale Berlin)
Web Components & Polymer 1.0 (Webinale Berlin)Web Components & Polymer 1.0 (Webinale Berlin)
Web Components & Polymer 1.0 (Webinale Berlin)
 
webcomponents (Jfokus 2015)
webcomponents (Jfokus 2015)webcomponents (Jfokus 2015)
webcomponents (Jfokus 2015)
 
Test Driven Development with JavaFX
Test Driven Development with JavaFXTest Driven Development with JavaFX
Test Driven Development with JavaFX
 
JavaFX Enterprise (JavaOne 2014)
JavaFX Enterprise (JavaOne 2014)JavaFX Enterprise (JavaOne 2014)
JavaFX Enterprise (JavaOne 2014)
 
DataFX 8 (JavaOne 2014)
DataFX 8 (JavaOne 2014)DataFX 8 (JavaOne 2014)
DataFX 8 (JavaOne 2014)
 
Feature driven development
Feature driven developmentFeature driven development
Feature driven development
 
Extreme Gui Makeover
Extreme Gui MakeoverExtreme Gui Makeover
Extreme Gui Makeover
 
JavaFX Enterprise
JavaFX EnterpriseJavaFX Enterprise
JavaFX Enterprise
 
Bonjour for Java
Bonjour for JavaBonjour for Java
Bonjour for Java
 
DataFX - JavaOne 2013
DataFX - JavaOne 2013DataFX - JavaOne 2013
DataFX - JavaOne 2013
 
Vagrant Binding JayDay 2013
Vagrant Binding JayDay 2013Vagrant Binding JayDay 2013
Vagrant Binding JayDay 2013
 

Kürzlich hochgeladen

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 

Kürzlich hochgeladen (20)

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 

Beauty & the Beast - Java VS TypeScript