Slide 1

Slide 1 text

Kotlin 2.0 ਸ ా೧ 
 ঌইࠁח Kotlin੄ ޷ې Leonardo YongUk Kim 2023.05

Slide 2

Slide 2 text

2 Contents 01 02 03 04 05 Kotlin 2.0 ߂ ୶о੸ੋ ঱য੄ ૓ച Kotlin Multiplatform Compose for iOS Compose for Desktop Compose for Web

Slide 3

Slide 3 text

1. Kotlin 2.0 ߂ ୶о੸ੋ ঱য ૓ച

Slide 4

Slide 4 text

,ࣁ҅ীࢲفߣ૩۽֫਷࢑,PUMJOীبੑغח೐ۿ౟ূ٘

Slide 5

Slide 5 text

5 K2 ஹ౵ੌ۞੄ ঑ب੸ੋ ೐ۿ౟ূ٘ ೱ࢚ https://blog.jetbrains.com/ko/kotlin/2023/04/kotlinconf-2023-opening-keynote/

Slide 6

Slide 6 text

6 ೐ۿ౟ূ٘৬ ߔূ٘о ޖ঺ੋоਃ? ೐ۿ౟ ূ٘ ౵ࢲ৬ दݭ౮ গօۄ੉੷۽ ҳࢿ. ࣗझ௏٘ܳ ੍য ҳޙ ౟ܻܳ ٜ݅Ҋ ੄޷ ੿ࠁܳ ୶оೣ. ߔূ٘ ઺р ௏٘ ࢤࢿ & ୭੸ചӝ৬ ݠन ௏٘ ࢤࢿ ୭੸ ച۽ ա־য૗. ୭੸ചܳ ೞҊ ӝ҅য ௏٘ա ఋѶ ௏٘ܳ ࢤࢿ. 
 ௏ౣܽ੄ ҃਋ীח ੗߄ Bytecodeա LLVM੄ Bitcodeо ఋѶ. ௏ౣܽ ௏ౣܽ੄ ҃਋ী (1.3ө૑) ઺р ௏٘ ࢤࢿ & ୭੸ ചӝо হ঻਺. 
 ബਯࠁ׮ח ௏ౣܽ ঱য੄ ߊ੹੉ ؊ ઺ਃ೮਺. (ӝࣿࠗ଻) https://twitter.com/kotlin

Slide 7

Slide 7 text

7 ߔূ٘ী IR੄ بੑ IR ߔূ٘ীࢲ ҕਬೞח ઺р ࣻળ੄ ঱য IR generator & optimizer IRਸ ٜ݅Ҋ ୭੸ച ೞח ౵౟. 
 ௏ౣܽ ֎੉౭࠳ܳ ٜ݅ݴ ࢜܂ѱ ୶о. ੉ റ JVM(1.5)җ JS(1.6)ਸ IRਸ ॳب۾ ੤ ੘ࢿ. 
 
 ҕా੸ੋ ୭੸ചܳ ೡ ࣻ ੓׮. (Ӓ੹ө૑ ח ߔূ٘݃׮ ߹ب۽ ੘ࢿ.) 
 
 ੄بೞ૑ח ঋও૑݅ ࢜ ߔূ٘੄ ࢿמ੉ ೱ࢚! https://twitter.com/kotlin

Slide 8

Slide 8 text

թ਷ Ѫ਷ ೐ۿ౟ূ٘ ۨѢद PSI (Program Structure Interface) PSI Program Structure Interface ௏ౣܽ ௏٘ܳ ౵यೠ Ѿҗ ౟ܻ. IntelliJীࢲ ݢ੷ ॳ؍ ҳઑܳ ௏ౣܽ ஹ౵ੌ۞ب ରਊ. ࣗझ ௏٘৬ Ѣ੄ ؀਽غח ױࣽೠ ഋక.

Slide 9

Slide 9 text

PSIViewer۽ PSIܳ ഛੋ оמ

Slide 10

Slide 10 text

੄޷ܳ ׸ח BindingContext Kotlin Compiler In past, 1.4 and beyond

Slide 11

Slide 11 text

੄޷ܳ ׸ח BindingContext Kotlin Compiler In past, 1.4 and beyond

Slide 12

Slide 12 text

੄޷ܳ ׸ח BindingContext Kotlin Compiler In past, 1.4 and beyond

Slide 13

Slide 13 text

PSI + BindingContextо ޙઁо ੓աਃ? ୭੸ച ೐ۿ౟ূ٘ ࣻળীࢲ PSIীࢲ ୭੸ചܳ ೞח Ѫ੉ औ૑ ঋ਺. ޙݓ੉ ߹ب੄ BIndingContextী ੓ח Ѫب ୭੸ചী જ૑ ޅೣ. நए ޷झ BindingContextо Ѣ؀ೠ Map੉যࢲ நए ബਯী જ૑ ޅೣ.

Slide 14

Slide 14 text

Frontend Intermediate Representation ߔূ٘ীѱ ੹׳ೡ ࢜۽਍ ઺р ঱য https://twitter.com/kotlin

Slide 15

Slide 15 text

Kotlin FIR Viewer FIRਸ ࠅ ࣻ ੓ח ࠭য https://github.com/google/Kotlin-FirViewer

Slide 16

Slide 16 text

Kotlin Compiler In past, 1.4 and beyond

Slide 17

Slide 17 text

೐ۿ౟ূ٘ ৵ FIR੉ فѐо ੓աਃ? ౵ࢲ 3BX'*3࠽؊ "OBMZ[F ୓ழ ౵झ౟ܻ '*3 '*3 ૓ױ Lowering ױࣽച(simplify)ۄҊ ࢸݺ. ٣गѢ݂(Desugraing)੉ۄҊب ಴അ. ࠺ҳઑച (Desctructure)ܳ োࣘػ ؀ੑਵ۽ ߸҃. for ١ਸ whileਵ۽ ߸҃. ো࢑੗(+, +=, in, …)١ਸ ݺद੸ੋ ഐ୹۽ ߸ഋ. ӝఋ ೐ۿ౟ূ٘ ࣻળীࢲ੄ ୭੸ചب ࣻ೯.

Slide 18

Slide 18 text

18 FIR ӝ߈੄ ೐ۿ౟ূ౟੄ ੢੼ ஹ౵ੌ۞ ࢿמ FIR ӝ߈ਵ۽ ݅ٚ ೐ۿ౟ূ٘ח PSI + BindingContext ӝ߈੄ ೐ۿ౟ূ٘ ࠁ׮ ഻न ࡅܴ. IDE IDEب ೐ۿ౟ূ٘ܳ ҕਬ. ੋభܻઁ੉ীࢲ ੄޷ܳ ౵ঈೞҊ ௏٘ ೞ੉ۄ੉౴, ࠙ࢳೞח ࣘبо ࡈۄ૗. Kotlin IDE ೒۞Ӓੋ ੤੘ࢿ઺.

Slide 19

Slide 19 text

19 о੢ ݆੉ ਃ୒߉਷ ӝמ Static Extensions ੋझఢझо ইפ؊ۄب ഛ੢ ೣࣻܳ ٜ݅ ࣻ ੓਺. Collection Literals listOf, mapOf, setOf о ইצ ܻఠۡ۽ ஸ۩࣌. Name-based Destructuring ࠺ҳઑച(ҳઑ࠙೧)ܳ ਤ஖ ӝ߈੉ ইפۄ ੉ܴ ӝ߈ਵ۽. Explicit Fields э਷ ஶࣆ੄ private, public ೐۽ಌ౭ܳ ٜ݅૑ ঋইب ؽ. Context Receivers ݯߡ ഛ੢ ೣࣻ ੉৻ী Contextܳ ૑੿ೡ ߑߨ੄ ୶о.

