Slide 1

Slide 1 text

#droidconae Kotlin: Server-Client @inyaki_mwc

Slide 2

Slide 2 text

#droidconae WORA

Slide 3

Slide 3 text

#droidconae Write once run anywhere WORA

Slide 4

Slide 4 text

#droidconae

Slide 5

Slide 5 text

#droidconae

Slide 6

Slide 6 text

#droidconae

Slide 7

Slide 7 text

#droidconae

Slide 8

Slide 8 text

#droidconae JavaZone 2013- Javapocalypse: https://www.youtube.com/watch?v=E3418SeWZfQ

Slide 9

Slide 9 text

#droidconae Kotlin Native

Slide 10

Slide 10 text

#droidconae - Windows (x86_64 only at the moment) - Linux (x86_64, arm32, MIPS, MIPS little endian) - MacOS (x86_64) - iOS (arm64 only) - Android (arm32 and arm64) - WebAssembly (wasm32 only) Kotlin Native

Slide 11

Slide 11 text

#droidconae - Windows (x86_64 only at the moment) - Linux (x86_64, arm32, MIPS, MIPS little endian) - MacOS (x86_64) - iOS (arm64 only) - Android (arm32 and arm64) - WebAssembly (wasm32 only) “Kotlin/Native is currently in development; preview releases are available for you to try” Kotlin Native

Slide 12

Slide 12 text

#droidconae - Windows (x86_64 only at the moment) - Linux (x86_64, arm32, MIPS, MIPS little endian) - MacOS (x86_64) - iOS (arm64 only) - Android (arm32 and arm64) - WebAssembly (wasm32 only) https://medium.com/@kpgalligan/droidcon-nyc-on-ios-with-kotlin-native-5a6a2749057e https://github.com/jetbrains/kotlinconf-spinner https://github.com/JetBrains/kotlin-native/tree/master/samples https://github.com/JetBrains/kotlin-native Kotlin Native

Slide 13

Slide 13 text

#droidconae - Windows (x86_64 only at the moment) - Linux (x86_64, arm32, MIPS, MIPS little endian) - MacOS (x86_64) - iOS (arm64 only) - Android (arm32 and arm64) - WebAssembly (wasm32 only) Kotlin Native https://blog.jetbrains.com/kotlin/2018/04/kotlinnative-plugin-for-appcode/

Slide 14

Slide 14 text

#droidconae Kotlin Today

Slide 15

Slide 15 text

#droidconae Kotlin Today

Slide 16

Slide 16 text

#droidconae Kotlin.js Kotlin Today

Slide 17

Slide 17 text

#droidconae Kotlin.js Kotlin Today

Slide 18

Slide 18 text

#droidconae Kotlin.js Kotlin Today

Slide 19

Slide 19 text

#droidconae Server Kotlin Today

Slide 20

Slide 20 text

#droidconae KTOR Vert.x Spring Kotlin Server

Slide 21

Slide 21 text

#droidconae KTOR Vert.x Spring https://vertx.io/ Kotlin Server

Slide 22

Slide 22 text

#droidconae KTOR Vert.x Spring Heroku AWS Google Cloud Kotlin Server

Slide 23

Slide 23 text

#droidconae KTOR Vert.x Spring Heroku AWS Google Cloud Kotlin Server

Slide 24

Slide 24 text

#droidconae Google Cloud

Slide 25

Slide 25 text

#droidconae App Engine

Slide 26

Slide 26 text

#droidconae App Engine

Slide 27

Slide 27 text

#droidconae App Engine

Slide 28

Slide 28 text

#droidconae

Slide 29

Slide 29 text

#droidconae client

Slide 30

Slide 30 text

#droidconae client

Slide 31

Slide 31 text

#droidconae local client repository domain remote client

Slide 32

Slide 32 text

#droidconae local client repository domain remote client

Slide 33

Slide 33 text

#droidconae local client repository domain remote SqlLite Retrofit GetTrades Sync JobScheduler client

Slide 34

Slide 34 text

#droidconae local client repository domain remote SqlLite Retrofit GetTrades Sync JobScheduler client

Slide 35

Slide 35 text

#droidconae local client repository domain remote SqlLite Retrofit GetTrades Sync JobScheduler client

Slide 36

Slide 36 text

#droidconae local client repository domain remote SqlLite Retrofit GetTrades Sync JobScheduler client

Slide 37

Slide 37 text

#droidconae

