코 틀린과 자바-둘의 차이점은 무엇입니까?

작가: John Stephens
창조 날짜: 24 1 월 2021
업데이트 날짜: 1 칠월 2024
Anonim
Kotlin VS. Java?
동영상: Kotlin VS. Java?

콘텐츠


Java는 여전히 Android에 대해 생각할 때 떠오르는 첫 번째 프로그래밍 언어 일 수 있지만 있다 Android 개발에 Java를 사용합니다. 사실 Kotlin은 이제 Google의선호하는안드로이드 공식 언어!

Java에 대해 자세히 알아 보려면 Make Android Apps에서 Java에 대한 무료 입문 과정을 받으십시오.

현재 Android Studio에는 Kotlin 지원 기능이 내장되어 있으므로 Kotlin 코드를 이해하는 Android 프로젝트를 만드는 것은 Android Studio의 프로젝트 생성 마법사에서 확인란을 선택하는 것만 큼 쉽습니다. 옵션이 너무 초과 근무에 대한 지원이 커지면서이 결정은 주로 선호에 달려 있습니다.

그러나 Java에서 Kotlin으로 전환하면 정확히 무엇을 얻을 수 있습니까? 코 틀린에는 어떤 기능이 있고, Java에는없는 기능과 그 반대 기능은 무엇입니까?

이 기사에서는 Kotlin과 Java의 주요 차이점을 모두 살펴 보겠습니다.

Kotlin과 Java는 나중에 findViewByIds없이 더 간결한 코드를 제공합니다.

Kotlin 클래스와 동일한 작업을 수행하는 Java 클래스를 비교할 경우 Kotlin 클래스는 일반적으로 훨씬 간결하지만 특히 Kotlin이 작성해야하는 상용구 코드의 양을 심각하게 줄일 수있는 영역이 하나 있습니다. findViewByIds.

Kotlin Android Extensions를 사용하면보기에 대한 참조를 활동 파일로 가져올 수 있으며,이 시점에서 해당보기를 활동의 일부인 것처럼 작업 할 수 있습니다. 결과? 다른 findViewById 메소드를 다시 작성할 필요가 없습니다!

이러한 확장을 사용하기 전에 모듈 수준 build.gradle 파일 (플러그인 : 'kotlin-android-extensions'적용)에 추가 플러그인을 추가해야하지만 그 후에는 뷰 가져 오기를 시작할 수 있습니다. 예를 들어 activity_main.xml 파일에 ID가 textView 인 TextView가 포함 된 경우 Activity에 다음을 추가합니다.


kotlinx.android.synthetic.main.activity_main.textView 가져 오기

그런 다음 ID 만 사용하여이 TextView에 액세스 할 수 있습니다.

textView.setText ( "Hello World")

이것은 많은 Java에 해당하는 것보다 간결합니다.

TextView 텍스트 = (TextView) findViewById (R.id.textView); text.setText ( "Hello World");

Kotlin은 기본적으로 null 안전

NullPointerExceptions은 Java 개발자에게 큰 좌절의 원인입니다. Java를 사용하면 변수에 null을 할당 할 수 있지만 null 값이있는 객체 참조를 사용하려고하면 NullPointerException이 발생합니다.

또한 읽어보십시오 : Android 용 Kotiln 소개

Kotlin에서 모든 유형은 기본적으로 널 입력 불가능 (널 (NULL) 값을 보유 할 수 없음)입니다. Kotlin 코드에서 null을 할당하거나 반환하려고하면 컴파일 타임에 실패하므로 다음 행 중 어느 것도 컴파일되지 않습니다.

val 이름 : 문자열 = null

fun getName () : 문자열 = null

만약 너라면 정말 Kotlin에서 변수에 null 값을 할당하려면 유형 뒤에 물음표를 추가하여 해당 변수를 명시 적으로 nullable로 표시해야합니다.

val 번호 : Int? = null

