Jump to content

Kotlin

විකිපීඩියා වෙතින්
Kotlin ක්‍රමලේඛන භාෂාවේ ලාංඡනය.

Kotlin (කොට්ලින්) යනු JetBrains විසින් සංවර්ධනය කරන ලද, විවිධ පරිගණක වේදිකා සඳහා භාවිත කළ හැකි පොදු කාර්ය ක්‍රමලේඛන භාෂාවකි. එය ස්ථිතික වර්ග පරීක්ෂාව (static typing) සහ දත්ත වර්ග අනුමානය (type inference) සඳහා සහාය දක්වයි. වස්තු නැඹුරු සහ ශ්‍රිතාත්මක ක්‍රමලේඛන රටා දෙකම භාවිත කළ හැකි මෙම භාෂාව Apache License 2.0 යටතේ විවෘත මූලාශ්‍ර ව්‍යාපෘතියක් ලෙස පවත්වාගෙන යනු ලැබේ.[1]

Kotlin නිර්මාණයේ ප්‍රධාන අරමුණක් වන්නේ ජාවා කේත සමඟ අන්තර්ක්‍රියා කිරීමයි. එහි JVM සඳහා වූ ක්‍රියාත්මක කිරීම මගින් පවතින ජාවා පුස්තකාල භාවිත කළ හැකිය. Kotlin මගින් Android යෙදුම්, සේවාදායක යෙදුම් සහ බහු වේදිකා මෘදුකාංග සංවර්ධනය කළ හැකි අතර, JavaScript, WebAssembly සහ දේශීය යන්ත්‍ර කේත සඳහාද සම්පාදන ඉලක්ක සපයයි.[1]

ඉතිහාසය

[සංස්කරණය]

ආරම්භය සහ සංවර්ධනය

[සංස්කරණය]

JetBrains සමාගම 2010 දී Kotlin ව්‍යාපෘතිය ආරම්භ කළේය.[1] 2011 ජූලි මාසයේදී JVM Language Summit සමුළුවේදී එය ප්‍රසිද්ධියේ හඳුන්වා දෙන ලදී. එම අවස්ථාවේදී සංවර්ධකයන් එය වසරකට ආසන්න කාලයක් සංවර්ධනය කරමින් සිටි JVM සඳහා වූ නව ස්ථිතික වර්ග පරීක්ෂාව සහිත භාෂාවක් ලෙස විස්තර කළහ.[2]

Kotlin 1.0 අනුවාදය 2016 පෙබරවාරි මාසයේදී නිකුත් විය. එය භාෂාවේ පළමු නිල ස්ථාවර නිකුතුව විය. ජාවා සමඟ අන්තර්ක්‍රියාකාරීත්වය, කේතයේ පැහැදිලි බව, ආරක්ෂිත භාෂා ලක්ෂණ සහ සංවර්ධන මෙවලම් සමඟ ඒකාබද්ධතාව එහි සැලසුම් අරමුණු අතර විය.[3]

2019 Google I/O සමුළුවේදී Google විසින් Android සංවර්ධනය සඳහා Kotlin වෙත ප්‍රමුඛතාව දෙන ප්‍රවේශයක් ප්‍රකාශයට පත් කරන ලදී.[4]

2023 නොවැම්බර් මාසයේදී Kotlin Multiplatform හි මූලික තාක්ෂණය ස්ථාවර තත්ත්වයට පත් වූ බව JetBrains නිවේදනය කළේය.[5] 2024 මැයි මාසයේ Kotlin 2.0 නිකුතුව සමඟ K2 සම්පාදකය හඳුන්වා දෙන ලදී. එම සම්පාදකයේ සැලසුම විවිධ ඉලක්ක වේදිකා අතර වැඩි පොදු සැකසුම් තර්කයක් භාවිත කිරීම සඳහා සකස් කර ඇත.[6]

භාෂා සැලසුම

[සංස්කරණය]

Kotlin හි වස්තු නැඹුරු සහ ශ්‍රිතාත්මක ලක්ෂණ එකම වැඩසටහනක භාවිත කළ හැකිය. ශ්‍රිත වෙනත් ශ්‍රිතවලට ලබා දීම, ශ්‍රිතයක ප්‍රතිඵලයක් ලෙස තවත් ශ්‍රිතයක් ලබා දීම සහ ලැම්ඩා ප්‍රකාශන භාවිත කිරීම ඒ අතර වේ.[7]