Slide 20

Slide 20 text

20 ੿੸ ഛ੢ (Static Extensions) https://youtrack.jetbrains.com/issue/KT-11968 File.open("data.txt")

Slide 21

Slide 21 text

21 ੿੸ ഛ੢ (Static Extensions) https://youtrack.jetbrains.com/issue/KT-11968 File.open("data.txt") fun File.Companion.open(name: String)

Slide 22

Slide 22 text

22 ੿੸ ഛ੢ (Static Extensions) https://youtrack.jetbrains.com/issue/KT-11968 File.open("data.txt") fun File.Companion.open(name: String)

Slide 23

Slide 23 text

23 ੿੸ ഛ੢ (Static Extensions) https://youtrack.jetbrains.com/issue/KT-11968 File.open("data.txt") fun File.Static.open(name: String)

Slide 24

Slide 24 text

24 ஸ۩࣌ ܻఠۡ (Collection Literals) https://youtrack.jetbrains.com/issue/KT-43871 cmdArgs = listOf("-language-version", "2.0")

Slide 25

Slide 25 text

25 ஸ۩࣌ ܻఠۡ (Collection Literals) https://youtrack.jetbrains.com/issue/KT-43871 cmdArgs = [“-language-version", “2.0"]

Slide 26

Slide 26 text

26 ஸ۩࣌ ܻఠۡ (Collection Literals) https://youtrack.jetbrains.com/issue/KT-43871 cmdArgs = [“-language-version", “2.0”] val skip = persistentSetOf(0, 1)

Slide 27

Slide 27 text

27 ஸ۩࣌ ܻఠۡ (Collection Literals) https://youtrack.jetbrains.com/issue/KT-43871 cmdArgs = [“-language-version", “2.0”] val skip: PersistentSet = [0, 1]

Slide 28

Slide 28 text

28 ஸ۩࣌ ܻఠۡ (Collection Literals) https://youtrack.jetbrains.com/issue/KT-43871 cmdArgs = [“-language-version", “2.0”] val skip = PersistentSet [0, 1]

Slide 29

Slide 29 text

29 ੉ܴ ӝ߈ ࠺ҳઑച (Name-Based Restructuring) https://youtrack.jetbrains.com/issue/KT-19627 data class Person( val fi rstName: String, val lastName: String )

Slide 30

Slide 30 text

30 ੉ܴ ӝ߈ ࠺ҳઑച (Name-Based Restructuring) https://youtrack.jetbrains.com/issue/KT-19627 EBUBDMBTT1FSTPO WBM fi STU/BNF4USJOH WBMMBTU/BNF4USJOH WBM fi STU/BNF MBTU/BNF QFSTPO

Slide 31

Slide 31 text

31 ੉ܴ ӝ߈ ࠺ҳઑച (Name-Based Restructuring) https://youtrack.jetbrains.com/issue/KT-19627 EBUBDMBTT1FSTPO WBM fi STU/BNF4USJOH WBMMBTU/BNF4USJOH WBM MBTU/BNF fi STU/BNF QFSTPO

Slide 32

Slide 32 text

32 ஶఖझ౟ ࣻन੗ (Context Receivers) https://youtrack.jetbrains.com/issue/KT-10468 fun process( context: ServiceContext, request: ServiceRequest ) { val data = request.loadData(context) }

Slide 33

Slide 33 text

33 ஶఖझ౟ ࣻन੗ (Context Receivers) https://youtrack.jetbrains.com/issue/KT-10468 fun process( context: ServiceContext, request: ServiceRequest ) { val data = request.loadData(context) } context(ServiceContext) fun processRequest(request: ServiceRequest)

Slide 34

Slide 34 text

34 ஶఖझ౟ ࣻन੗ (Context Receivers) https://youtrack.jetbrains.com/issue/KT-10468 context(ServiceContext) fun processRequest(request: ServiceRequest) { val data = request.loadData() // }