이로 인해 Kotlin에서 NullPointerException이 발생하는 것이 거의 불가능합니다. 실제로이 예외가 발생하면 Kotlin이 명시 적으로 요청하도록 요청했거나 NullPointerException이 외부 Java 코드에서 발생했기 때문일 수 있습니다.


확장 기능

Kotlin은 개발자에게 새로운 기능으로 수업을 확장 할 수있는 기능을 제공합니다. 이는 항상 중요한 방법이 없다고 생각되는 수업이있는 경우에 이상적입니다!

이러한 '확장 기능'은 Java에서는 사용할 수 없지만 C #과 같이 Android 개발에 사용할 수있는 다른 프로그래밍 언어로도 사용할 수 있습니다.

다음 읽기 : 초보자를위한 Java 튜토리얼

확장하려는 클래스 이름 (예 : 'String')을 생성중인 함수 이름 ( 'styleString')에 접두사를 붙여 확장 함수를 만듭니다.

fun String.styleString () : String {// 문자열 스타일을 지정하고 반환합니다 //}

그런 다음를 통해 확장 클래스의 인스턴스에서이 함수를 호출 할 수 있습니다. 마치 해당 클래스의 일부인 것처럼 표기법 :

myString.styleString ()

코 루틴은 일류 시민입니다

네트워크 I / O 또는 CPU 집약적 작업과 같이 장기 실행 작업을 시작할 때마다 작업이 완료 될 때까지 호출 스레드가 차단됩니다. 기본적으로 Android는 단일 스레드이므로 기본 스레드를 차단하자마자 앱의 UI가 중지되며 작업이 완료 될 때까지 응답하지 않습니다.

Java에서 해결책은 전통적으로이 집중적이거나 오래 실행되는 작업을 수행 할 수있는 백그라운드 스레드를 작성하는 것이었지만 여러 스레드를 관리하면 복잡하고 오류가 발생하기 쉬운 코드로 이어질 수 있으며 새 스레드를 작성하는 것은 비용이 많이 드는 작업입니다.

Kotlin에서 추가 스레드를 만들 수 있지만 코 루틴을 사용할 수도 있습니다. 코 루틴은 스레드를 차단하지 않고 특정 지점에서 실행을 일시 중단하고 나중에 다른 스레드에서이 기능을 다시 시작하여 장기 실행 및 집중 작업을 수행합니다. 이를 통해 비 차단 비동기 코드를 만들 수 있습니다. 외모 동기 적이므로보다 명확하고 간결하며 사람이 읽을 수 있습니다. 코 루틴은 또한 스택이 없으므로 스레드에 비해 메모리 사용량이 적으며 async / await와 같은 추가 스타일의 비동기식 비 블로킹 프로그래밍을 가능하게합니다.

확인 된 예외가 없습니다

Kotlin은 예외를 확인하지 않았으므로 예외를 포착하거나 선언 할 필요가 없습니다.

이것이 Kotlin에 끌리는 지 또는 Java를 고수 하려는지 여부는 개발자 커뮤니티를 구분하는 기능이므로 확인 된 예외에 대한 귀하의 의견에 달려 있습니다. try / catch 블록으로 인해 Java 코드가 복잡해지면이 생략에 만족할 것입니다. 그러나 확인 된 예외가 오류 복구에 대해 생각하고 궁극적으로보다 강력한 작성을 추진하도록 유도합니다. 코드를 보면 Java가 Kotlin보다 우월한 영역으로 볼 수 있습니다.

위임에 대한 기본 지원

Kotlin은 Java와 달리 일류 위임 (때로는 암시 적 위임이라고도 함)을 통해 "상속 구성 구성"디자인 패턴을 지원합니다. 위임은 수신 개체가 작업을 원래 컨텍스트가있는 도우미 개체 인 두 번째 대리자 개체에 위임하는 위치입니다.

Kotlin의 클래스 위임은 상속을 대신하여 여러 상속을 사용할 수있게합니다. 한편 Kotlin의 위임 된 속성은 코드 중복을 방지하는 데 도움이됩니다. 예를 들어 여러 속성의 getter 및 setter에 동일한 코드를 재사용해야하는 경우이 코드를 위임 된 속성으로 추출 할 수 있습니다. 속성 대리자는 getValue 연산자 함수 및 선택적으로 setValue 연산자를 정의해야합니다.

class Delegate {연산자 재미 getValue (...) ... ... ...} 연산자 재미 setValue (...) ... ... ...}}