Slide 38

Slide 38 text

#droidconae

Slide 39

Slide 39 text

#droidconae

Slide 40

Slide 40 text

#droidconae

Slide 41

Slide 41 text

#droidconae

Slide 42

Slide 42 text

#droidconae server

Slide 43

Slide 43 text

#droidconae Google Cloud

Slide 44

Slide 44 text

#droidconae Google Cloud

Slide 45

Slide 45 text

#droidconae SDK Google Cloud curl https://sdk.cloud.google.com | bash

Slide 46

Slide 46 text

#droidconae SDK Google Cloud SDK App Engine Java gcloud components install app-engine-java

Slide 47

Slide 47 text

#droidconae SDK Google Cloud SDK App Engine Java Android Studio/IJ

Slide 48

Slide 48 text

#droidconae SDK Google Cloud SDK App Engine Java Android Studio/IJ App Engine Gradle Plugin https://github.com/GoogleCloudPlatform/app-gradle-plugin

Slide 49

Slide 49 text

#droidconae Demo

Slide 50

Slide 50 text

#droidconae Deploying

Slide 51

Slide 51 text

#droidconae create Project Google Cloud Deploying

Slide 52

Slide 52 text

#droidconae create Project Google Cloud gcloud auth login gcloud config set project Project_ID Deploying

Slide 53

Slide 53 text

#droidconae create Project Google Cloud gcloud auth login gcloud config set project Project_ID ./gradlew appengineDeploy https://kotlin-client-server.appspot.com/kotlin/v1/trades/1 Deploying

Slide 54

Slide 54 text

#droidconae Google Cloud

Slide 55

Slide 55 text

#droidconae Google Cloud https://cloud.google.com/appengine/

Slide 56

Slide 56 text

#droidconae Google Cloud https://cloud.google.com/appengine/ https://cloud.google.com/endpoints

Slide 57

Slide 57 text

#droidconae Google Cloud https://cloud.google.com/appengine/ https://cloud.google.com/endpoints https://cloud.google.com/datastore/

Slide 58

Slide 58 text

#droidconae Google Cloud client client client

Slide 59

Slide 59 text

#droidconae local server repository domain remote Server

Slide 60

Slide 60 text

#droidconae local server repository domain remote Datastore Retrofit GetTrades Sync Cron Cloud Endpoints Server

Slide 61

Slide 61 text

#droidconae local server repository domain remote Datastore Retrofit GetTrades Sync Cron Cloud Endpoints Objectify Server

Slide 62

Slide 62 text

#droidconae local server repository domain remote Retrofit GetTrades Sync Cron Cloud Endpoints Datastore Server

Slide 63

Slide 63 text

#droidconae local server repository domain remote Retrofit GetTrades Sync Cron Cloud Endpoints Datastore Server

Slide 64

Slide 64 text

#droidconae local server repository domain remote Retrofit GetTrades Sync Cron Cloud Endpoints Datastore Server

Slide 65

Slide 65 text

#droidconae local server repository domain remote Retrofit GetTrades Sync Cron Cloud Endpoints Datastore Server

Slide 66

Slide 66 text

#droidconae Problems

Slide 67

Slide 67 text

#droidconae Retrofit Problems

Slide 68

Slide 68 text

#droidconae Retrofit Problems

Slide 69

Slide 69 text

#droidconae Retrofit class CallWrapper( private val request: Request, private var executed: Boolean = false, private var cancelled: Boolean = false ) : Call Problems

Slide 70

Slide 70 text

#droidconae Retrofit class CallWrapper( private val request: Request, private var executed: Boolean = false, private var cancelled: Boolean = false ) : Call .callFactory(CallFactoryWrapper()) Problems

Slide 71

Slide 71 text

#droidconae Cron Problems

Slide 72

Slide 72 text

#droidconae Cron class CronService : HttpServlet() { override fun doGet(req: HttpServletRequest?, resp: HttpServletResponse?) { Problems

Slide 73

Slide 73 text

#droidconae Problems

Slide 74

Slide 74 text

#droidconae Problems None ;)

Slide 75

Slide 75 text

#droidconae Integration client/server local client/server repository domain remote

Slide 76

Slide 76 text

#droidconae server client :core GetTrades Integration client/server

Slide 77

Slide 77 text

#droidconae Demo

Slide 78

Slide 78 text

#droidconae @inyaki_mwc @inyaki_mwc [email protected]