SlideShare a Scribd company logo
Off to a new Island!
Kotlin for backend development
Tobias Schneck / Simon Hofmann
26.05.2018
Kotlin
Agenda
• Introduction
• Kotlin Basics
• Variables, Constants
• Functions
• Classes
• Optionals
• Control Flow
• Extension Functions
• Lambdas
• Build Setup with Maven
• Spring Boot Webservice
Kotlin
Links
• Slides:
• GitHub Examples:
https://github.com/ConSol/KotlinSpringBoot
https://github.com/ConSol/KotlinBasics
tiny.cc/consol-hackaburg2018
Introduction
Kotlin
Why Kotlin?
Concise SafeInter-
operable
Tool-
friendly
Kotlin
Where to use?
JVM Android Browser Native
Variables, Constants
Kotlin
String myVariable = "Change me";
final String myConstant = "Can't change me";
var myVariable: String = "Change me“
val myConstant: String = "Can't change me"
Kotlin
String myVariable = "Change me";
final String myConstant = "Can't change me";
var myVariable: String = "Change me“
val myConstant: String = "Can't change me"
Kotlin
String myVariable = "Change me";
final String myConstant = "Can't change me";
var myVariable = "Change me“
val myConstant = "Can't change me"
Functions
Kotlin
Functions
fun bark(times: Int): String {
return "Wuff".repeat(times)
}
Kotlin
Functions
fun bark(times: Int): String {
return "Wuff".repeat(times)
}
Function keyword Return type
Kotlin
Functions
fun bark(times: Int = 1): String {
return "Wuff".repeat(times)
}
Default value
Kotlin
Functions
fun bark(times: Int): String {
return "Wuff".repeat(times)
}
Kotlin
Functions
fun bark(times: Int = 1) = "Wuff".repeat(times)
Kotlin
Functions
dog.bark()
dog.bark(3)
dog.bark(times = 3)
Classes and Inheritance
Kotlin
Classes
public class JavaDTO{
private int id;
private String name;
public JavaDTO(int id, String name) {
this.id = id;
this.name = name;
}
public String getName() {
return name;
}
public void setName(final String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
class KotlinDTO(var id: Int, var name: String)
Kotlin
Classes
class KotlinDTO(var id: Int, var name: String)
Kotlin
Classes
class KotlinDTO(var id: Int, var name: String)
Primary Constructor
Kotlin
class KotlinDTO(var id: Int, var name: String) {
constructor(json: JSONObject) :
this(json.getInt(”id"), json.getString(”name")) {
}
}
Classes
Secondary
Constructor
Has to call
Primary Constructor
Kotlin
Classes
class KotlinDTO(var id: Int, var name: String) {
override fun toString() {
return ”ID: $id, Name: $name"
}
}
String template
Kotlin
Classes
val dto = KotlinDTO(1, ”First DTO")
No more “new”
Kotlin
Classes
val secondDTO = KotlinDTO(name = ”FooBar“, id = 10)
Kotlin
Getters and Setters
class Person(var name: String, var age: Int)
Default getters and setters are generated
Kotlin
Getters and Setters
private class Person {
var name = "defaultName"
set(value) {
// Special logic
}
get() = "Person $field"
}
Overwrite default getters
and setters
Kotlin
Getters and Setters
private class Person {
var name = "defaultName"
set(value) {
// Special logic
}
get() = "Person $field"
}
@Test
fun testPerson() {
val p = Person()
p.name = "unusedValue"
assertEquals("Person defaultName", p.name)
}
no value set!
Kotlin
Property Access
val human = Person()
human.name = ”Simon“
val personName = human.name
Time to hack!
https://github.com/ConSol/KotlinBasics
Time to hack!
On 1_SimpleDogClass.kt
Kotlin
Solution
private class Dog(val name: String, val type: String) {
fun bark(times: Int = 1): String {
return "Wuff".repeat(n = times)
}
}
@Test
fun testMyNewDogClass() {
val bruno = Dog("Bruno", "Labrador")
assertEquals("WuffWuffWuff", bruno.bark(3))
}
Optionals
Kotlin
Java: Nullpointer exceptions
public void sayHello(Dog otherDog){
System.out.println(“Wuff, "+ otherDog.getName());
}
Kotlin
Java: Nullpointer exceptions
public void sayHello(Dog otherDog){
System.out.println(“Wuff, "+ otherDog.getName());
}
sayHello(null);
Kotlin
Java: Nullpointer exceptions
public void sayHello(Dog otherDog){
System.out.println(“Wuff, "+ otherDog.getName());
}
sayHello(null);
Kotlin
Kotlin: Built-in null-safety
fun sayHello(dog: Dog) {
println("Hi, " + dog.name);
}
Kotlin
Kotlin: Built-in null-safety
fun sayHello(otherDog: Dog) {
println("Hi, " + dog.name);
}
sayHello(null);
Kotlin
Kotlin: Built-in null-safety
fun sayHello(otherDog: Dog) {
println("Hi, " + dog.name);
}
sayHello(null);
Kotlin
Kotlin: Built-in null-safety
var dog: Dog = null
Kotlin
Explicit nullable types
var dog: Dog? = null
Kotlin
Calling Optionals
val dog: Dog? = findDog()
dog.bark()
Kotlin
Calling Optionals
val dog: Dog? = findDog()
if(dog != null){
dog.bark(3)
}
Kotlin
Safe Call Operator
val dog: Dog? = findDog()
dog?.bark()
Kotlin
For all NPE lovers (The not-null assertion operator)
val dog: Dog? = findDog()
dog!!.bark()
Kotlin
Elvis Operator
val foundDog = findDog()
val myDog = if (foundDog != null) {
foundDog
} else {
buyNewDog()
}
Kotlin
Elvis Operator
val myDog = findDog() ?: buyNewDog()
Kotlin
Elvis Operator
val myDog = findDog() ?: buyNewDog()
Kotlin
Automatic casting
if(dog != null){
dog.bark(3)
}
val anyObject: Any = getAnimal()
if(anyObject is Dog){
anyObject.bark()
}
Time to hack!
Time to hack!
On 2_Optionals.kt
Kotlin
Solution
private fun letDogBark(dog: Dog?) {
// TODO TASK 1
dog?.bark()
}
private fun getDogName(dog: Dog?): String {
// TODO TASK 2
return dog?.name ?: "No dog found"
}
private fun getNameOf(any: Any): String {
// TODO TASK 3
return (any as? Dog)?.name ?: "type unknown"
}
Control Flow
Kotlin
For Loop
val dogs = getDogs()
for (dog in dogs){
dog.bark()
}
Kotlin
For Loop
val dogs = getDogs()
for (index in 0..10){
dogs[index].bark()
}
Range Operator
Kotlin
For Loop
for (index in 0..10){
print(index)
}
>>> 012345678910
Ranges are
inclusive
Kotlin
For Loop
for (index in 10 downTo 1){
print(index)
}
>>> 10987654321
Kotlin
When switch becomes more powerful
fun getDogPluralString(dogCount: Int): String {
}
Kotlin
When switch becomes more powerful
fun getDogPluralString(dogCount: Int): String {
when(dogCount){
}
}
Kotlin
When switch becomes more powerful
fun getDogPluralString(dogCount: Int): String {
when(dogCount){
0 -> return ”No dogs"
1 -> return ”One dog"
else -> return "$dogCount dogs"
}
}
Kotlin
When switch becomes more powerful
fun getDogPluralString(dogCount: Int): String {
when(dogCount){
0 -> return ”No dogs"
1 -> return ”One dog"
else -> return "$dogCount dogs"
}
}
Kotlin
When switch becomes more powerful
fun getDogPluralString(dogCount: Int): String {
return when(dogCount){
0 -> ”No dogs"
1 -> ”One dog"
else -> "$dogCount dogs"
}
}
Kotlin
When switch becomes more powerful
fun getDogPluralString(dogCount: Int): String {
return when(dogCount){
0 -> ”No dogs"
1 -> ”One dog"
else -> "$dogCount dogs"
}
}
Kotlin
When switch becomes more powerful
fun getDogPluralString(dogCount: Int) = when (dogCount) {
0 -> ”No dogs"
1 -> ”One dog"
else -> "$dogCount dogs"
}
Kotlin
When switch becomes more powerful
fun getDogPluralString(dogCount: Int) = when (dogCount) {
0 -> ”No dogs"
1 -> ”One dog”
2..4 -> “Many dogs
else -> ”Too many dogs"
}
Kotlin
When without argument
fun evaluatePassword(password: String): String {
return when {
}
}
Kotlin
When without argument
fun evaluatePassword(password: String): String {
return when {
password.isEmpty() -> ”Please enter password"
password.length < 5 -> ”Password not long enough"
!password.containsNumber() -> ”Password must contain a number"
else -> ”Password valid"
}
}
Time to hack!
Time to hack!
On 3_ControlFlow.kt
Kotlin
Solution
// TODO TASK 1
fun findDogOwnerName(dog: Dog): String? {
return when(dog.name){
"Bruno" -> "Hans"
"Ignatz" -> "Peter"
else -> null
}
}
// TODO TASK 2
fun ageToString(dog: Dog): String {
return when(dog.age){
0,1 -> "Baby Dog"
in 2..8 -> "Normal Dog"
else -> "Old Dog"
}
}
Extensions
Kotlin
Extension Functions
fun Int.isEven(): Boolean {
return this % 2 == 0
}
Kotlin
Extension Functions
fun Int.isEven(): Boolean {
return this % 2 == 0
}
println(1.isEven()) // false
println(2.isEven()) // true
println(3.isEven()) // false
Time to hack!
Time to hack!
On 4_Extensions.kt
Kotlin
Solution
// TODO TAKS 1
fun String.scream(): String {
return this.toUpperCase()+"!!!"
}
// TODO TASK 2
private fun applyAllCapsExtension(text: String): String {
return text.scream()
}
@Test
fun testAllCapsDogLanguage() {
// TODO TASK 3
val allCapsDogLanguage = "Ich habe ganz viel Hunger".barkify().scream()
assertEquals("WUFF WUFF WUFF WUFF WUFF!!!", allCapsDogLanguage)
}
Lambdas
Kotlin
Lambda Functions
val dog = Dog("Bruno")
val funRef = dog::bark
funRef(times = 3)
returns the function itself
Kotlin
Lambda Functions
val dog = Dog("Bruno")
val greetDog: (Dog) -> String = { dog -> "Hey! ${dog.name}" }
println(greetDog(dog))
Kotlin
Lambda Functions
val dog = Dog("Bruno")
val greetDog: (Dog) -> String = { dog -> "Hey! ${dog.name}" }
println(greetDog(dog))
Parameter type Return type
Kotlin
Lambda Functions
val dog = Dog("Bruno")
val greetDog: (Dog) -> String = { dog -> "Hey! ${dog.name}" }
println(greetDog(dog))
Parameter name Lambda Body
Kotlin
Filter Functions
Kotlin
Filter Functions
Kotlin
Filter Functions
var dogs: List<Dog> = animals.filter(
…
)
Kotlin
Filter Predicate
{ animal -> animal is Dog }
Kotlin
Filter Functions
var dogs = animals.filter({ animal ->
animal is Dog
})
Kotlin
Filter Functions
var dogs = animals.filter(){ animal ->
animal is Dog
}
Kotlin
Filter Functions
var dogs = animals.filter { animal ->
animal is Dog
}
Kotlin
Filter Functions
var dogs = animals.filter { it is Dog }
Kotlin
Mapping Functions
age = 8 age = 2 age = 3age = 6 age = 11
Kotlin
Mapping Functions
age = 8 age = 2 age = 3age = 6 age = 11
age = 8 age = 2 age = 3age = 6 age = 11
Kotlin
Mapping Functions
val dogs = listOf(Dog("Bello",age = 8),Dog("Rex",age = 2),
Dog("Lessi",age = 6),Dog("Bruno",age = 3),Dog("Bello",age = 11))
Kotlin
Mapping Functions
val dogs = listOf(Dog("Bello",age = 8),Dog("Rex",age = 2),
Dog("Lessi",age = 6),Dog("Bruno",age = 3),Dog("Bello",age = 11))
val dogAges = dogs.map { … }
Kotlin
Map Predicate
{ dog -> dog.age }
age = 8 age = 8
Kotlin
Mapping Functions
val dogs = listOf(Dog("Bello",age = 8),Dog("Rex",age = 2),
Dog("Lessi",age = 6),Dog("Bruno",age = 3),Dog("Bello",age = 11))
val dogAges = dogs.map { dog -> dog.age }
Kotlin
Mapping Functions
val dogs = listOf(Dog("Bello",age = 8),Dog("Rex",age = 2),
Dog("Lessi",age = 6),Dog("Bruno",age = 3),Dog("Bello",age = 11))
val dogAges = dogs.map { it.age }
Kotlin
Mapping Functions
val dogs = listOf(Dog("Bello",age = 8),Dog("Rex",age = 2),
Dog("Lessi",age = 6),Dog("Bruno",age = 3),Dog("Bello",age = 11))
val dogAges = dogs.map { it.age }
val average = dogAges.average() (= 6)
Kotlin
Map / Filter Combinations
val oldDogAgeAverage = dogs.map { it.age }.filter { it > 5 }.average()
Time to hack!
On 5_Lambdas.kt
Kotlin
Solution
// TODO TASK 1
private fun findDogNames(dogs: List<Dog>): List<String> {
return dogs.map { it.name }
}
// TODO TASK 2
private fun findOldDogs(dogs: List<Dog>): List<Dog> {
return dogs.filter { it.age > 5 }
}
// TODO TASK 3
private fun findNamesOfOldDogs(dogs: List<Dog>): List<String> {
return dogs.filter { it.age > 5 }.map { it.name }
}
Maven Setup
Kotlin
<dependencies>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib</artifactId>
<version>${kotlin.version}</version>
</dependency>
<!--TEST Dependencies-->
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-test-junit</artifactId>
<version>${kotlin.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<sourceDirectory>${project.basedir}/src/main/kotlin</sourceDirectory>
<testSourceDirectory>${project.basedir}/src/test/kotlin</testSourceDirectory>
<plugins>
<plugin>
<artifactId>kotlin-maven-plugin</artifactId>
<groupId>org.jetbrains.kotlin</groupId>
<version>${kotlin.version}</version>
<configuration/>
<executions>
<execution>
<id>compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
<!--TEST -->
<execution>
<id>test-compile</id>
<phase>test-compile</phase>
<goals>
<goal>test-compile</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
Spring Boot Webservice
Kotlin
https://start.spring.io/
Basic Project Setup
Time to hack!
https://github.com/ConSol/KotlinSpringBoot
Any questions?
Thank you!
ConSol
Consulting & Solutions Software GmbH
Franziskanerstr. 38
D-81669 Munich
Germany
Tel.: +49-89-45841-100
info@consol.de
www.consol.com
Twitter: @consol_de

More Related Content

What's hot

Nice to meet Kotlin
Nice to meet KotlinNice to meet Kotlin
Nice to meet Kotlin
Jieyi Wu
 
D-Talk: What's awesome about Ruby 2.x and Rails 4
D-Talk: What's awesome about Ruby 2.x and Rails 4D-Talk: What's awesome about Ruby 2.x and Rails 4
D-Talk: What's awesome about Ruby 2.x and Rails 4
Jan Berdajs
 
Droidcon Poland - From Kotlin to Machine Code
Droidcon Poland - From Kotlin to Machine CodeDroidcon Poland - From Kotlin to Machine Code
Droidcon Poland - From Kotlin to Machine Code
Tomasz Polanski
 
Pg py-and-squid-pypgday
Pg py-and-squid-pypgdayPg py-and-squid-pypgday
Pg py-and-squid-pypgday
PostgreSQL Experts, Inc.
 
Euro python2011 High Performance Python
Euro python2011 High Performance PythonEuro python2011 High Performance Python
Euro python2011 High Performance Python
Ian Ozsvald
 
Python Performance 101
Python Performance 101Python Performance 101
Python Performance 101Ankur Gupta
 
Kotlin Coroutines. Flow is coming
Kotlin Coroutines. Flow is comingKotlin Coroutines. Flow is coming
Kotlin Coroutines. Flow is coming
Kirill Rozov
 
The Ring programming language version 1.8 book - Part 18 of 202
The Ring programming language version 1.8 book - Part 18 of 202The Ring programming language version 1.8 book - Part 18 of 202
The Ring programming language version 1.8 book - Part 18 of 202
Mahmoud Samir Fayed
 
Kotlin collections
Kotlin collectionsKotlin collections
Kotlin collections
Myeongin Woo
 
Do you Promise?
Do you Promise?Do you Promise?
Do you Promise?
jungkees
 
Real Time Analytics - Stream Processing (Colombo big data meetup 18/05/2017)
Real Time Analytics - Stream Processing (Colombo big data meetup 18/05/2017)Real Time Analytics - Stream Processing (Colombo big data meetup 18/05/2017)
Real Time Analytics - Stream Processing (Colombo big data meetup 18/05/2017)
mahesh madushanka
 
Android & Kotlin - The code awakens #02
Android & Kotlin - The code awakens #02Android & Kotlin - The code awakens #02
Android & Kotlin - The code awakens #02
Omar Miatello
 
The Ring programming language version 1.7 book - Part 43 of 196
The Ring programming language version 1.7 book - Part 43 of 196The Ring programming language version 1.7 book - Part 43 of 196
The Ring programming language version 1.7 book - Part 43 of 196
Mahmoud Samir Fayed
 
The Ring programming language version 1.9 book - Part 20 of 210
The Ring programming language version 1.9 book - Part 20 of 210The Ring programming language version 1.9 book - Part 20 of 210
The Ring programming language version 1.9 book - Part 20 of 210
Mahmoud Samir Fayed
 
Android & Kotlin - The code awakens #03
Android & Kotlin - The code awakens #03Android & Kotlin - The code awakens #03
Android & Kotlin - The code awakens #03
Omar Miatello
 
Don't do this
Don't do thisDon't do this
Don't do this
Richard Jones
 
Vapor – Swift is not only for iOS anymore
Vapor – Swift is not only for iOS anymoreVapor – Swift is not only for iOS anymore
Vapor – Swift is not only for iOS anymore
Milan Vít
 
Kotlin - lo Swift di Android
Kotlin - lo Swift di AndroidKotlin - lo Swift di Android
Kotlin - lo Swift di Android
Omar Miatello
 
Intro to Pig UDF
Intro to Pig UDFIntro to Pig UDF
Intro to Pig UDF
Chris Wilkes
 
The Ring programming language version 1.8 book - Part 45 of 202
The Ring programming language version 1.8 book - Part 45 of 202The Ring programming language version 1.8 book - Part 45 of 202
The Ring programming language version 1.8 book - Part 45 of 202
Mahmoud Samir Fayed
 

What's hot (20)

Nice to meet Kotlin
Nice to meet KotlinNice to meet Kotlin
Nice to meet Kotlin
 
D-Talk: What's awesome about Ruby 2.x and Rails 4
D-Talk: What's awesome about Ruby 2.x and Rails 4D-Talk: What's awesome about Ruby 2.x and Rails 4
D-Talk: What's awesome about Ruby 2.x and Rails 4
 
Droidcon Poland - From Kotlin to Machine Code
Droidcon Poland - From Kotlin to Machine CodeDroidcon Poland - From Kotlin to Machine Code
Droidcon Poland - From Kotlin to Machine Code
 
Pg py-and-squid-pypgday
Pg py-and-squid-pypgdayPg py-and-squid-pypgday
Pg py-and-squid-pypgday
 
Euro python2011 High Performance Python
Euro python2011 High Performance PythonEuro python2011 High Performance Python
Euro python2011 High Performance Python
 
Python Performance 101
Python Performance 101Python Performance 101
Python Performance 101
 
Kotlin Coroutines. Flow is coming
Kotlin Coroutines. Flow is comingKotlin Coroutines. Flow is coming
Kotlin Coroutines. Flow is coming
 
The Ring programming language version 1.8 book - Part 18 of 202
The Ring programming language version 1.8 book - Part 18 of 202The Ring programming language version 1.8 book - Part 18 of 202
The Ring programming language version 1.8 book - Part 18 of 202
 
Kotlin collections
Kotlin collectionsKotlin collections
Kotlin collections
 
Do you Promise?
Do you Promise?Do you Promise?
Do you Promise?
 
Real Time Analytics - Stream Processing (Colombo big data meetup 18/05/2017)
Real Time Analytics - Stream Processing (Colombo big data meetup 18/05/2017)Real Time Analytics - Stream Processing (Colombo big data meetup 18/05/2017)
Real Time Analytics - Stream Processing (Colombo big data meetup 18/05/2017)
 
Android & Kotlin - The code awakens #02
Android & Kotlin - The code awakens #02Android & Kotlin - The code awakens #02
Android & Kotlin - The code awakens #02
 
The Ring programming language version 1.7 book - Part 43 of 196
The Ring programming language version 1.7 book - Part 43 of 196The Ring programming language version 1.7 book - Part 43 of 196
The Ring programming language version 1.7 book - Part 43 of 196
 
The Ring programming language version 1.9 book - Part 20 of 210
The Ring programming language version 1.9 book - Part 20 of 210The Ring programming language version 1.9 book - Part 20 of 210
The Ring programming language version 1.9 book - Part 20 of 210
 
Android & Kotlin - The code awakens #03
Android & Kotlin - The code awakens #03Android & Kotlin - The code awakens #03
Android & Kotlin - The code awakens #03
 
Don't do this
Don't do thisDon't do this
Don't do this
 
Vapor – Swift is not only for iOS anymore
Vapor – Swift is not only for iOS anymoreVapor – Swift is not only for iOS anymore
Vapor – Swift is not only for iOS anymore
 
Kotlin - lo Swift di Android
Kotlin - lo Swift di AndroidKotlin - lo Swift di Android
Kotlin - lo Swift di Android
 
Intro to Pig UDF
Intro to Pig UDFIntro to Pig UDF
Intro to Pig UDF
 
The Ring programming language version 1.8 book - Part 45 of 202
The Ring programming language version 1.8 book - Part 45 of 202The Ring programming language version 1.8 book - Part 45 of 202
The Ring programming language version 1.8 book - Part 45 of 202
 

Similar to Kotlin for backend development (Hackaburg 2018 Regensburg)

Introduction to Kotlin
Introduction to KotlinIntroduction to Kotlin
Introduction to Kotlin
Oswald Campesato
 
Kotlin on android
Kotlin on androidKotlin on android
Kotlin on android
Kurt Renzo Acosta
 
Kotlin
KotlinKotlin
Kotlin Generation
Kotlin GenerationKotlin Generation
Kotlin Generation
Minseo Chayabanjonglerd
 
Privet Kotlin (Windy City DevFest)
Privet Kotlin (Windy City DevFest)Privet Kotlin (Windy City DevFest)
Privet Kotlin (Windy City DevFest)
Cody Engel
 
Kotlin for Android Developers - 3
Kotlin for Android Developers - 3Kotlin for Android Developers - 3
Kotlin for Android Developers - 3
Mohamed Nabil, MSc.
 
Effective Java and Kotlin
Effective Java and KotlinEffective Java and Kotlin
Effective Java and Kotlin
경주 전
 
Current State of Coroutines
Current State of CoroutinesCurrent State of Coroutines
Current State of Coroutines
Guido Pio Mariotti
 
What’s new in Kotlin?
What’s new in Kotlin?What’s new in Kotlin?
What’s new in Kotlin?
Squareboat
 
Save time with kotlin in android development
Save time with kotlin in android developmentSave time with kotlin in android development
Save time with kotlin in android development
Adit Lal
 
Building Mobile Apps with Android
Building Mobile Apps with AndroidBuilding Mobile Apps with Android
Building Mobile Apps with Android
Kurt Renzo Acosta
 
Reducing boilerplate with Kotlin, KTX and Kotlin Android Extensions
Reducing boilerplate with Kotlin, KTX and Kotlin Android ExtensionsReducing boilerplate with Kotlin, KTX and Kotlin Android Extensions
Reducing boilerplate with Kotlin, KTX and Kotlin Android Extensions
Patrick Steiger
 
Kotlin 1.2: Sharing code between platforms
Kotlin 1.2: Sharing code between platformsKotlin 1.2: Sharing code between platforms
Kotlin 1.2: Sharing code between platforms
Kirill Rozov
 
Why Spring <3 Kotlin
Why Spring <3 KotlinWhy Spring <3 Kotlin
Why Spring <3 Kotlin
VMware Tanzu
 
Intro to Kotlin
Intro to KotlinIntro to Kotlin
Intro to Kotlin
Magda Miu
 
Practical tips for building apps with kotlin
Practical tips for building apps with kotlinPractical tips for building apps with kotlin
Practical tips for building apps with kotlin
Adit Lal
 
TDC218SP | Trilha Kotlin - DSLs in a Kotlin Way
TDC218SP | Trilha Kotlin - DSLs in a Kotlin WayTDC218SP | Trilha Kotlin - DSLs in a Kotlin Way
TDC218SP | Trilha Kotlin - DSLs in a Kotlin Way
tdc-globalcode
 
Introduction kot iin
Introduction kot iinIntroduction kot iin
Introduction kot iin
Jedsada Tiwongvokul
 
Kotlin intro
Kotlin introKotlin intro
Kotlin intro
Elifarley Cruz
 
Kotlin for Android devs
Kotlin for Android devsKotlin for Android devs
Kotlin for Android devs
Adit Lal
 

Similar to Kotlin for backend development (Hackaburg 2018 Regensburg) (20)

Introduction to Kotlin
Introduction to KotlinIntroduction to Kotlin
Introduction to Kotlin
 
Kotlin on android
Kotlin on androidKotlin on android
Kotlin on android
 
Kotlin
KotlinKotlin
Kotlin
 
Kotlin Generation
Kotlin GenerationKotlin Generation
Kotlin Generation
 
Privet Kotlin (Windy City DevFest)
Privet Kotlin (Windy City DevFest)Privet Kotlin (Windy City DevFest)
Privet Kotlin (Windy City DevFest)
 
Kotlin for Android Developers - 3
Kotlin for Android Developers - 3Kotlin for Android Developers - 3
Kotlin for Android Developers - 3
 
Effective Java and Kotlin
Effective Java and KotlinEffective Java and Kotlin
Effective Java and Kotlin
 
Current State of Coroutines
Current State of CoroutinesCurrent State of Coroutines
Current State of Coroutines
 
What’s new in Kotlin?
What’s new in Kotlin?What’s new in Kotlin?
What’s new in Kotlin?
 
Save time with kotlin in android development
Save time with kotlin in android developmentSave time with kotlin in android development
Save time with kotlin in android development
 
Building Mobile Apps with Android
Building Mobile Apps with AndroidBuilding Mobile Apps with Android
Building Mobile Apps with Android
 
Reducing boilerplate with Kotlin, KTX and Kotlin Android Extensions
Reducing boilerplate with Kotlin, KTX and Kotlin Android ExtensionsReducing boilerplate with Kotlin, KTX and Kotlin Android Extensions
Reducing boilerplate with Kotlin, KTX and Kotlin Android Extensions
 
Kotlin 1.2: Sharing code between platforms
Kotlin 1.2: Sharing code between platformsKotlin 1.2: Sharing code between platforms
Kotlin 1.2: Sharing code between platforms
 
Why Spring <3 Kotlin
Why Spring <3 KotlinWhy Spring <3 Kotlin
Why Spring <3 Kotlin
 
Intro to Kotlin
Intro to KotlinIntro to Kotlin
Intro to Kotlin
 
Practical tips for building apps with kotlin
Practical tips for building apps with kotlinPractical tips for building apps with kotlin
Practical tips for building apps with kotlin
 
TDC218SP | Trilha Kotlin - DSLs in a Kotlin Way
TDC218SP | Trilha Kotlin - DSLs in a Kotlin WayTDC218SP | Trilha Kotlin - DSLs in a Kotlin Way
TDC218SP | Trilha Kotlin - DSLs in a Kotlin Way
 
Introduction kot iin
Introduction kot iinIntroduction kot iin
Introduction kot iin
 
Kotlin intro
Kotlin introKotlin intro
Kotlin intro
 
Kotlin for Android devs
Kotlin for Android devsKotlin for Android devs
Kotlin for Android devs
 

More from Tobias Schneck

Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Tobias Schneck
 
Kubernetes in the Manufacturing Line @KubeCon EU Valencia 2022
Kubernetes in the Manufacturing Line  @KubeCon EU Valencia 2022 Kubernetes in the Manufacturing Line  @KubeCon EU Valencia 2022
Kubernetes in the Manufacturing Line @KubeCon EU Valencia 2022
Tobias Schneck
 
$ kubectl hacking @DevOpsCon Berlin 2019
$ kubectl hacking @DevOpsCon Berlin 2019$ kubectl hacking @DevOpsCon Berlin 2019
$ kubectl hacking @DevOpsCon Berlin 2019
Tobias Schneck
 
Will ARM be the new Mainstream in our Data Centers? @Rejekts Paris 2024
 Will ARM be the new Mainstream in our Data Centers? @Rejekts Paris 2024 Will ARM be the new Mainstream in our Data Centers? @Rejekts Paris 2024
Will ARM be the new Mainstream in our Data Centers? @Rejekts Paris 2024
Tobias Schneck
 
Kubermatic How to Migrate 100 Clusters from On-Prem to Google Cloud Without D...
Kubermatic How to Migrate 100 Clusters from On-Prem to Google Cloud Without D...Kubermatic How to Migrate 100 Clusters from On-Prem to Google Cloud Without D...
Kubermatic How to Migrate 100 Clusters from On-Prem to Google Cloud Without D...
Tobias Schneck
 
ClusterAPI Overview - Managing multi-cloud Kubernetes Clusters - k8s Meetup@v...
ClusterAPI Overview - Managing multi-cloud Kubernetes Clusters - k8s Meetup@v...ClusterAPI Overview - Managing multi-cloud Kubernetes Clusters - k8s Meetup@v...
ClusterAPI Overview - Managing multi-cloud Kubernetes Clusters - k8s Meetup@v...
Tobias Schneck
 
Creating Kubernetes multi clusters with ClusterAPI @ Stuttgart Kubernetes Meetup
Creating Kubernetes multi clusters with ClusterAPI @ Stuttgart Kubernetes MeetupCreating Kubernetes multi clusters with ClusterAPI @ Stuttgart Kubernetes Meetup
Creating Kubernetes multi clusters with ClusterAPI @ Stuttgart Kubernetes Meetup
Tobias Schneck
 
KubeCI - Cloud Native Continuous Delivery for Kubernetes
KubeCI - Cloud Native Continuous Delivery for KubernetesKubeCI - Cloud Native Continuous Delivery for Kubernetes
KubeCI - Cloud Native Continuous Delivery for Kubernetes
Tobias Schneck
 
Kubernetes Cluster API - managing the infrastructure of multi clusters (k8s ...
Kubernetes Cluster API - managing the infrastructure of  multi clusters (k8s ...Kubernetes Cluster API - managing the infrastructure of  multi clusters (k8s ...
Kubernetes Cluster API - managing the infrastructure of multi clusters (k8s ...
Tobias Schneck
 
UI Testing - Selenium? Rich-Clients? Containers? (SwanseaCon 2018)
UI Testing - Selenium? Rich-Clients? Containers? (SwanseaCon 2018)UI Testing - Selenium? Rich-Clients? Containers? (SwanseaCon 2018)
UI Testing - Selenium? Rich-Clients? Containers? (SwanseaCon 2018)
Tobias Schneck
 
Creating Kubernetes multi clusters with ClusterAPI in the Hetzner Cloud
Creating Kubernetes multi clusters with ClusterAPI in the Hetzner CloudCreating Kubernetes multi clusters with ClusterAPI in the Hetzner Cloud
Creating Kubernetes multi clusters with ClusterAPI in the Hetzner Cloud
Tobias Schneck
 
OpenShift Build Pipelines @ Lightweight Java User Group Meetup
OpenShift Build Pipelines @ Lightweight Java User Group MeetupOpenShift Build Pipelines @ Lightweight Java User Group Meetup
OpenShift Build Pipelines @ Lightweight Java User Group Meetup
Tobias Schneck
 
OpenShift-Build-Pipelines: Build -> Test -> Run! @JavaForumStuttgart
OpenShift-Build-Pipelines: Build -> Test -> Run! @JavaForumStuttgartOpenShift-Build-Pipelines: Build -> Test -> Run! @JavaForumStuttgart
OpenShift-Build-Pipelines: Build -> Test -> Run! @JavaForumStuttgart
Tobias Schneck
 
OpenShift-Build-Pipelines: Build ► Test ► Run!
OpenShift-Build-Pipelines: Build ► Test ► Run!OpenShift-Build-Pipelines: Build ► Test ► Run!
OpenShift-Build-Pipelines: Build ► Test ► Run!
Tobias Schneck
 
UI-Testing - Selenium? Rich-Clients? Containers? @APEX connect 2018
UI-Testing - Selenium? Rich-Clients? Containers? @APEX connect 2018UI-Testing - Selenium? Rich-Clients? Containers? @APEX connect 2018
UI-Testing - Selenium? Rich-Clients? Containers? @APEX connect 2018
Tobias Schneck
 
Continuous Testing: Integration- und UI-Testing mit OpenShift-Build-Pipelines
Continuous Testing: Integration- und UI-Testing mit OpenShift-Build-PipelinesContinuous Testing: Integration- und UI-Testing mit OpenShift-Build-Pipelines
Continuous Testing: Integration- und UI-Testing mit OpenShift-Build-Pipelines
Tobias Schneck
 
Testing - Selenium? Rich-Clients? Containers?
Testing - Selenium? Rich-Clients? Containers?Testing - Selenium? Rich-Clients? Containers?
Testing - Selenium? Rich-Clients? Containers?
Tobias Schneck
 
OOP2017: Containerized End-2-End Testing – automate it!
OOP2017: Containerized End-2-End Testing – automate it!OOP2017: Containerized End-2-End Testing – automate it!
OOP2017: Containerized End-2-End Testing – automate it!
Tobias Schneck
 
Containerized End-2-End Testing - Agile Testing Meetup at Süddeutsche Zeitung...
Containerized End-2-End Testing - Agile Testing Meetup at Süddeutsche Zeitung...Containerized End-2-End Testing - Agile Testing Meetup at Süddeutsche Zeitung...
Containerized End-2-End Testing - Agile Testing Meetup at Süddeutsche Zeitung...
Tobias Schneck
 
Containerized End-2-End-Testing - ContainerConf Mannheim
Containerized End-2-End-Testing - ContainerConf MannheimContainerized End-2-End-Testing - ContainerConf Mannheim
Containerized End-2-End-Testing - ContainerConf Mannheim
Tobias Schneck
 

More from Tobias Schneck (20)

Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
Kubernetes in the Manufacturing Line @KubeCon EU Valencia 2022
Kubernetes in the Manufacturing Line  @KubeCon EU Valencia 2022 Kubernetes in the Manufacturing Line  @KubeCon EU Valencia 2022
Kubernetes in the Manufacturing Line @KubeCon EU Valencia 2022
 
$ kubectl hacking @DevOpsCon Berlin 2019
$ kubectl hacking @DevOpsCon Berlin 2019$ kubectl hacking @DevOpsCon Berlin 2019
$ kubectl hacking @DevOpsCon Berlin 2019
 
Will ARM be the new Mainstream in our Data Centers? @Rejekts Paris 2024
 Will ARM be the new Mainstream in our Data Centers? @Rejekts Paris 2024 Will ARM be the new Mainstream in our Data Centers? @Rejekts Paris 2024
Will ARM be the new Mainstream in our Data Centers? @Rejekts Paris 2024
 
Kubermatic How to Migrate 100 Clusters from On-Prem to Google Cloud Without D...
Kubermatic How to Migrate 100 Clusters from On-Prem to Google Cloud Without D...Kubermatic How to Migrate 100 Clusters from On-Prem to Google Cloud Without D...
Kubermatic How to Migrate 100 Clusters from On-Prem to Google Cloud Without D...
 
ClusterAPI Overview - Managing multi-cloud Kubernetes Clusters - k8s Meetup@v...
ClusterAPI Overview - Managing multi-cloud Kubernetes Clusters - k8s Meetup@v...ClusterAPI Overview - Managing multi-cloud Kubernetes Clusters - k8s Meetup@v...
ClusterAPI Overview - Managing multi-cloud Kubernetes Clusters - k8s Meetup@v...
 
Creating Kubernetes multi clusters with ClusterAPI @ Stuttgart Kubernetes Meetup
Creating Kubernetes multi clusters with ClusterAPI @ Stuttgart Kubernetes MeetupCreating Kubernetes multi clusters with ClusterAPI @ Stuttgart Kubernetes Meetup
Creating Kubernetes multi clusters with ClusterAPI @ Stuttgart Kubernetes Meetup
 
KubeCI - Cloud Native Continuous Delivery for Kubernetes
KubeCI - Cloud Native Continuous Delivery for KubernetesKubeCI - Cloud Native Continuous Delivery for Kubernetes
KubeCI - Cloud Native Continuous Delivery for Kubernetes
 
Kubernetes Cluster API - managing the infrastructure of multi clusters (k8s ...
Kubernetes Cluster API - managing the infrastructure of  multi clusters (k8s ...Kubernetes Cluster API - managing the infrastructure of  multi clusters (k8s ...
Kubernetes Cluster API - managing the infrastructure of multi clusters (k8s ...
 
UI Testing - Selenium? Rich-Clients? Containers? (SwanseaCon 2018)
UI Testing - Selenium? Rich-Clients? Containers? (SwanseaCon 2018)UI Testing - Selenium? Rich-Clients? Containers? (SwanseaCon 2018)
UI Testing - Selenium? Rich-Clients? Containers? (SwanseaCon 2018)
 
Creating Kubernetes multi clusters with ClusterAPI in the Hetzner Cloud
Creating Kubernetes multi clusters with ClusterAPI in the Hetzner CloudCreating Kubernetes multi clusters with ClusterAPI in the Hetzner Cloud
Creating Kubernetes multi clusters with ClusterAPI in the Hetzner Cloud
 
OpenShift Build Pipelines @ Lightweight Java User Group Meetup
OpenShift Build Pipelines @ Lightweight Java User Group MeetupOpenShift Build Pipelines @ Lightweight Java User Group Meetup
OpenShift Build Pipelines @ Lightweight Java User Group Meetup
 
OpenShift-Build-Pipelines: Build -> Test -> Run! @JavaForumStuttgart
OpenShift-Build-Pipelines: Build -> Test -> Run! @JavaForumStuttgartOpenShift-Build-Pipelines: Build -> Test -> Run! @JavaForumStuttgart
OpenShift-Build-Pipelines: Build -> Test -> Run! @JavaForumStuttgart
 
OpenShift-Build-Pipelines: Build ► Test ► Run!
OpenShift-Build-Pipelines: Build ► Test ► Run!OpenShift-Build-Pipelines: Build ► Test ► Run!
OpenShift-Build-Pipelines: Build ► Test ► Run!
 
UI-Testing - Selenium? Rich-Clients? Containers? @APEX connect 2018
UI-Testing - Selenium? Rich-Clients? Containers? @APEX connect 2018UI-Testing - Selenium? Rich-Clients? Containers? @APEX connect 2018
UI-Testing - Selenium? Rich-Clients? Containers? @APEX connect 2018
 
Continuous Testing: Integration- und UI-Testing mit OpenShift-Build-Pipelines
Continuous Testing: Integration- und UI-Testing mit OpenShift-Build-PipelinesContinuous Testing: Integration- und UI-Testing mit OpenShift-Build-Pipelines
Continuous Testing: Integration- und UI-Testing mit OpenShift-Build-Pipelines
 
Testing - Selenium? Rich-Clients? Containers?
Testing - Selenium? Rich-Clients? Containers?Testing - Selenium? Rich-Clients? Containers?
Testing - Selenium? Rich-Clients? Containers?
 
OOP2017: Containerized End-2-End Testing – automate it!
OOP2017: Containerized End-2-End Testing – automate it!OOP2017: Containerized End-2-End Testing – automate it!
OOP2017: Containerized End-2-End Testing – automate it!
 
Containerized End-2-End Testing - Agile Testing Meetup at Süddeutsche Zeitung...
Containerized End-2-End Testing - Agile Testing Meetup at Süddeutsche Zeitung...Containerized End-2-End Testing - Agile Testing Meetup at Süddeutsche Zeitung...
Containerized End-2-End Testing - Agile Testing Meetup at Süddeutsche Zeitung...
 
Containerized End-2-End-Testing - ContainerConf Mannheim
Containerized End-2-End-Testing - ContainerConf MannheimContainerized End-2-End-Testing - ContainerConf Mannheim
Containerized End-2-End-Testing - ContainerConf Mannheim
 

Recently uploaded

Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
Matt Welsh
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
XfilesPro
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
Juraj Vysvader
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Globus
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
Ortus Solutions, Corp
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
Aftab Hussain
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Mind IT Systems
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
Hornet Dynamics
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
Globus
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Crescat
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
Fermin Galan
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
Alina Yurenko
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Globus
 
Game Development with Unity3D (Game Development lecture 3)
Game Development  with Unity3D (Game Development lecture 3)Game Development  with Unity3D (Game Development lecture 3)
Game Development with Unity3D (Game Development lecture 3)
abdulrafaychaudhry
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Łukasz Chruściel
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
Globus
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
Boni García
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
Deuglo Infosystem Pvt Ltd
 

Recently uploaded (20)

Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
 
Large Language Models and the End of Programming
Large Language Models and the End of ProgrammingLarge Language Models and the End of Programming
Large Language Models and the End of Programming
 
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, BetterWebinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
Webinar: Salesforce Document Management 2.0 - Smarter, Faster, Better
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data AnalysisProviding Globus Services to Users of JASMIN for Environmental Data Analysis
Providing Globus Services to Users of JASMIN for Environmental Data Analysis
 
BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024BoxLang: Review our Visionary Licenses of 2024
BoxLang: Review our Visionary Licenses of 2024
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
 
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
Custom Healthcare Software for Managing Chronic Conditions and Remote Patient...
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
 
Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604Orion Context Broker introduction 20240604
Orion Context Broker introduction 20240604
 
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)GOING AOT WITH GRAALVM FOR  SPRING BOOT (SPRING IO)
GOING AOT WITH GRAALVM FOR SPRING BOOT (SPRING IO)
 
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...
 
Game Development with Unity3D (Game Development lecture 3)
Game Development  with Unity3D (Game Development lecture 3)Game Development  with Unity3D (Game Development lecture 3)
Game Development with Unity3D (Game Development lecture 3)
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
 
First Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User EndpointsFirst Steps with Globus Compute Multi-User Endpoints
First Steps with Globus Compute Multi-User Endpoints
 
APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)APIs for Browser Automation (MoT Meetup 2024)
APIs for Browser Automation (MoT Meetup 2024)
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
 

Kotlin for backend development (Hackaburg 2018 Regensburg)