그런 다음 속성을 만들 때이 특정 속성에 대한 getter 및 setter 함수가 다른 클래스에서 처리됨을 선언 할 수 있습니다.

MyClass {var 속성 : String by Delegate ()}

데이터 클래스

프로젝트가 데이터 만 보유하는 여러 클래스를 갖는 것은 드문 일이 아닙니다. Java에서는 클래스 자체에 기능이 거의 없지만 이러한 클래스에 대해 많은 상용구 코드를 작성하고 있습니다. 일반적으로 생성자, 데이터를 저장할 필드, 각 필드의 getter 및 setter 함수와 hashCode (), equals () 및 toString () 함수를 정의해야합니다.

Kotlin에서 클래스 정의에 'data'키워드를 포함하면 컴파일러는 필요한 모든 getter 및 setter 생성을 포함하여이 모든 작업을 수행합니다.

데이터 클래스 Date (var month : String, var day : Int)

스마트 캐스트

Java에서는 종종 객체를 캐스트 할 수 있음이 분명한 상황에서 유형을 확인한 다음 객체를 캐스트해야합니다.

Kotlin의 스마트 캐스트는 이러한 중복 캐스트를 처리 할 수 ​​있으므로 Kotlin의 'is'연산자로 이미 확인한 경우 명세서 내에서 캐스트 할 필요가 없습니다. 예를 들어, 컴파일러는 다음 캐스트가 안전하다는 것을 알고 있습니다.

if (hello is String) {printString (hello)}

생성자 지원

Java와 달리 Kotlin 클래스는 기본 생성자와 하나 이상의 보조 생성자를 가질 수 있으며, 클래스 생성에 클래스 생성자를 포함시켜 생성 할 수 있습니다.

MainActivity 생성자 (firstName : String) {}

암시 적 확장 변환을 지원하지 않습니다

Kotlin은 숫자에 대한 암시 적 확장 변환을 지원하지 않으므로 작은 유형은 암시 적으로 더 큰 유형으로 변환되지 않습니다. Kotlin에서 Byte 유형의 값을 Int 변수에 지정하려면 명시 적 변환을 수행해야하지만 Java는 암시 적 변환을 지원합니다.

Kotlin을 사용한 주석 처리 라이브러리

Kotlin은 주석 처리에 의존하는 고급 프레임 워크를 포함하여 기존의 모든 Java 프레임 워크 및 라이브러리를 지원하지만 일부 Java 라이브러리는 이미 RxKotlin과 같은 Kotlin 확장을 제공하고 있습니다.

주석 처리에 의존하는 Java 라이브러리를 사용하려는 경우 Kotlin 프로젝트에 추가하는 것은 라이브러리를 사용하여 종속성을 지정해야하므로 약간 다릅니다 코 틀린-캅트 플러그인을 사용한 다음 annotationProcessor 대신 Kotlin Annotation 처리 도구 (kapt)를 사용하십시오. 예를 들면 다음과 같습니다.

// 플러그인 적용 // 플러그인 적용 : kotlin-kapt // kapt 구성을 사용하여 각 종속 항목 추가 // 종속성 {kapt "com.google.dagger : dagger-compiler : $ dagger-version"... ... ...}

Java와의 호환성

Android 개발에 Kotlin 또는 Java를 사용할지 여부를 논의 할 때 세 번째 옵션이 있음을 알고 있어야합니다. 둘 다 사용. 두 언어의 모든 차이점에도 불구하고 Java와 Kotlin은 100 % 상호 운용 가능합니다. Java에서 Kotlin 코드를 호출하고 Kotlin에서 Java 코드를 호출 할 수 있으므로 동일한 프로젝트 내에서 Kotlin 및 Java 클래스를 나란히 가질 수 있으며 모든 것이 여전히 컴파일됩니다.

Kotlin을 시작하면 기존 프로젝트에 Kotlin을 점진적으로 도입 할 수 있기 때문에 두 언어 사이를 이동하는 이러한 유연성은 유용하지만 영구적으로 두 언어를 사용하는 것을 선호 할 수도 있습니다. 예를 들어, Kotlin에서 작성하는 것을 선호하는 특정 기능과 Java로 작성하기가 쉬운 특정 기능이있을 수 있습니다. Kotlin과 Java는 모두 바이트 코드로 컴파일되므로 최종 사용자는 Java 코드의 끝을 알 수 없으며 Kotlin 코드가 시작되므로 Java로 구성된 앱을 출시 할 이유가 없습니다. 코 틀린 코드.

Kotlin을 직접 사용하고 싶다면 Android Studio 3.0 Preview 이상이 설치되어 있으면 시작할 수있는 몇 가지 방법이 있습니다.

  • 새 Android Studio 프로젝트를 작성하십시오. 가장 쉬운 방법은 새 프로젝트를 만들고 프로젝트 생성 마법사에서 'Kotlin 지원 포함'확인란을 선택하는 것입니다.

  • 기존 디렉토리에 Kotlin 클래스를 추가하십시오. 문제의 디렉토리를 Control- 클릭 한 다음 '파일> 새로 만들기> Kotlin 파일 / 클래스'를 선택하십시오. Android Studio는 Kotlin을 지원하도록 프로젝트를 구성하도록 요청하는 배너를 표시합니다. '구성'링크를 클릭하고 화면의 지시를 따릅니다.

  • 기존 Java 파일을 Kotlin으로 변환하십시오. 파일을 Control- 클릭하고 '코드> Java 파일을 Kotlin 파일로 변환'을 선택하여 Kotlin 변환기를 통해 Java 파일을 실행할 수 있습니다.

마무리

보시다시피 Kotlin을 Java보다 선호하는 데는 많은 이유가 있지만 Java가 우세한 부분이 몇 가지 있습니다. 아마도 가장 주목할만한 점은 많은 안드로이드 개발자들이이 시점에서 Java에 대해 더 친숙하다는 것입니다. 아마도 코 틀린 대 자바 토론은 그들 자신의 장점이있는 언젠가는 곧 해결되지 않을 것입니다. 그렇다면 Kotlin으로 전환하겠습니까, 아니면 Java가 여전히 Android 개발에 가장 적합한 옵션이라고 생각하십니까?

다음 읽기 : Android 개발을위한 Java 구문 소개

지질학은 지구의 구조, 지구에 작용하는 다양한 과정 및 역사에 대한 연구입니다. 그것은 다룰 근거가 많습니다 (heh heh). 그러나 지질 팬을위한 수많은 Android 앱은 없습니다. 대부분의 정보는 책,지도 및 실제로 정보를 제공하기 위해 존재합니다. 모바일 앱은 지금까지만 이용할 수 있습니다. 그렇게 말하면, 여기 안드로이드를위한 최고의 지질학 앱...

독일어는 놀랍도록 인기있는 언어입니다. 독일, 오스트리아, 스위스 및 기타 여러 지역의 공식 언어입니다. 영어와 다른 방언과 함께 서 게르만 언어입니다. 독일어를 가르치는 다양한 앱과 서비스가 있습니다. 그러나 실제로는 소수만이 잘합니다. 우리는 우리가 가장 잘 작동한다고 생각하는 몇 가지를 직접 선택했습니다. 다음은 안드로이드를위한 최고의 독일어 학습 ...

당신에게 추천합니다