ස්ථිතික වර්ග පරීක්ෂාව යටතේ දත්ත වර්ගවල ගැළපීම සම්පාදන අවස්ථාවේ පරීක්ෂා කෙරේ. එහෙත් සෑම විචල්‍යයකම වර්ගය ක්‍රමලේඛකයා විසින් පැහැදිලිව ලිවීම අවශ්‍ය නොවේ. මුල් අගය මත සම්පාදකයට වර්ගය හඳුනාගත හැකි අවස්ථාවලදී එය ස්වයංක්‍රීයව අනුමාන කරයි.[8]

ජාවා සමඟ අන්තර්ක්‍රියාකාරීත්වය

[සංස්කරණය]

Kotlin සහ ජාවා කේත එකම ව්‍යාපෘතියක භාවිත කළ හැකිය. Kotlin කේතයෙන් ජාවා කේත කැඳවීමටත්, ජාවා කේතයෙන් Kotlin කේත කැඳවීමටත් පහසුකම් ඇත. මේ නිසා පවතින ජාවා ව්‍යාපෘතියක් සම්පූර්ණයෙන් නැවත ලිවීමකින් තොරව එයට Kotlin කොටස් එක් කළ හැකිය.[1]

පන්ති සහ ශ්‍රිත

[සංස්කරණය]

පන්තියක් ප්‍රකාශ කිරීම සඳහා class යන මූලපදය භාවිත කෙරේ. පන්තියකට දත්ත නිරූපණය කරන ගුණාංග සහ හැසිරීම් නිරූපණය කරන ශ්‍රිත ඇතුළත් කළ හැකිය. Kotlin හි ප්‍රාථමික සහ ද්විතීයික constructors සඳහා පහසුකම් ඇත.[9]

ශ්‍රිතයක් ප්‍රකාශ කිරීම සඳහා fun යොදා ගනී. ශ්‍රිත පන්තියක සාමාජිකයන් ලෙස හෝ පන්තියකින් පිටත ගොනුවක ඉහළ මට්ටමේ ප්‍රකාශන ලෙස හෝ නිර්වචනය කළ හැකිය. පරාමිති සඳහා පෙරනිමි අගයන්, නම් කළ arguments සහ විචල්‍ය සංඛ්‍යාවක් වූ arguments සඳහාද සහාය ඇත.[10]

වාක්‍ය රීතිය

[සංස්කරණය]

වැඩසටහනක පිවිසුම් ස්ථානය

[සංස්කරණය]

Kotlin වැඩසටහනක පිවිසුම් ශ්‍රිතය ලෙස main භාවිත කළ හැකිය. පහත උදාහරණය පණිවිඩයක් සම්මත ප්‍රතිදානයට ලියයි.[8]

fun main() {
    println("ආයුබෝවන්!")
}

විධාන පේළියෙන් ලබා දෙන arguments අවශ්‍ය නම් main ශ්‍රිතයට Array<String> පරාමිතියක් භාවිත කළ හැකිය.[8]

විචල්‍ය සහ දත්ත වර්ග

[සංස්කරණය]

val මගින් ප්‍රකාශ කළ දේශීය විචල්‍යයකට ආරම්භක අගය ලබා දීමෙන් පසු වෙනත් අගයක් නැවත පැවරිය නොහැකිය. var මගින් ප්‍රකාශ කළ විචල්‍යයක අගය නැවත පැවරිය හැකිය.[8]

val language: String = "Kotlin"
var count = 2
count = 5

මෙහි language හි වර්ගය පැහැදිලිව දක්වා ඇති අතර count හි වර්ගය Int ලෙස අනුමාන කෙරේ. වර්ගය පැහැදිලිව දක්වන විට එය විචල්‍ය නාමයට පසුව : ලකුණෙන් වෙන් කර ලියයි.[8]

ශ්‍රිත නිර්වචනය

[සංස්කරණය]

පරාමිති සහ ප්‍රතිඵල වර්ගය සහිත ශ්‍රිතයක් පහත ආකාරයෙන් ලිවිය හැකිය.[10]

fun rectangleArea(width: Int, height: Int): Int {
    return width * height
}

තනි ප්‍රකාශනයකින් නිරූපණය කළ හැකි ශ්‍රිතයක ශරීරය = ලකුණෙන් පසුව ලිවිය හැකිය. එවැනි අවස්ථාවක ප්‍රතිඵල වර්ගය අනුමාන කිරීමටද හැකිය.[10]

fun rectangleArea(width: Int, height: Int) = width * height

