Share
Embed
Transcript
57 slides
-
ࣗѐ • KAKAOPAY উ٘۽٘ • ) ਃӝਃ উ٘۽٘
• Է ݆ ѐߊо غ! ࠶۽Ӓ • GDG Seoul/Kotlin korea(ಕझ ࠘ )/٘۽٘աஎ -
kotlin • JetBrainsীࢲ 2011֙ ҕѐೠ ۽Ӓې߁ য • JVM ӝ߈
যݴ, Java৬ ࢚ഐ ഐജ 100% ਗ • ߄ ࠁ উೠ null ܻܳ ਗೠ • ഛ ೣࣻ, ো য়ߡ ۽٬ਸ ਗೠ • DSL(domain-specific languages)ਸ ਗೠ • coroutinesਸ ਗೠ -
kotlin • Developer: JetBrains - open source contributors • Stable
release: Kotlin 1.3.21 / February 6, 2019 • Filename : .kt • First appeared: 2011 • Rule of Effective Java -
kotlin native • ౣܽਸ ా೧ নೠ ۖಬ ѐߊ оמೞ. •
അ ਗೞח kotlin native • iOS (arm32, arm64, emulator x86_64) • MacOS (x86_64) • Android (arm32, arm64) • Windows (mingw x86_64) • Linux (x86_64, arm32, MIPS, MIPS little endian) • WebAssembly (wasm32) -
kotlin • Jetbrains IntelliJ IDEA, Android Studioীࢲ оמ • Ӓ
৻ Command lineਵ۽ ࠽٘ ജ҃ ҳ୷ оמ • Try Online ࢎীࢲب పझ оמ • https://play.kotlinlang.org -
Google ৵ ౣܽਸ? • 2017֙ Google I/Oীࢲ ౣܽਸ উ٘۽٘ ѐߊ
য۽ ఖ ೮ਸ ঌ۷ • নೠ ഥࢎীࢲ ౣܽਸ উਵ۽ ࢎਊ -
উ٘۽٘ ೠ҅ • ୭न ߄ܳ ਗೞӝ ਤ೧ࢲח • উ٘۽٘ ۖಬҗ
ࢎਊٜ ജ҃ ߸೧ঠ ೠ. • Java 1.8ਸ ࢎਊೞ۰ݶ ߹ب ߔನ ۄ࠳۞ܻܳ ഝਊ • ۈ അध, ੌࠗ झܿ ೣࣻ ࢎਊ ١ -
উ٘۽٘ ೠ҅ܳ ೧Ѿ ೞӝ ਤೠ ߑߨ • ౣܽਸ ഝਊೞח ߑߨ
• ࢜۽ যܳ ߓਕঠ ೞח ױ • Javaۢ ߡী ҳগ߉ ঋҊ ୭न য ಁ۞ਸ ण • Java৬ 100% ഐജ • inline, ۈ അध, झܿ ١ ߡী ޖҙೞѱ ࢎਊ оמ • ܖ౯ ࢎਊ оמ • উ٘۽٘ ജ҃ী ઁড হ. • زೞח ٘ח JDK 1.6ਸ ӝળਵ۽ ࠽٘ -
ҳӖҗ য়ۄ ޙઁ? • ౣܽਸ ࢎਊೠҊ ೧ࢲ JVMਸ ߩযա ঋח.
• ઃо? ই݃ب? Kotlin native۽ Ү೧ࠅ ࣻ ਸب -
Googleীࢲ ౣܽ ࢲನ ࣁ۲غҊ അ۱ ڪযթ উೠ ٘ ഝਊ оמ
@Nullable, @NonNull ݺदܳ ా೧ Java to kotlin ࢎਊী ب ػ ࢚ഐ ਊ оמ Kotlinীࢲח ߄ ӝ߈ ٘ܳ ਬ܂ѱ ࠛ۞ৢ ࣻ Ҋ, Javaীࢲח ౣܽਸ ਬ܂ѱ ࠛ۞ৢ ࣻ . -
Googleীࢲ ౣܽ ࢲನ Android Studioܳ ా೧ ࠽٘, ߸ജ ١ਸ ઁҕ
Kotlinী ਃೠ ۄ࠳۞ܻܳ Android KTX۽ ߓನ೧Ҋ Android 9(API 28)ࠗఠ ߄ ۄ࠳۞ܻীࢲ NPE(NullPointerException)ী ೠ ࢳ ನೣغয ѐߊী ଵҊ оמ Kotlin णਸ दೞח ؘ ب غח ৈ۞ ഋध ࢠ ٘ ઁҕ -
ೣࣻ അ ߨ [Ӕ] fun ೣࣻݺ(߸ٜࣻ: Type): ReturnType { [return]
} [Ӕ] ReturnType ೣࣻݺ(Type ߸ٜࣻ) { [return] } Kotlin Java -
ೣࣻ അ ߨ [Ӕ] fun ೣࣻݺ(߸ٜࣻ: Type): ReturnType { [return]
} [Ӕ] ReturnType ೣࣻݺ(Type ߸ٜࣻ) { [return] } Kotlin Java public/private/protected private/protected -
ೣࣻ അ ߨ [Ӕ] fun ೣࣻݺ(߸ٜࣻ: Type): ReturnType { [return]
} [Ӕ] ReturnType ೣࣻݺ(Type ߸ٜࣻ) { [return] } Kotlin Java Return type Return type -
ೣࣻ അ ߨ [Ӕ] fun ೣࣻݺ(߸ٜࣻ: Type): ReturnType { [return]
} [Ӕ] ReturnType ೣࣻݺ(Type ߸ٜࣻ) { [return] } Kotlin Java Function name Function name -
ೣࣻ അ ߨ [Ӕ] fun ೣࣻݺ(߸ٜࣻ: Type): ReturnType { [return]
} [Ӕ] ReturnType ೣࣻݺ(Type ߸ٜࣻ) { [return] } Kotlin Java Parameter Name Parameter Name -
ೣࣻ അ ߨ [Ӕ] fun ೣࣻݺ(߸ٜࣻ: Type): ReturnType { [return]
} [Ӕ] ReturnType ೣࣻݺ(Type ߸ٜࣻ) { [return] } Kotlin Java Parameter Type Parameter Type -
ೣࣻ അ ߨ [Ӕ] fun ೣࣻݺ(߸ٜࣻ: Type): ReturnType { [return]
} [Ӕ] ReturnType ೣࣻݺ(Type ߸ٜࣻ) { [return] } Kotlin Java Function block Function block -
ೣࣻ അ ߨ [Ӕ] fun ೣࣻݺ(߸ٜࣻ): ReturnType { [return] }
[Ӕ] ReturnType ೣࣻݺ(߸ٜࣻ) { [return] } Set fun setName(name: String) { // ... } return fun getName(): String { return "" } fun getName(): String = “" fun getName() = “" Kotlin Java -
ఋੑ Double 64 : 123.5 Float 32 : 123.5F/ 123.5f
Long 64 : 123L Int 32 : 123 Short 16 Byte 8 String Kotlin Java double 64 : 123.5 float 32 : 123.5F/ 123.5f long 64 : 123L int 32 : 123 short 16 byte 8 String ೠо ܲ ݽٚ Primitive Types ޙ۽ द -
߸ࣻ അ Kotlin Java [Ӕ] var/val <propertyName>[: <PropertyType>] [= <property_initializer>]
[<getter>] [<setter>] -> []ܳ ࢎਊೞח ࠗ࠙ ݽف ࢤۚ оמ [Ӕ] [static final] Type VariableName [= <initializer>] -> []ܳ ࢎਊೞח ࠗ࠙ ݽف ࢤۚ оמ -
߸ࣻ അ Kotlin Java [Ӕ] var/val <propertyName>[: <PropertyType>] [= <property_initializer>]
[<getter>] [<setter>] [Ӕ] [static final] Type VariableName [= <initializer>] public/private/protected private/protected -
߸ࣻ അ Kotlin Java [Ӕ] var/val <propertyName>[: <PropertyType>] [= <property_initializer>]
[<getter>] [<setter>] [Ӕ] [static final] Type VariableName [= <initializer>] ߸ࣻ -
߸ࣻ അ Kotlin Java [Ӕ] var/val <propertyName>[: <PropertyType>] [= <property_initializer>]
[<getter>] [<setter>] [Ӕ] [static final] Type VariableName [= <initializer>] ߸ࣻ ܴ ߸ࣻ ܴ -
߸ࣻ അ Kotlin Java [Ӕ] var/val <propertyName>[: <PropertyType>] [= <property_initializer>]
[<getter>] [<setter>] [Ӕ] [static final] Type VariableName [= <initializer>] ߸ࣻ type ߸ࣻ type -
߸ࣻ അ Kotlin Java [Ӕ] var/val <propertyName>[: <PropertyType>] [= <property_initializer>]
[<getter>] [<setter>] [Ӕ] [static final] Type VariableName [= <initializer>] ߸ࣻ ୡӝച ߸ࣻ ୡӝച -
߸ࣻ അ (mutable) Read/Write : var var variable: String =
"a" (inmutable) Read only : val val variable: String = "a" Kotlin Java (mutable) Read/Write String variable = "a"; (inmutable) Read only : fianl final String variable = "a"; -
: String? օܻ kotlin nullਸ ೲਊೞ۰ݶ ޛ(?) ݺद۽ nullਸ ࢎਊೡ
ࣻ . var variable variable = null Kotlin Java Javaীࢲח ઁٚ nullਸ ೲਊೡ ࣻ String variable = "a"; variable = null; Null can not be a value of a non-null type String = "a" -
Class അ ߨ class KotlinSample constructor(val a: String) { }
public class JavaSample { private final String a; public JavaSample(String a) { this.a = a; } } Kotlin class ܴਸ ॹҗ زदী ࢤࢿܳ Kotlin Java -
यӖహ അ object Eager public class Eager { private static
Eager instance = new Eager(); private Eager() {} public Eager getInstance() { return instance; } } Kotlin Java -
Higher-Order Functions - ೣࣻܳ ۄݫఠ۽ ׳, ೣࣻ return - lambdaܳ
ਊೞৈ ୷ড ഋక۽ ઁҕ - ߸ࣻ۽ ೣࣻܳ о ࣻ fun higherOrder(body: (Int, Int) -> Int) = body(20, 10) fun sum(a: Int, b: Int) = a + b fun minus(a: Int, b: Int) = a - b fun multiply(a: Int, b: Int) = a * b fun division(a: Int, b: Int) = a / b @Test fun test() { println(higherOrder(::sum)) // 30 println(higherOrder(::minus)) // 10 println(higherOrder(::multiply)) // 200 println(higherOrder(::division)) // 2 } Kotlin -
3 ೦ध val l: Int = if (b != null)
b.length else -1 Elvis Operator val l = b?.length ?: -1 int length = name != null ? name.length() : 0; Kotlin 3 ೦ध ઓೞ ঋইਃ Kotlin Java -
Infix notation infix fun Int.max(x: Int): Int = if (this
> x) this else x 1.max(15) public int max(int a, int b) { return a > b ? a : b; } max(1, 2); 1 max 15 infix ఃਕ٘ܳ ా೧ 1 max 15 ഋక۽ അ оמ ױ, ߸ࣻо 2ѐੋ ҃ী݅ оמ Kotlin Java -
String templates ਊೞӝ val name = "kotlin" val age =
10 val query = "Name: $name Age: $age" print : `Name: kotlin Age: 10` String name = "kotlin"; int age = 10; String query = "Name: " + name + " Age: " + age; print : "Name: kotlin Age: 10" ౣܽীࢲח + न ${߸ࣻݺ.߸ࣻ} ഋక۽ String ઑ оמೞ Kotlin Java -
Loop val arrayList = ArrayList<String>() for (item in arrayList) {
println("List item : $item") } ArrayList<String> arrayList = new ArrayList<>(); for (String s : arrayList) { System.out.println("List item : " + s); } Kotlin Java for (int i = 1; i <= 5; i++) { System.out.println("index : " + i); } for (x in 1..5) { println(x) } -
Convert • Java ੌীࢲ Java ޙߨਵ۽ ࢿ • Convert •
Command + option + Shift + k(ctrl + alt + shift + k) ా • ٘ ࠶۾ ਃೠ ࠗ࠙݅ ࠂࢎ ࠢৈ֍ӝ द Convert -
Convert द • Convert റ য়ܨ ٘ ࣻ • ޙߨ
࢚ য়ܨо ݆ਸ ࣻ ਵפ ରӔରӔ ӝࠄ ޙߨਸ ӝળਵ۽ ౣ ܽ Ҕਸ ࣻ • যו ب ण ബҗо աఋաݶ ٘ ӝ -
Java/Kotlin ഝਊद • @Nullable/@NonNullী ೞ! • Javaীࢲח ઁٚ null
ߊࢤೡ ࣻ . • ҃ NullPointerException ઁٚ ߊࢤ оמ • Null safe ߑߨਵ۽ Ӕ೧ࢲ NPE ߊࢤਸ ੋ. • value?.getXXXX -
ѾҴ • Java ࠁ рѾೠ അ • Java ߡҗ ޖҙೞѱ
୭न ݽ؍ যܳ ഝਊ оמ • ܖ౯ ഝਊਵ۽ Thread ࠁ औѱ ࠺زӝ ܻ оמ • NullPointerExceptionীࢲ ઑӘա݃ ߩযզ ࣻ ѱ উೠ null ܻ оמ • ୶റ Kotlin Native ߊਵ۽ নೠ ۖಬীࢲ ഝਊ оמࢿ