helloWorld JAVA to Kotlin

๐Ÿ“ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

  • MainActivity.java: ๋ฉ”์ธ ์•กํ‹ฐ๋น„ํ‹ฐ (์•ฑ์˜ ํ•ต์‹ฌ ๋กœ์ง)
  • activity_main.xml: UI ๋ ˆ์ด์•„์›ƒ ํŒŒ์ผ
  • AndroidManifest.xml: ์•ฑ ์„ค์ • ๋ฐ ๊ถŒํ•œ
  • build.gradle: ๋นŒ๋“œ ์„ค์ • ๋ฐ ์˜์กด์„ฑ
  • strings.xml: ๋ฌธ์ž์—ด ๋ฆฌ์†Œ์Šค
  • README.md: ํ”„๋กœ์ ํŠธ ๋ฌธ์„œ

๐Ÿ”ง ์ถ”๊ฐ€๋œ ์„ค์ • ํŒŒ์ผ๋“ค:

  • gradle.properties: Gradle ์ „์—ญ ์„ค์ •
  • local.properties: SDK ๊ฒฝ๋กœ ์„ค์ •
  • gradle/wrapper/: Gradle ๋ž˜ํผ ์„ค์ •
  • gradlew & gradlew.bat: Gradle ์‹คํ–‰ ์Šคํฌ๋ฆฝํŠธ
  • proguard-rules.pro: ์ฝ”๋“œ ๋‚œ๋…ํ™” ์„ค์ •
  • .idea/runConfigurations/app.xml: Android Studio ์‹คํ–‰ ํ™˜๊ฒฝ ์„ค์ •

๐Ÿš€ Android Studio์—์„œ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•:

  1. ํ”„๋กœ์ ํŠธ ์—ด๊ธฐ:
    • Android Studio ์‹คํ–‰
    • “Open” ํด๋ฆญ
    • /Users/junhoha/bigdata/HelloWorldAndroid ํด๋” ์„ ํƒ
  2. ์ฒซ ์‹คํ–‰ ์‹œ ์„ค์ •:
    • Gradle ๋™๊ธฐํ™”๊ฐ€ ์ž๋™์œผ๋กœ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค
    • ํ•„์š”ํ•œ SDK๊ฐ€ ์ž๋™์œผ๋กœ ๋‹ค์šด๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค
  3. ์•ฑ ์‹คํ–‰:
    • ์ƒ๋‹จ ํˆด๋ฐ”์—์„œ “app” ์‹คํ–‰ ์„ค์ •์ด ์„ ํƒ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธ
    • ๋…น์ƒ‰ ์žฌ์ƒ ๋ฒ„ํŠผ ํด๋ฆญ ๋˜๋Š” Shift + F10
    • ๋””๋ฐ”์ด์Šค/์—๋ฎฌ๋ ˆ์ดํ„ฐ ์„ ํƒํ•˜์—ฌ ์‹คํ–‰

๐Ÿ“ฑ ์‹คํ–‰ ๊ฒฐ๊ณผ:

์•ฑ์ด ์‹คํ–‰๋˜๋ฉด ํ™”๋ฉด ์ค‘์•™์— “Hello World! ์•ˆ๋…•ํ•˜์„ธ์š”!” ๋ฉ”์‹œ์ง€๊ฐ€ ๋นจ๊ฐ„์ƒ‰์œผ๋กœ ํ‘œ์‹œ๋˜๊ณ , ๊ทธ ์•„๋ž˜์— “์ฒซ ๋ฒˆ์งธ ์•ˆ๋“œ๋กœ์ด๋“œ ์•ฑ์ž…๋‹ˆ๋‹ค!” ๋ฉ”์‹œ์ง€๊ฐ€ ํŒŒ๋ž€์ƒ‰์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๐ŸŽฏ Kotlin ๋ณ€ํ™˜

