Slide 1

Slide 1 text

Alexey Buzdin December 2014 Build Your Own Cross-platform Tool in Java

Slide 2

Slide 2 text

Alexey Buzdin Skill set Affilations

Slide 3

Slide 3 text

* X-platformers * build one * Dream next Agenda

Slide 4

Slide 4 text

platforms* *big 4

Slide 5

Slide 5 text

ANything*

Slide 6

Slide 6 text

ANything* JS+HTMl

Slide 7

Slide 7 text

ANything* JS+HTMl java+C

Slide 8

Slide 8 text

ANything* JS+HTMl java+C C+Obj-C+Swift

Slide 9

Slide 9 text

C+Obj-C+Swift ANything* JS+HTMl java+C Something Increadable!

Slide 10

Slide 10 text

-platform

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

the X-platformer

Slide 13

Slide 13 text

-speed the X-platformer

Slide 14

Slide 14 text

-speed -code reuse the X-platformer

Slide 15

Slide 15 text

-speed -code reuse -native interop the X-platformer

Slide 16

Slide 16 text

-speed -code reuse -friendly ecosystem -native interop the X-platformer

Slide 17

Slide 17 text

-speed -code reuse -friendly ecosystem -native interop the X-platformer -native look and feel

Slide 18

Slide 18 text

X-platformers

Slide 19

Slide 19 text

January 2014

Slide 20

Slide 20 text

december 2014

Slide 21

Slide 21 text

top grossing

Slide 22

Slide 22 text

Web view compile to native* External runtime X-types

Slide 23

Slide 23 text

W A R O

Slide 24

Slide 24 text

Write Anywhere Run Once

Slide 25

Slide 25 text

Wora X-platformers

Slide 26

Slide 26 text

-not native ui -browser wars -adaptive design -performance?

Slide 27

Slide 27 text

W E A o

Slide 28

Slide 28 text

Write everywhere adapt once

Slide 29

Slide 29 text

Woae X-platformers

Slide 30

Slide 30 text

-native ui -limited API -UI Builder

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

W E r o

Slide 33

Slide 33 text

Write everywhere reuse Once try to

Slide 34

Slide 34 text

features -compile to assemblies -java proxies +Mono runtime android iOs -native clients

Slide 35

Slide 35 text

features -compile to assemblies -java proxies +Mono runtime android iOs -native clients -native/independent ui -library binding

Slide 36

Slide 36 text

No content

Slide 37

Slide 37 text

cons -c# not native for big 4 -ide problems -Unstable Infrastructure -monthly subscription

Slide 38

Slide 38 text

verbosity extendability

Slide 39

Slide 39 text

Build Your Own Cross-platform Tool in Java Lets get started!

Slide 40

Slide 40 text

why java? * mature infrastructure

Slide 41

Slide 41 text

why java? * gazzilion libraries * mature infrastructure

Slide 42

Slide 42 text

why java? * native to android * gazzilion libraries * mature infrastructure

Slide 43

Slide 43 text

why java? * native to android * gazzilion libraries * mature infrastructure * great ides

Slide 44

Slide 44 text

why java? * today is jug :) * native to android * gazzilion libraries * mature infrastructure * great ides

Slide 45

Slide 45 text

architecture

Slide 46

Slide 46 text

architecture server client

Slide 47

Slide 47 text

architecture server shared client-shared client

Slide 48

Slide 48 text

-server -shared -client-shared -client-android -client-ios -client-web (aka - domain)

Slide 49

Slide 49 text

-server -shared -client-shared -client-android -client-ios -client-web spark android robovm gwt

Slide 50

Slide 50 text

No content

Slide 51

Slide 51 text

web

Slide 52

Slide 52 text

www.m-gwt.com web + mobile

Slide 53

Slide 53 text

vanilla

Slide 54

Slide 54 text

No content

Slide 55

Slide 55 text

-Java bytecode to native java library reuse

Slide 56

Slide 56 text

-Java bytecode to native -familiar infrastructure gradle, maven, Idea, eclipse java library reuse

Slide 57

Slide 57 text

-Java bytecode to native -familiar infrastructure gradle, maven, Idea, eclipse java library reuse -ios lib binding gradle, maven, Idea, eclipse

Slide 58

Slide 58 text

robovm on javaone

Slide 59

Slide 59 text

-no dynamic jni

Slide 60

Slide 60 text

-no dynamic jni -no code generation

Slide 61

Slide 61 text

-no dynamic jni -no code generation -no xcode ui bindings supports dynamic .xib loading

Slide 62

Slide 62 text

-no dynamic jni -no code generation -has reflection support -no xcode ui bindings jackson or gson should work supports dynamic .xib loading

Slide 63

Slide 63 text

No content

Slide 64

Slide 64 text

code reuse?

Slide 65

Slide 65 text

dependency injection need you

Slide 66

Slide 66 text

Service Service Android Impl iOS Impl shared client- specific

Slide 67

Slide 67 text

which di?

Slide 68

Slide 68 text

which di? guice or weld!

Slide 69

Slide 69 text

which di? guice or weld! no code generation sorry on and

Slide 70

Slide 70 text

ever heard of Dagger? http://square.github.io/dagger/

Slide 71

Slide 71 text

COMPILE-TIME CODE GENERATION!* Dagger features

Slide 72

Slide 72 text

COMPILE-TIME CODE GENERATION!* Dagger features *partially

Slide 73

Slide 73 text

COMPILE-TIME CODE GENERATION!* Dagger features *partially sorry won’t work on and

Slide 74

Slide 74 text

ever heard of Dagger 2.0? http://google.github.io/dagger/

Slide 75

Slide 75 text

COMPILE-TIME CODE GENERATION! Dagger 2.0 features

Slide 76

Slide 76 text

COMPILE-TIME CODE GENERATION! Dagger 2.0 features will work on and

Slide 77

Slide 77 text

No content

Slide 78

Slide 78 text

Dreams of the future past -common validation -common localization -common resources -common persistence jsr-303

Slide 79

Slide 79 text

q&a