Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kotlin 2.0을 통해 알아보는 코틀린의 미래

Kotlin 2.0을 통해 알아보는 코틀린의 미래

라인 테크 토크에서 공유한 "코틀린 2.0을 통해 알아보는 코틀린의 미래" 발표 자료입니다.

Leonardo YongUk Kim

May 24, 2023
Tweet

More Decks by Leonardo YongUk Kim

Other Decks in Programming

Transcript

  1. Kotlin 2.0 ਸ ా೧

    ঌইࠁח Kotlin੄ ޷ې
    Leonardo YongUk Kim
    2023.05

    View Slide

  2. 2
    Contents
    01


    02


    03


    04


    05




    Kotlin 2.0 ߂ ୶о੸ੋ ঱য੄ ૓ച
    Kotlin Multiplatform
    Compose for iOS
    Compose for Desktop
    Compose for Web

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  6. 6
    ೐ۿ౟ূ٘৬ ߔূ٘о ޖ঺ੋоਃ?
    ೐ۿ౟
    ূ٘
    ౵ࢲ৬ दݭ౮ গօۄ੉੷۽ ҳࢿ.


    ࣗझ௏٘ܳ ੍য ҳޙ ౟ܻܳ ٜ݅Ҋ ੄޷ ੿ࠁܳ
    ୶оೣ.
    ߔূ٘
    ઺р ௏٘ ࢤࢿ & ୭੸ചӝ৬ ݠन ௏٘ ࢤࢿ ୭੸
    ച۽ ա־য૗.


    ୭੸ചܳ ೞҊ ӝ҅য ௏٘ա ఋѶ ௏٘ܳ ࢤࢿ.

    ௏ౣܽ੄ ҃਋ীח ੗߄ Bytecodeա LLVM੄
    Bitcodeо ఋѶ.
    ௏ౣܽ
    ௏ౣܽ੄ ҃਋ী (1.3ө૑) ઺р ௏٘ ࢤࢿ & ୭੸
    ചӝо হ঻਺.

    ബਯࠁ׮ח ௏ౣܽ ঱য੄ ߊ੹੉ ؊ ઺ਃ೮਺.
    (ӝࣿࠗ଻)
    https://twitter.com/kotlin

    View Slide

  7. 7
    ߔূ٘ী IR੄ بੑ
    IR ߔূ٘ীࢲ ҕਬೞח ઺р ࣻળ੄ ঱য
    IR
    generator
    & optimizer
    IRਸ ٜ݅Ҋ ୭੸ച ೞח ౵౟.

    ௏ౣܽ ֎੉౭࠳ܳ ٜ݅ݴ ࢜܂ѱ ୶о. ੉
    റ JVM(1.5)җ JS(1.6)ਸ IRਸ ॳب۾ ੤
    ੘ࢿ.


    ҕా੸ੋ ୭੸ചܳ ೡ ࣻ ੓׮. (Ӓ੹ө૑
    ח ߔূ٘݃׮ ߹ب۽ ੘ࢿ.)


    ੄بೞ૑ח ঋও૑݅ ࢜ ߔূ٘੄ ࢿמ੉
    ೱ࢚!
    https://twitter.com/kotlin

    View Slide

  8. թ਷ Ѫ਷ ೐ۿ౟ূ٘
    ۨѢद PSI (Program Structure Interface)
    PSI
    Program Structure Interface


    ௏ౣܽ ௏٘ܳ ౵यೠ Ѿҗ ౟ܻ. IntelliJীࢲ ݢ੷ ॳ؍ ҳઑܳ ௏ౣܽ ஹ౵ੌ۞ب ରਊ.


    ࣗझ ௏٘৬ Ѣ੄ ؀਽غח ױࣽೠ ഋక.

    View Slide

  9. PSIViewer۽ PSIܳ ഛੋ оמ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  13. PSI + BindingContextо ޙઁо ੓աਃ?
    ୭੸ച ೐ۿ౟ূ٘ ࣻળীࢲ PSIীࢲ ୭੸ചܳ ೞח Ѫ੉ औ૑ ঋ਺.


    ޙݓ੉ ߹ب੄ BIndingContextী ੓ח Ѫب ୭੸ചী જ૑ ޅೣ.
    நए ޷झ BindingContextо Ѣ؀ೠ Map੉যࢲ நए ബਯী જ૑ ޅೣ.

    View Slide

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

    View Slide

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

    View Slide

  16. Kotlin Compiler In past, 1.4 and beyond

    View Slide

  17. ೐ۿ౟ূ٘
    ৵ FIR੉ فѐо ੓աਃ?
    ౵ࢲ 3BX'*3࠽؊ "OBMZ[F
    ୓ழ
    ౵झ౟ܻ '*3 '*3
    ૓ױ
    Lowering
    ױࣽച(simplify)ۄҊ ࢸݺ. ٣गѢ݂(Desugraing)੉ۄҊب ಴അ.


    ࠺ҳઑച (Desctructure)ܳ োࣘػ ؀ੑਵ۽ ߸҃.


    for ١ਸ whileਵ۽ ߸҃. ো࢑੗(+, +=, in, …)١ਸ ݺद੸ੋ ഐ୹۽ ߸ഋ.


    ӝఋ ೐ۿ౟ূ٘ ࣻળীࢲ੄ ୭੸ചب ࣻ೯.


    View Slide

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


    Kotlin IDE ೒۞Ӓੋ ੤੘ࢿ઺.

    View Slide

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

    View Slide

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

    View Slide

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


    fun File.Companion.open(name: String)

    View Slide

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


    fun File.Companion.open(name: String)

    View Slide

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


    fun File.Static.open(name: String)

    View Slide

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

    View Slide

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

    View Slide

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


    val skip = persistentSetOf(0, 1)

    View Slide

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


    val skip: PersistentSet = [0, 1]

    View Slide

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


    val skip = PersistentSet [0, 1]

    View Slide

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


    val
    fi
    rstName: String,


    val lastName: String


    )

    View Slide

  30. 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

    View Slide

  31. 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

    View Slide

  32. 32
    ஶఖझ౟ ࣻन੗ (Context Receivers)
    https://youtrack.jetbrains.com/issue/KT-10468
    fun process(


    context: ServiceContext,


    request: ServiceRequest


    ) {


    val data = request.loadData(context)


    }

    View Slide

  33. 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)

    View Slide

  34. 34
    ஶఖझ౟ ࣻन੗ (Context Receivers)
    https://youtrack.jetbrains.com/issue/KT-10468
    context(ServiceContext)


    fun processRequest(request: ServiceRequest) {


    val data = request.loadData()


    //


    }

    View Slide

  35. 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

    View Slide

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


    MutableStateFlow(State())


    val applicationState: StateFlow


    get() = _applicationState

    View Slide

  37. 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())

    View Slide

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

    View Slide

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


    val kmp = df.
    fi
    lter {


    tags?.contains("multiplatform")


    ?: false


    }

    View Slide

  40. 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()


    View Slide

  41. 41
    ؘ੉ఠ೐ۨ੐

    View Slide

  42. 2. Kotlin Multiplatform

    View Slide

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

    View Slide

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

    View Slide

  45. 45
    Kotlin Multiplatform ۄ੉࠳۞ܻ

    View Slide

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

    View Slide

  47. 47
    Kotlin Multiplatform Mobileਸ ਤ೧ ೙ਃೠ Ѫ
    Xcode
    Xcodeח ߔӒۄ਍٘ীࢲ ࣻ೯ ؽ.


    Kotlin/Nativeо ੄ઓೞח ߡ੹ਸ ࢸ஖೧ঠ ೣ.

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  51. 51

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  55. 55
    জ ֎੐
    ӝࠄਵ۽ androidApp, iosApp, shared۽ জ ֎੐੉ ੿೧૗.


    iOS framework distribution਷ Regular۽ Cocoapods -_-ਸ ࢶఖೡ ࣻ ੓਺.

    View Slide

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

    View Slide

  57. 57
    উ٘۽੉٘ח


    Compose۽ ࢤࢿ ؽ

    View Slide

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

    View Slide

  59. 59
    iOSח SwiftUI۽


    Compose ইתפ׮.

    View Slide

  60. 60

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  64. 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ܳ ૑੿೧ঠ ೣ.


    View Slide

  65. 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 ೐۽ಌ౭ח ݫੋझۨ٘ীࢲ݅ ࠅ ࣻ ੓਺.

    View Slide

  66. 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


    View Slide

  67. 3. Compose for iOS

    View Slide

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

    View Slide

  69. 69
    Compose for iOSܳ ਤ೧ ೙ਃೠ Ѫ
    Android
    Studio
    Android জҗ iOS জܳ प೯ೡ ࣻ ੓ח ѐߊ ജ҃.
    Xcode
    Xcodeח ߔӒۄ਍٘ীࢲ ࣻ೯ ؽ.


    Kotlin/Nativeо ੄ઓೞח ߡ੹ਸ ࢸ஖೧ঠ ೣ.
    Kotlin
    Multiplatform
    Mobile
    উ٘۽੉٘ झౚ٣য়ীࢲ Kotlin Multiplatform Mobile ೒۞Ӓੋ ࢸ஖.
    CocoaPods Compose for iOSب SPM(SwiftPackageManager)ܳ ૑ਗೞ૑ ঋ਺.

    View Slide

  70. 70
    Compose for iOSܳ ਤ೧ ೙ਃೠ Ѫ

    View Slide

  71. 71
    shared/src/
    commonMain

    View Slide

  72. 72
    androidApp/
    src/
    commonMain

    View Slide

  73. 73
    iosApp/
    iosApp

    View Slide

  74. 74
    iosApp/
    iosApp

    View Slide

  75. 75
    sharedApp/
    src/iosMain

    View Slide

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

    View Slide

  77. 4. Compose for Desktop

    View Slide

  78. 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 ੉࢚ীࢲ ࢎਊоמ.

    View Slide

  79. 79
    Compose for Desktop੄ ౠ૚
    ଵҊ৔࢚ You can do desktop too! By Victor Kropp


    https://www.youtube.com/watch?v=Mgf_9kxM1BA
    JDK 15 JDK11ਵ۽ ೐۽ં౟ ࢤࢿ оמ. ֎੉౭࠳ ߓನ ಁః૚ਸ ਤ೧ࢲח 15 ੉࢚.

    View Slide

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

    View Slide

  81. 81

    View Slide

  82. 82

    View Slide

  83. 5. Compose for Web

    View Slide

  84. 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 ੉࢚ীࢲ ࢎਊоמ.

    View Slide

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

    View Slide

  86. 86

    View Slide

  87. 87

    View Slide

  88. ՘

    View Slide