Computer >> 컴퓨터 >  >> 체계 >> Android

여전히 Java를 사용하여 Android 앱을 개발하고 계십니까? 대신 Kotlin을 사용해 보세요.

Kotlin은 지난 2년 동안 엄청난 발전을 이룩했으며, 모든 곳에서 유행하는 주제였으며 여전히 인기가 높아지고 있습니다. 또한 Google이 Kotlin을 Android 앱 개발의 공식 언어로 채택한 것도 공식입니다.

하지만 그럼에도 불구하고 많은 사람들이 여전히 Android 개발을 위해 Kotlin보다 Java를 선호합니다. 그 이유는 무엇입니까? 그 주된 이유 중 하나는 사람들이 자신이 선택한 기본 언어를 Java에서 Kotlin으로 변경하는 데 여전히 익숙하지 않고 새로운 언어로 변경하는 것을 두려워하기 때문입니다.

지금 Kotlin 사용 시작하기, 쉬운 방법

실제로 Java에서 Kotlin으로 전환하는 것은 매우 쉽기 때문에 매우 유연한 언어입니다. Kotlin을 쉽게 코딩할 수 있지만 관용적으로는 Java입니다!

여전히 Java를 사용하여 Android 앱을 개발하고 계십니까? 대신 Kotlin을 사용해 보세요.
코틀린처럼 보이지만 실제로는 자바입니다. 하지만 다 괜찮을 거라고 장담합니다!!

이제 Java에서 Kotlin으로 전환할 때 주의해야 할 몇 가지 사항이 있습니다.

1. 자바 상호 운용성
Kotlin은 Java와 완전히 상호 운용 가능하며 그 반대도 마찬가지입니다. 이것이 의미하는 바는, Kotlin이 Java 코드를 호출할 수 있고, 앱 마이그레이션을 매우 쉽게 만들고, 이미 Java로 절반을 코딩했다는 것을 의미합니다. 상관없습니다. 어쨌든 Kotlin을 코딩하세요.

2. 더 이상 기본 데이터 유형이 없습니다.
int를 사용하여 선택할 때 기억하십시오. 또는 정수 자바에서 반나절이 걸리나요? 이제 Kotlin에 더 이상 기본 데이터 유형이 없으며 모든 것이 대신 Object로 래핑되었습니다.

3. 약간 변경된 구문(하지만 쉽게 따라할 수 있으므로 걱정하지 마세요.)
변수, 함수 및 클래스 선언과 같은 여러 구문이 약간 변경되었지만 Java와 같은 OOP 배경에서 온 경우 그런 문제가 되지 않습니다. 또한 void 키워드와 세미콜론(';')이 제거되었습니다. 세미콜론 제거에 대해 Kotlin에게 감사드립니다!!
Android 클래스의 기본 예제를 보여 드리겠습니다.

//Inheritance and implementation is using ':' now
class BasicActivity : AppCompatActivity() {
    //variables declaration is now variable name first then type
    var a :Int = 10 //var is for mutable
    val b :Int = 15 //val is for immutable

    /*lateinit keyword must be added for initialisation of non-
    primitive type without initial value in Kotlin*/
    lateinit var someTextView:TextView

    //Also, no more new keyword here
    var gameList:List<Integer> = ArrayList()

    //overriding is using keyword instead of 
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_basic)
    }
}

4. 유형 추론
Kotlin은 변수에 대한 유형 추론을 제공하여 삶을 더 쉽게 만듭니다.

var a = 5 //will automatically infer this as integer
var b = "John" // will automatically infer this as String

5. 무효 안전 검사
Kotlin은 null 포인터 예외를 피하기 위해 null 안전 검사를 제공했습니다. null 값을 반환할 수 있는 모든 변수는 ?로 표시되고 표시되어야 합니다. 징후.

var a:String? = null
var b:String = null //not allowed 