Slide 35

Slide 35 text

35 ஶఖझ౟ ࣻन੗ (Context Receivers) https://youtrack.jetbrains.com/issue/KT-10468 context(ServiceContext) fun processRequest(request: ServiceRequest) { val data = request.loadData() // } context(ServiceContext) fun ServiceRequest.loadData(): Data

Slide 36

Slide 36 text

36 ݺद੸ ೙٘ (Explicit Fields) https://youtrack.jetbrains.com/issue/KT-14663 private val _applicationState = MutableStateFlow(State()) val applicationState: StateFlow get() = _applicationState

Slide 37

Slide 37 text

37 ݺद੸ ೙٘ (Explicit Fields) https://youtrack.jetbrains.com/issue/KT-14663 private val _applicationState = MutableStateFlow(State()) val applicationState: StateFlow get() = _applicationState val applicationState: StateFlow fi eld = MutableStateFlow(State())

Slide 38

Slide 38 text

38 ؘ੉ఠ೐ۨ੐ https://github.com/kotlin/dataframe val df = DataFrame.readCSV("KotlinSO.csv")

Slide 39

Slide 39 text

39 ؘ੉ఠ೐ۨ੐ https://github.com/kotlin/dataframe val df = DataFrame.readCSV("KotlinSO.csv") val kmp = df. fi lter { tags?.contains("multiplatform") ?: false }

Slide 40

Slide 40 text

40 K2 ೐ۿ౟ূ٘ীࢲח ೒۞Ӓੋਸ ੸ਊೞӝ एਕࢲ ೧Ѿ val df = DataFrame.readCSV("KotlinSO.csv") val kmp = df. fi lter { tags?.contains("multiplatform") ?: false } kmp.add("years") { creationData.year } .groupBy { year } .count()

Slide 41

Slide 41 text

41 ؘ੉ఠ೐ۨ੐

Slide 42

Slide 42 text

2. Kotlin Multiplatform

Slide 43

Slide 43 text

43 ݒ֙ ݣ౭೒ۖಬ ۄ੉࠳۞ܻח ૐо.

Slide 44

Slide 44 text

44 ௏ౣܽ ݣ౭೒ۖಬ਷ ই૒ ߬ఋ ױ҅

Slide 45

Slide 45 text

45 Kotlin Multiplatform ۄ੉࠳۞ܻ

Slide 46

Slide 46 text

46 Kotlin Multiplatform Mobileਸ ਤ೧ ೙ਃೠ Ѫ Android Studio ݣ౭೒ۖಬ গ೒ܻா੉࣌ਸ ٜ݅Ҋ दޛۨ੉ఠա ೞ٘ਝযܳ प೯.

Slide 47

Slide 47 text

47 Kotlin Multiplatform Mobileਸ ਤ೧ ೙ਃೠ Ѫ Xcode Xcodeח ߔӒۄ਍٘ীࢲ ࣻ೯ ؽ. Kotlin/Nativeо ੄ઓೞח ߡ੹ਸ ࢸ஖೧ঠ ೣ.

Slide 48

Slide 48 text

48 Kotlin Multiplatform Mobileਸ ਤ೧ ೙ਃೠ Ѫ Kotlin Multiplatform Mobile উ٘۽੉٘ झౚ٣য়ীࢲ Kotlin Multiplatform Mobile ೒۞Ӓੋ ࢸ஖.

Slide 49

Slide 49 text

49 Kotlin Multiplatform Mobileਸ ਤ೧ ೙ਃೠ Ѫ JDK Android Studioী ੄೧ ࢸ஖. Kotlin Plugin Android Studioী ࢸ஖. সؘ੉౟ܳ ೧ࢲ ߡ੹ਸ ୭नച ೧ঠ.

Slide 50

Slide 50 text

50 Kotlin Multiplatform Mobileਸ ਤ೧ ೙ਃೠ Ѫ KDoctor KMMਸ ਤ೧ ೙ਃೠ ജ҃੉ ੓ח૑ ੼Ѩೞח জ.