දෘශ්‍යතා පාලනය

[සංස්කරණය]

ප්‍රකාශනයක් භාවිත කළ හැකි සීමාව පාලනය කිරීම සඳහා Kotlin හි public, internal, protected සහ private යන මූලපද ඇත. වෙනත් දෘශ්‍යතා පාලකයක් නොදක්වන විට සාමාන්‍ය පෙරනිමිය public වේ.[11]

මූලපදය පන්තියක සාමාජිකයකු සඳහා අර්ථය ගොනුවක ඉහළ මට්ටමේ ප්‍රකාශනයක් සඳහා අර්ථය
public අදාළ පන්තියට ප්‍රවේශ විය හැකි කේතයට සාමාජිකයාද දැකිය හැකිය. වෙනත් ස්ථානවලින් ප්‍රවේශ විය හැකිය.
internal අදාළ මොඩියුලය තුළ පන්තියට ප්‍රවේශ විය හැකි කේතයට දැකිය හැකිය. එකම මොඩියුලය තුළ දැකිය හැකිය.
protected පන්තිය තුළ සහ එහි උපපන්ති තුළ දැකිය හැකිය. භාවිත කළ නොහැකිය.
private අදාළ පන්තිය තුළ පමණක් දැකිය හැකිය. ප්‍රකාශනය අඩංගු ගොනුව තුළ පමණක් දැකිය හැකිය.

මෙහි මොඩියුලයක් යනු එකට සම්පාදනය කරන Kotlin ගොනු සමූහයකි.[11]

Null ආරක්ෂාව

[සංස්කරණය]

Kotlin හි වර්ග පද්ධතිය null අගයක් දැරිය හැකි සහ දැරිය නොහැකි වර්ග වෙන් කරයි. උදාහරණයක් ලෙස String වර්ගයේ විචල්‍යයකට null පැවරිය නොහැකි නමුත් String? වර්ගයේ විචල්‍යයකට එය පැවරිය හැකිය.[12]

fun nameLength(name: String?): Int {
    return name?.length ?: 0
}

මෙහි ?. යන ආරක්ෂිත කැඳවුම් ක්‍රියාකාරකය, name අගය null නොවන විට පමණක් එහි length ගුණාංගයට ප්‍රවේශ වේ. අගය null නම් එම ප්‍රකාශනයේ ප්‍රතිඵලයද null වේ. ?: හෙවත් Elvis ක්‍රියාකාරකය මගින් එවැනි අවස්ථාවක භාවිත කළ යුතු විකල්ප අගයක් සපයයි.[12]

මෙම පහසුකම් NullPointerException වැනි දෝෂ අඩු කිරීමට උපකාරී වුවද, එවැනි දෝෂ සම්පූර්ණයෙන්ම වැළැක්වීමේ සහතිකයක් නොවේ. !! ක්‍රියාකාරකය වැරදි ලෙස භාවිත කිරීම, ආරම්භක සැකසුම්වල අසංගතතා සහ ජාවා කේත සමඟ අන්තර්ක්‍රියා කිරීම වැනි තත්ත්ව යටතේ ඒවා ඇති විය හැකිය.[12]

ලැම්ඩා සහ උසස් පෙළ ශ්‍රිත

[සංස්කරණය]

Kotlin හි ශ්‍රිත විචල්‍යවල ගබඩා කළ හැකි අතර, වෙනත් ශ්‍රිතවලට arguments ලෙස ලබා දීමට හෝ ඒවායේ ප්‍රතිඵල ලෙස ලබා ගැනීමට හැකිය. ශ්‍රිතයක් පරාමිතියක් ලෙස ලබා ගන්නා හෝ ශ්‍රිතයක් ප්‍රතිඵලයක් ලෙස ලබා දෙන ශ්‍රිතයක් උසස් පෙළ ශ්‍රිතයක් (higher-order function) ලෙස හැඳින්වේ.[7]

ලැම්ඩා ප්‍රකාශනයක් { } තුළ ලියන අතර, පරාමිති සහ ශ්‍රිත ශරීරය -> මගින් වෙන් කෙරේ.[7]

fun main() {
    val triple: (Int) -> Int = { number -> number * 3 }
    println(triple(4))
}

මෙම උදාහරණයේ triple විචල්‍යය Int අගයක් ලබාගෙන තවත් Int අගයක් ලබා දෙන ශ්‍රිතයක් දරයි.