또한 Null-Pointer Exception(Java Billon Dollar Mistakes)을 피하기 위해 null 안전 호출을 제공합니다.

//not allowed, a might be null
a.function() 

// this will not throw null pointer, instead will continue the flow
a?.function()

//force function call, can cause NPE, use this only if 100% sure that this value will not be null
a!!.function()

6. 더 이상 정적 키워드가 없습니다.
Static 키워드는 이제 클래스와 메서드 모두에 대해 Object 키워드로 대체되었습니다. 특히 메서드에 대한 Companion Object가 더 구체적입니다.

7. 대소문자 변경됨
이제 스위치 대소문자가 when이라는 새 키워드로 수정되었습니다. 더 깔끔하고 유연해 보이는 것:

when (x) {
    1 -> println("One")
    2 -> print("Two")
	else -> print("Others")
}

8. 확인된 예외가 더 이상 없음
Java에서 일부 작업을 수행하거나 캐스팅할 때 빨간색 경고가 나타나고 예외 검사를 추가하라는 메시지가 표시되었던 것을 기억하십니까? 이제 Kotlin에서 제거되었습니다. 이제 IDE에서 더 이상 예외를 강제하지 않습니다!!

Kotlin에서 개발을 시작해야 하는 부분에 대한 것이지만 관용적으로는 Java입니다.
이제 코틀린 입문하기 어렵지 않죠? 이제 Kotlin은 Java와 크게 다르지 않은 것 같습니다.

Kotlin에서 제공하는 기능

여전히 Java를 사용하여 Android 앱을 개발하고 계십니까? 대신 Kotlin을 사용해 보세요.

이제 Kotlin과 Java가 어떻게 다른지 살펴본 후 Kotlin에서 제공하는 기능과 Kotlin 방식으로 Kotlin을 천천히 시작하는 방법도 살펴봐야 합니다.

1. 유연성
내가 Kotlin을 좋아하는 주된 이유 중 하나는 언어의 유연성입니다. 당신은 OOP 순수 주의자입니까? 현재 화제가 되고 있는 함수형 프로그래밍을 해보고 싶으십니까? 그리고 코딩에 대한 사랑 맙소사, Kotlin에서 둘 다 할 수 있습니다! FP가 제공하는 모든 기능을 완벽하게 제공하지는 않지만 지원하기에 충분합니다.

2. 람다 지원
예, 이제 Java 8이 람다를 지원한다는 것을 압니다. 그러나 Kotlin이 이 부분에서 먼저 나왔고 그 부분에서 매우 잘 작동합니다. 물론 처음에는 Lambda 함수 사용으로 전환하는 것이 어려울 수 있지만 언급한 대로 Kotlin은 이에 대해 매우 유연합니다. 자, 당신의 전화입니다!
Android 라이브러리 중 일부는 Lambda 지원도 활성화했습니다(예:View.OnClickListener). (Android Background에서 왔다면 이 방법이 이미 매우 익숙할 것이라고 확신합니다.) :

val randomButton : Button

//using lambda function as argument
randomButton.setOnClickListener{v -> doRandomStuff(v) }

3. 데이터 클래스
Kotlin은 Data 클래스라는 Model/Entity 클래스의 대체품을 제공했습니다. 중복된 setter getter의 필요성을 제거하고 내장형 equal 메서드와 toString 기능이 있어 따로 만들 필요가 없습니다. 또한 사용하기 매우 쉽습니다.

data class Person(
    val id:String,
    val name:String = "John Doe" //Default Value
)

//Initialisation block
var person = Person("id","Not John")

4. 확장 기능
Kotlin에서는 확장 기능을 사용할 수 있으므로 코드를 더 읽기 쉽게 만들 수 있습니다. 또한 클래스 자체를 수정하지 않고도 클래스에 기능을 제공할 수 있습니다.

fun Int.superOperation(anotherInt:Int):Int {
    val superNumber = this * anotherInt + anotherInt
    return superNumber
}