๐Ÿ“ฑ ๋ณ€๊ฒฝ๋œ ์ฃผ์š” ์‚ฌํ•ญ๋“ค

1. MainActivity.kt (Kotlin ๋ณ€ํ™˜)

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        // Kotlin์˜ val ํ‚ค์›Œ๋“œ ์‚ฌ์šฉ
        val textView = findViewById<TextView>(R.id.hello_text)
        textView.text = "Hello World! ์•ˆ๋…•ํ•˜์„ธ์š”!"
    }
}

Java โ†’ Kotlin ๋ณ€ํ™˜ ํฌ์ธํŠธ:

  • public class โ†’ class (Kotlin์€ ๊ธฐ๋ณธ์ด public)
  • extends โ†’ : (์ƒ์† ๋ฌธ๋ฒ•)
  • findViewById() โ†’ findViewById<TextView>() (์ œ๋„ค๋ฆญ ํƒ€์ž… ๋ช…์‹œ)
  • TextView textView โ†’ val textView (๋ถˆ๋ณ€ ๋ณ€์ˆ˜)
  • .setText() โ†’ .text = (ํ”„๋กœํผํ‹ฐ ์ ‘๊ทผ)

2. build.gradle (์•ฑ ๋ ˆ๋ฒจ) – Kotlin ์ง€์› ์ถ”๊ฐ€

apply plugin: 'org.jetbrains.kotlin.android'  // Kotlin ํ”Œ๋Ÿฌ๊ทธ์ธ ์ถ”๊ฐ€

kotlinOptions {
    jvmTarget = '1.8'  // Kotlin JVM ํƒ€๊ฒŸ ์„ค์ •
}

dependencies {
    implementation 'androidx.core:core-ktx:1.16.0'  // Kotlin ํ™•์žฅ ํ•จ์ˆ˜
}

3. build.gradle (ํ”„๋กœ์ ํŠธ ๋ ˆ๋ฒจ) – Kotlin ๋นŒ๋“œ ์„ค์ •