Kotlin හි coroutines මගින් අසමමුහුර්ත කාර්යයන් අනුක්‍රමික කේතයට සමාන ආකාරයකින් ලිවීමට පහසුකම් සපයයි. අත්හිටුවිය හැකි ශ්‍රිත භාවිතයෙන් ක්‍රියාත්මක වීම තාවකාලිකව නවතා පසුව නැවත ආරම්භ කළ හැකිය. Coroutine එකක් අත්හිටුවීම සඳහා එය ක්‍රියාත්මක කරන thread එක අවහිර කිරීම අවශ්‍ය නොවේ.[13]

Coroutines ආරම්භ කිරීම, සමගාමී කාර්යයන් පාලනය කිරීම සහ අසමමුහුර්ත දත්ත ප්‍රවාහ සමඟ කටයුතු කිරීම සඳහා අවශ්‍ය බොහෝ පහසුකම් kotlinx.coroutines පුස්තකාලයෙන් සපයනු ලැබේ.[13]

ඉලක්ක වේදිකා

[සංස්කරණය]

Kotlin/JVM මගින් ජාවා අතථ්‍ය යන්ත්‍රය සඳහා කේත සම්පාදනය කරයි. මෙම ක්‍රියාත්මක කිරීම ජාවා පුස්තකාල සහ JVM මත පදනම් වූ මෘදුකාංග පද්ධති සමඟ භාවිත කළ හැකිය.[1]

Kotlin/JS මගින් Kotlin කේතය, අදාළ සම්මත පුස්තකාල කොටස් සහ ගැළපෙන පරායත්තතා JavaScript බවට පරිවර්තනය කරයි. එමගින් JavaScript ක්‍රියාත්මක කළ හැකි පරිසර සඳහා යෙදුම් සංවර්ධනය කිරීමට හැකිය. වෙබ් අතුරුමුහුණත් තැනීම සහ වෙබ්, ජංගම හා සේවාදායක යෙදුම් අතර පොදු කේත හුවමාරු කිරීම එහි භාවිතයන් අතර වේ.[14]

Kotlin/Native යනු අතථ්‍ය යන්ත්‍රයක් අවශ්‍ය නොවන දේශීය ද්විමය වැඩසටහන් බවට Kotlin කේතය සම්පාදනය කිරීමේ තාක්ෂණයකි. එය LLVM මත පදනම් වූ සම්පාදක පසුපස කොටසක් සහ Kotlin සම්මත පුස්තකාලයේ දේශීය ක්‍රියාත්මක කිරීමක් අඩංගු කරයි.[15]

Linux, Windows සහ Apple වේදිකා ඇතුළු ඉලක්ක සඳහා Kotlin/Native භාවිත කළ හැකිය. C පුස්තකාල සහ Swift හෝ Objective-C රාමු වැනි පවතින දේශීය මෘදුකාංග සමඟ අන්තර්ක්‍රියා කිරීම සඳහාද එහි පහසුකම් ඇත.[15]

Kotlin Multiplatform

[සංස්කරණය]

Kotlin Multiplatform හෙවත් KMP මගින් විවිධ වේදිකා සඳහා සංවර්ධනය කරන යෙදුම් අතර Kotlin කේතයේ පොදු කොටස් නැවත භාවිත කිරීමට හැකිය. යෙදුමක එක් කුඩා කොටසක් පමණක් හුවමාරු කිරීම හෝ එහි යෙදුම් තර්කයෙන් විශාල කොටසක් හුවමාරු කිරීම හෝ සිදු කළ හැකිය. අවශ්‍ය තැන්වල වේදිකාවට විශේෂිත කේත භාවිත කිරීමද මෙම ක්‍රමයට අයත් වේ.[5]

KMP භාවිත කිරීමෙන් සෑම වේදිකාවකටම එකම පරිශීලක අතුරුමුහුණතක් භාවිත කිරීම අනිවාර්ය නොවේ. පොදු යෙදුම් තර්කය Kotlin මගින් හුවමාරු කරමින් එක් එක් වේදිකාවට ගැළපෙන අතුරුමුහුණත් වෙන වෙනම පවත්වා ගත හැකිය. Compose Multiplatform භාවිතයෙන් අතුරුමුහුණත් කේතයද වේදිකා අතර හුවමාරු කළ හැකිය.[16]

Android සහ iOS අතර යෙදුම් තර්කය හුවමාරු කිරීම සඳහා Google විසින් Kotlin Multiplatform වෙත නිල සහාය ලබා දෙයි.[16]

සංවර්ධන මෙවලම්

[සංස්කරණය]

IntelliJ IDEA සහ Android Studio තුළ Kotlin සඳහා ඒකාබද්ධ සංවර්ධන සහාය ඇත.[1] Kotlin ව්‍යාපෘති සඳහා Gradle සහ Maven වැනි ගොඩනැගීමේ මෙවලම්ද භාවිත කළ හැකිය.[3] Kotlin/JS ඉලක්ක සහිත ව්‍යාපෘති සැකසීම හා කළමනාකරණය සඳහා Kotlin Multiplatform Gradle plugin භාවිත කෙරේ.[14]

භාවිතය

[සංස්කරණය]

Android යෙදුම්

[සංස්කරණය]

Android යෙදුම් සංවර්ධනය Kotlin හි ප්‍රධාන භාවිත ක්ෂේත්‍රයකි. Google හි Kotlin-first ප්‍රවේශය යටතේ නව Android යෙදුම් සංවර්ධනය ආරම්භ කිරීම සඳහා Kotlin නිර්දේශ කෙරේ.[4]

සේවාදායක සහ වෙබ් යෙදුම්

[සංස්කරණය]

සේවාදායක යෙදුම් සඳහා Kotlin සමඟ Spring සහ Ktor වැනි රාමු භාවිත කළ හැකිය.[1] Kotlin/JS මගින් වෙබ් යෙදුම්වල පරිශීලක පාර්ශ්වය සංවර්ධනය කිරීමටත්, පරිශීලක පාර්ශ්වය හා සේවාදායකය අතර දත්ත ආකෘති සහ වලංගුකරණ තර්කය වැනි කේත කොටස් හුවමාරු කිරීමටත් හැකිය.[14]

බහු වේදිකා යෙදුම්

[සංස්කරණය]

Kotlin Multiplatform භාවිතයෙන් ජංගම, ඩෙස්ක්ටොප්, වෙබ් සහ සේවාදායක යෙදුම් අතර පොදු කේත පවත්වා ගත හැකිය. මෙය පවතින ව්‍යාපෘතියකට ක්‍රමයෙන් එක් කළ හැකි අතර, හුවමාරු කරන කේත ප්‍රමාණය ව්‍යාපෘතියේ අවශ්‍යතා අනුව තීරණය කළ හැකිය.[5]

සංකේත රූප

[සංස්කරණය]

මේවාත් බලන්න

[සංස්කරණය]

ආශ්‍රිත

[සංස්කරණය]
  1. 1 2 3 4 5 6 7 JetBrains. “FAQ”. Kotlin Documentation.
  2. ↑ Dmitry Jemerov. “Hello World”. The JetBrains Blog. 2011 ජූලි.
  3. 1 2 Andrey Breslav. “Kotlin 1.0 Released: Pragmatic Language for the JVM and Android”. The JetBrains Blog. 2016 පෙබරවාරි.
  4. 1 2 Google. “Android’s Kotlin-first approach”. Android Developers.
  5. 1 2 3 Ekaterina Petrova. “Kotlin Multiplatform Is Stable and Production-Ready”. The JetBrains Blog. 2023 නොවැම්බර්.
  6. ↑ Egor Tolstoy. “Celebrating Kotlin 2.0: Fast, Smart, and Multiplatform”. The JetBrains Blog. 2024 මැයි.
  7. 1 2 3 JetBrains. “Higher-order functions and lambdas”. Kotlin Documentation.
  8. 1 2 3 4 5 JetBrains. “Basic syntax overview”. Kotlin Documentation.
  9. ↑ JetBrains. “Classes”. Kotlin Documentation.
  10. 1 2 3 JetBrains. “Functions”. Kotlin Documentation.
  11. 1 2 JetBrains. “Visibility modifiers”. Kotlin Documentation.
  12. 1 2 3 JetBrains. “Null safety”. Kotlin Documentation.
  13. 1 2 JetBrains. “Coroutines”. Kotlin Documentation.
  14. 1 2 3 JetBrains. “Kotlin/JavaScript”. Kotlin Documentation.
  15. 1 2 JetBrains. “Kotlin/Native”. Kotlin Documentation.
  16. 1 2 Google. “Kotlin Multiplatform”. Android Developers.

බාහිර සබැඳි

[සංස්කරණය]
"https://si.wikipedia.org/w/index.php?title=Kotlin&oldid=802290" වෙතින් සම්ප්‍රවේශනය කෙරිණි