//you can now call the functions
val someNumber = 5
val superNumber = someNumber.superOperation(10) //65

5. 명명 및 기본 인수
C#과 마찬가지로 Kotlin은 메서드에 대한 명명된 매개변수와 기본 매개변수도 지원합니다. 각 인수에 값을 전달할 필요가 완전히 제거되었습니다. 수정하려는 값을 선택할 수 있으며 짜잔! 10번의 함수 호출에 대해 동일한 특정 값을 전달하는 번거로움이 더 이상 없습니다!

//variable declaration
fun someOperations(var x: Int, var y:Int, var z:Int = 1){
	return x+y+z
}

someOperations(1,2) //return 4
someOpeartions(y = 1, x = 1) //return 3

6. 참조 평등
Kotlin은 또한 참조 평등('===')과 함께 제공되며 두 변수가 현재 동일한 객체를 참조하고 있는지 확인합니다.

var a = 10
var b = 10
a == b //true
a === b //true also, primitive type object equation will only check its value

data class Person (val name: String)

val p1 = Person("John")
val p2 = Person("John")

p1 == p2 //true
p1 === p2 //false

7. 스마트 캐스팅
이제 Kotlin은 인스턴스를 사용하는 대신 캐스팅 또는 유형 검사에 사용할 수 있는 더 쉽고 읽기 쉬운 구문을 제공합니다.

//type checking
//kotlin smart cast mechanism will also automatically change the object into corresponding type if it passes the type checking
if (shape is Circle) {
    println(“it’s a Circle”)
    shape.radius //automatically be casted as Circle
} else if (shapeObject is Square) {
    println(“it’s a Square”)
} else if (shapeObject is Rectangle) {
    print(“it’s a Rectangle”)
}

Kotlin에는 as도 있습니다. 명시적 캐스팅을 활성화하는 키워드:

//It's considered unsafe since it behaves simillarly like static casting
var anotherShape = shape as Circle

//This can be used instead for safe casting
var safeShape = shape as? Circle

8. 코루틴
비동기 호출은 항상 Java에서 번거로운 작업이었습니다. 스레드를 만드는 것은 코드 공간을 너무 많이 차지하고 코드를 읽을 수 없게 만듭니다. 코루틴은 기존 스레드 작업을 대체하여 깨끗하고 강력한 코드를 제공하도록 만들어졌습니다.

import kotlinx.coroutines.*

fun main() {
    // launch a new coroutine in background and continue
    GlobalScope.launch { 
        // non-blocking delay for 1 second (default time unit is ms)
        delay(1000L) 
        
        // print after delay
        println("World!") 
    }
    // main thread continues while coroutine is delayed
    println("Hello,") 
    
    // block main thread for 2 seconds to keep JVM alive
    Thread.sleep(2000L) 
}

코루틴은 또한 Job Joining, Channel, Shared Context 및 상위와 같은 보다 복잡한 작업을 지원합니다. 자세한 내용과 더 많은 사용법은 여기에서 읽을 수 있습니다.

포장하기

요약하자면 Kotlin을 사용하기 시작하는 것은 매우 쉽습니다. Java를 코딩하는 방법과 매우 유사하게 Kotlin을 코딩할 수 있습니다. 또한 Kotlin은 Java 사용보다 우위를 점할 수 있는 여러 기능을 제공합니다.

물론, 자바는 현재 여전히 강세를 보이고 있습니다. 그러나 새로운 것을 배우기 시작하는 것은 결코 잘못된 것이 아닙니다. 우리는 프로그래머로서 평생 학습을 수용하고 학습을 중단하지 않아야 합니다. Kotlin의 가장 좋은 점은 Java에서 쉽게 마이그레이션할 수 있다는 것입니다.

읽어 주셔서 감사합니다. 즐겁게 감상하시고 유용하게 사용하시길 바랍니다! Kotlin 탐색에 행운을 빕니다. 다음에 뵙겠습니다.