Slide 51

Slide 51 text

51

Slide 52

Slide 52 text

52 Kotlin Multiplatform Mobileਸ ਤ೧ ೙ਃೠ Ѫ CocoaPods KMM਷ SPM(SwiftPackageManager)ܳ ૑ਗೞ૑ ঋ਺. (؀୓ ৵!)

Slide 53

Slide 53 text

53 Kotlin Multiplatform Appਵ۽ ࢜ ೐۽ં౟ܳ ݅ٞ.

Slide 54

Slide 54 text

54 ಁః૑ ֎੐਷ উ٘۽੉٘/੗߄ জ୊ۢ بݫੋ੄ ৉ࣽਵ۽ ૑੿ೣ.

Slide 55

Slide 55 text

55 জ ֎੐ ӝࠄਵ۽ androidApp, iosApp, shared۽ জ ֎੐੉ ੿೧૗. iOS framework distribution਷ Regular۽ Cocoapods -_-ਸ ࢶఖೡ ࣻ ੓਺.

Slide 56

Slide 56 text

56 androidApp উ٘۽੉٘ ҙ۲ ௏٘ח androidApp ইې ਤ஖ೣ

Slide 57

Slide 57 text

57 উ٘۽੉٘ח Compose۽ ࢤࢿ ؽ

Slide 58

Slide 58 text

58 iosApp iOS ҙ۲ ௏٘ח iOSAppী ਤ஖ೣ.

Slide 59

Slide 59 text

59 iOSח SwiftUI۽ Compose ইתפ׮.

Slide 60

Slide 60 text

60

Slide 61

Slide 61 text

61 ߡ੹ ୊ܻח যڌѱ ೮ਸөਃ? expect৬ actual shared/src/ commonMain iOS৬ Androidীࢲ ݽف ࢎਊೡ ੋఠಕ੉झܳ expect ఃਕ٘۽ ݅ٞ.

Slide 62

Slide 62 text

62 ߡ੹ ୊ܻח যڌѱ ೮ਸөਃ? expect৬ actual shared/src/ androidMain Android੄ ҳഅਸ actual ఃਕ٘ܳ ࠢৈ ҳഅ

Slide 63

Slide 63 text

63 ߡ੹ ୊ܻח যڌѱ ೮ਸөਃ? expect৬ actual shared/src/ iOSMain iOS੄ ҳഅਸ actual ఃਕ٘ܳ ࠢৈ ҳഅ

Slide 64

Slide 64 text

64 KMM for iOSীࢲ ݅աѱ غח ࢚ടٜ ObjC അ੤ Kotlin਷ ObjC݅ ૑ਗ೧ࢲ ઁցܼ ௿ېझ݅ ૑ਗೞҊ ੋఠಕ੉झܳ ૑ਗೞ૑ ޅೣ. Abstract classܳ ؀न ࢎਊ೧ঠ ೣ. 
 @HinddenFromObjC, @ObjcName ఃਕ٘ܳ ੸ӓ੸ਵ۽ ഝਊೞ੗. @ObjcName(swiftName=“_”) _ח ౠࣻೠ ఃਕ٘. plane.fuel(volume: .Gallos(gallos: 12.5)) ؀न plane.fuel(.Gallons(12.5)) 
 ੢ӝ੸ਵ۽ח ௏౟ܽ੉ Swiftܳ ߄۽ ఋѱ౴ೡ Ѫ੐. Swiftܳ ObjeCܳ ઁ৻ೞҊ ߄ੋ٘ೡ ࣻ হ঻ӝী ߊ ࢤೠ ޙઁ. SourceKitten৬ э਷ بҳٜ۽ ઺р ௏٘ܳ ࢤࢿೞ੗. ۄੋ ؘݫী஠੉ ѻ਷ য۰਑ Suspend suspendח ௒ߔ(completion handler)੉ غҊ ௒ߔ਷ Swiftীࢲ async۽ ഐ୹ оמೞ૑݅ ஂࣗо ࠛ оמೣ. Flowب ੜ ૑ਗغ૑ ঋ਺. 
 KMP-NativeCoroutines ۄ੉࠳۞ܻܳ ഝਊ೧ঠ ೣ. https://github.com/rickclephas/KMP-NativeCoroutines 
 ௏ౣܽ ৘৻о झਤ೐౟ ೩ٜ۞ ੹׳ غ૑ ঋਸ ࣻ ੓য @Throws ఃਕ٘۽ Errorܳ ૑੿೧ঠ ೣ.

Slide 65

Slide 65 text

65 KMM for iOSীࢲ ݅աѱ غח ࢚ടٜ CocoaPods ই૒ ҕध੸ਵ۽ SPM(Swift Package Manager)ܳ ૑ਗೞ૑ ঋ਺. Gradle API ࣻળীࢲ ੿ܻػ ੉റ ী ૑ਗೠ׮Ҋ ೣ. (঱ઁ?) CocoaPodsח ੄ઓࢿਸ ࣗझ۽ оઉ৬ э੉ ࠽٘ী ࢎਊೞӝী ݒ਋ ࠺ബਯ੸. TouchLab੄ ۄ੉࠳۞ܻ KMMBridgeܳ ࢎਊ೤द׮. https://github.com/touchlab/KMMBridge 
 
 SPMਸ ؀਽ೞӝ ਤ೧ࢲח Git ܻನ૑షܻ৬ झక౮ ౵ੌ ੷੢ࣗо ೙ਃೞ׮. (AWS?) Frozen Global Objectח ӝࠄਵ۽ frozen. ੽Ӕೡ ࣻ ੓૑݅ ߸҃ೡ ࣻ হ਺. @ThreadLocalਸ ࠢ੉ݶ freeze ഐ୹ উೣ. Atomicೠ ੗ܐҳઑ੄ ࢎਊ੉ ೙ਃೡ ࣻ ੓׮. 
 freeze() ഛ੢ ೣࣻܳ ੉ਊ೧ ؘ੉ఠܳ ঴ܾ ࣻ ੓Ҋ ಽ ࣻח হ਺. Global ೐۽ಌ౭ח ݫੋझۨ٘ীࢲ݅ ࠅ ࣻ ੓਺.

Slide 66

Slide 66 text

66 KMM for iOSীࢲ ݅աѱ غח ࢚ടٜ Memory Management झఖ ౟ۨ੉झ ٣ߡӦ য۵Ҋ, ݫݽܻ ݒפ૑ݢ౟о ই૒ উ੿੸੉૑ח ঋ਺. 
 https://youtrack.jetbrains.com/issue/KT-55512 ଵҊ Kotlin Multiplatform Mobileਸ ഝਊೠ ؘ݃ী஢ ٘ۄ੉ߡজ ѐߊ ੉ঠӝ Kotlin/Multiplatform for iOS developers : state & future by Salomon Brys

Slide 67

Slide 67 text

3. Compose for iOS

Slide 68

Slide 68 text

68 Compose Multiplatform mobile application మ೒݁ਸ ੉ਊ೧ࢲ द੘೧ঠ మ೒݁ https://github.com/JetBrains/compose-multiplatform-ios-android-template

Slide 69

Slide 69 text

69 Compose for iOSܳ ਤ೧ ೙ਃೠ Ѫ Android Studio Android জҗ iOS জܳ प೯ೡ ࣻ ੓ח ѐߊ ജ҃. Xcode Xcodeח ߔӒۄ਍٘ীࢲ ࣻ೯ ؽ. Kotlin/Nativeо ੄ઓೞח ߡ੹ਸ ࢸ஖೧ঠ ೣ. Kotlin Multiplatform Mobile উ٘۽੉٘ झౚ٣য়ীࢲ Kotlin Multiplatform Mobile ೒۞Ӓੋ ࢸ஖. CocoaPods Compose for iOSب SPM(SwiftPackageManager)ܳ ૑ਗೞ૑ ঋ਺.

Slide 70

Slide 70 text

70 Compose for iOSܳ ਤ೧ ೙ਃೠ Ѫ

Slide 71

Slide 71 text

71 shared/src/ commonMain

Slide 72

Slide 72 text

72 androidApp/ src/ commonMain

Slide 73

Slide 73 text

73 iosApp/ iosApp

Slide 74

Slide 74 text

74 iosApp/ iosApp

Slide 75

Slide 75 text

75 sharedApp/ src/iosMain

Slide 76

Slide 76 text

76 ୊਺ ߸҃೧ࠁח Compose for iOS TextField ୶о TextFieldܳ ୶оೞח ؘݽܳ ೤द׮.

Slide 77

Slide 77 text

4. Compose for Desktop

Slide 78

Slide 78 text

78 Compose for Desktop੄ ౠ૚ Cross- Platform ݣ౭೒ۖಬ੉ ইצ ௼۽झ೒ۖಬਵ۽ ࠙ܨ. 
 JVM੉ ఋѶ੉Ҋ JVM ؋ী ৈ۞ ೒ۖಬীࢲ بח Ѫਸ ௼۽झ೒ۖಬਵ۽ ࢸݺ. SKIKO SKIA੄ ௏ౣܽ ߄ੋ٬ SKIKOী ੄೧ ۪؊݂. https://github.com/JetBrains/skiko SKIA੄ ಪ౟ ۪؊݂੉ ਍৔୓ઁ ݃׮ ׳ۄ झ௼ܽ ࢫ పझ౟ܳ ೞ૑ ݈੗. Compose Multiplatform IDE support ੋభܻઁ੉ ই੉٣যա উ٘۽੉٘ झౚ٣য়ী ࢸ஖. https://plugins.jetbrains.com/plugin/16541-compose-multiplatform-ide-support IntelliJ IDEA ੋభܻઁ੉ ই੉٣য 2020.3 ੉࢚ীࢲ ࢎਊоמ.

Slide 79

Slide 79 text

79 Compose for Desktop੄ ౠ૚ ଵҊ৔࢚ You can do desktop too! By Victor Kropp https://www.youtube.com/watch?v=Mgf_9kxM1BA JDK 15 JDK11ਵ۽ ೐۽ં౟ ࢤࢿ оמ. ֎੉౭࠳ ߓನ ಁః૚ਸ ਤ೧ࢲח 15 ੉࢚.

Slide 80

Slide 80 text

80 Compose Multiplatform desktop application New Project۽ द੘ೞӝ

Slide 81

Slide 81 text

81

Slide 82

Slide 82 text

82

Slide 83

Slide 83 text

5. Compose for Web

Slide 84

Slide 84 text

84 Compose for Web੄ ౠ૚ WebAssembly JavaScriptܳ ॳ૑ ঋҊ WebAssembly۽ प೯. Kotlin/WASM੉ ఋѶ. Compose HTML HTMLਸ ࢤࢿೞח Kotlin/JS੄ ۄ੉࠳۞ܻب ੓਺. Compose for Webҗ ޖҙ. Compose Multiplatform IDE support ੋభܻઁ੉ ই੉٣যա উ٘۽੉٘ झౚ٣য়ী ࢸ஖. https://plugins.jetbrains.com/plugin/16541-compose-multiplatform-ide-support IntelliJ IDEA ੋభܻઁ੉ ই੉٣য 2020.3 ੉࢚ীࢲ ࢎਊоמ.

Slide 85

Slide 85 text

85 WASM ৘ઁ https://github.com/Kotlin/kotlin-wasm-examples

Slide 86

Slide 86 text

86

Slide 87

Slide 87 text

87

Slide 88

Slide 88 text

՘