buildscript {
    ext {
        kotlin_version = '2.1.21'  // ์ตœ์‹  Kotlin ๋ฒ„์ „
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

4. ์—…๋ฐ์ดํŠธ๋œ ๋ฒ„์ „๋“ค

  • compileSdk: 33 โ†’ 36 (์ตœ์‹  Android API)
  • targetSdk: 33 โ†’ 36
  • Kotlin: 2.1.21 (์ตœ์‹  ๋ฒ„์ „)
  • Gradle ํ”Œ๋Ÿฌ๊ทธ์ธ: 8.10.0 (์ตœ์‹  ๋ฒ„์ „)

๐Ÿ” Kotlin์˜ ์žฅ์ ๋“ค์ด ์ ์šฉ๋œ ๋ถ€๋ถ„

  1. ๊ฐ„๊ฒฐํ•œ ๋ฌธ๋ฒ•: Java ๋Œ€๋น„ ๋” ์ ์€ ์ฝ”๋“œ๋กœ ๋™์ผํ•œ ๊ธฐ๋Šฅ
  2. Null Safety: Kotlin์˜ ํƒ€์ž… ์‹œ์Šคํ…œ์œผ๋กœ ๋” ์•ˆ์ „ํ•œ ์ฝ”๋“œ
  3. ํ™•์žฅ ํ•จ์ˆ˜: core-ktx ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ Android ๊ฐœ๋ฐœ ํŽธ์˜์„ฑ ์ฆ๋Œ€
  4. ํ”„๋กœํผํ‹ฐ ์ ‘๊ทผ: .text = ๊ฐ™์€ ์ง๊ด€์ ์ธ ํ”„๋กœํผํ‹ฐ ์„ค์ •

๐Ÿš€ ํ˜„์žฌ ์ƒํƒœ

  • โœ… Java โ†’ Kotlin ์™„์ „ ๋ณ€ํ™˜ ์™„๋ฃŒ
  • โœ… Kotlin ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ฐ ์˜์กด์„ฑ ์„ค์ • ์™„๋ฃŒ
  • โœ… ์ตœ์‹  Android API ๋ ˆ๋ฒจ ์ ์šฉ
  • โœ… ๋นŒ๋“œ ์„ค์ • ์ตœ์‹ ํ™” ์™„๋ฃŒ

โœ… Gradle ๋นŒ๋“œ ์—๋Ÿฌ ํ•ด๊ฒฐ ์™„๋ฃŒ!

๋ฐœ์ƒํ–ˆ๋˜ repository ์ถฉ๋Œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฃผ์š” ์ˆ˜์ • ์‚ฌํ•ญ:

๐Ÿ”ง ํ•ด๊ฒฐํ•œ ๋ฌธ์ œ๋“ค:

  1. Repository ์„ค์ • ์ถฉ๋Œ: settings.gradle์—์„œ dependencyResolutionManagement ์ œ๊ฑฐ
  2. Build ์Šคํฌ๋ฆฝํŠธ ํ˜ธํ™˜์„ฑ: ์ตœ์‹  ํ”Œ๋Ÿฌ๊ทธ์ธ ์‹œ์Šคํ…œ ๋Œ€์‹  ์ „ํ†ต์ ์ธ buildscript ๋ฐฉ์‹ ์‚ฌ์šฉ
  3. ์•ฑ ๋งค๋‹ˆํŽ˜์ŠคํŠธ: ์ตœ์‹  Android ํ‘œ์ค€์— ๋งž๊ฒŒ ์—…๋ฐ์ดํŠธ
  4. ํ…Œ๋งˆ ๋ฐ ๋ฆฌ์†Œ์Šค: Material Design ํ…Œ๋งˆ์™€ ํ•„์ˆ˜ ๋ฆฌ์†Œ์Šค ํŒŒ์ผ ์ถ”๊ฐ€

๐Ÿ“ฑ ์ˆ˜์ •๋œ ํ•ต์‹ฌ ํŒŒ์ผ๋“ค:

  • settings.gradle: Repository ์ถฉ๋Œ ํ•ด๊ฒฐ
  • build.gradle (ํ”„๋กœ์ ํŠธ): buildscript ๋ฐฉ์‹์œผ๋กœ ๋ณ€๊ฒฝ
  • app/build.gradle: apply plugin ๋ฐฉ์‹์œผ๋กœ ๋ณ€๊ฒฝ
  • AndroidManifest.xml: ์ตœ์‹  ํ‘œ์ค€ ์ ์šฉ
  • ํ…Œ๋งˆ ํŒŒ์ผ๋“ค: Material Design ํ…Œ๋งˆ ์ถ”๊ฐ€
  • MainActivity.java: AppCompatActivity ์‚ฌ์šฉ

๐Ÿš€ ์ด์ œ Android Studio์—์„œ:

  1. ํ”„๋กœ์ ํŠธ ์—ด๊ธฐ: HelloWorldAndroid ํด๋” ์„ ํƒ
  2. Gradle ๋™๊ธฐํ™”: ์ž๋™์œผ๋กœ ์ง„ํ–‰๋จ (๋” ์ด์ƒ ์—๋Ÿฌ ์—†์Œ)
  3. ์•ฑ ์‹คํ–‰: ๋…น์ƒ‰ Run ๋ฒ„ํŠผ์œผ๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅ

-> AndroidStudio ์—์„œ ์ž๋™ ๋ณ€ํ™˜ ์ง€์›๋จ.

์ฝ”๋ฉ˜ํŠธ

๋‹ต๊ธ€ ๋‚จ๊ธฐ๊ธฐ

์ด๋ฉ”์ผ ์ฃผ์†Œ๋Š” ๊ณต๊ฐœ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•„์ˆ˜ ํ•„๋“œ๋Š” *๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค