당신은 주제를 찾고 있습니까 “코틀린 자바 차이 – 바로 말씀 드릴께요. 자바 vs 코틀린 java vs kotlin 차이 비교 선택 시 고려 사항“? 다음 카테고리의 웹사이트 you.maxfit.vn 에서 귀하의 모든 질문에 답변해 드립니다: you.maxfit.vn/blog. 바로 아래에서 답을 찾을 수 있습니다. 작성자 기술노트with 알렉 이(가) 작성한 기사에는 조회수 15,739회 및 좋아요 219개 개의 좋아요가 있습니다.
모두 객체지향 프로그래밍을 지원하며 class 키워드를 사용 가능하나 자바는 class가 기본 단위로 class 안에서 로직을 만들어야 합니다. 반면에 코틀린은 class가 선택사항이며 Top-Level 에서 변수, 함수의 선언과 구현이 가능합니다.
코틀린 자바 차이 주제에 대한 동영상 보기
여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!
d여기에서 바로 말씀 드릴께요. 자바 vs 코틀린 java vs kotlin 차이 비교 선택 시 고려 사항 – 코틀린 자바 차이 주제에 대한 세부정보를 참조하세요
#자바_코틀린#java_kotlin#자바_vs_코틀린#java_vs_kotlin
멤버쉽 가입하시면 IT분야 진로 상담, 앱개발 컨설팅 1:1로 진행합니다~
https://www.youtube.com/channel/UCBtG00ljZ8R_DBQCTR4C00A/join
코틀린 자바 차이 주제에 대한 자세한 내용은 여기를 참조하세요.
[Kotlin] Kotlin vs. Java – 코틀린, 자바 차이점 비교 – 시계는 와치
Java – 코틀린, 자바 차이점 비교 … Java 비교하기. 꽤 오래전부터 많은 회사들과 개발자들이 Andro 개발에 있어서 Java 언어보다 kotlin 언어를 …
Source: dev-imaec.tistory.com
Date Published: 6/8/2021
View: 2081
자바와 코틀린의 차이점 – 기록은 습관
자바와 코틀린의 차이점. Java는 객체 지향 프로그래밍 언어입니다. Java로 개발 된 프로그램 또는 응용 프로그램은 여러 플랫폼 및 시스템 / 장치 …
Source: little-habit.tistory.com
Date Published: 11/27/2021
View: 8004
안드로이드 앱 만들기, 코틀린(Kotlin) vs.자바(Java) 무엇으로 …
코틀린, 단점도 있나요? · 1. 속도가 느리다. 안드로이드 어플리케이션을 위한 빌드를 생성한다면, 여전히 자바의 성능이 더 좋습니다. · 2. 자바와 비교 …
Source: media.fastcampus.co.kr
Date Published: 8/25/2022
View: 4990
[Kotlin] 코틀린이란? 코틀린과 자바의 차이 – 잡다한 프로그래밍
코틀린(Kotlin)은 인텔리제이(IntelliJ IDEA)라는 제품으로 유명한 젯브레인(JetBranins)에서 만든 언어로, 2011년 최초로 … 코틀린 자바의 차이.
Source: diqmwl-programming.tistory.com
Date Published: 5/15/2022
View: 3163
[Kotlin] 코틀린과 자바의 차이
[Kotlin] 코틀린과 자바의 차이. MarrRang 2021. 9. 21. 19:14. 저는 Java를 주로 사용합니다. 그런데 취미로 Flutter를 이용해서 앱을 만들어보려고 하던 중 Java와 …Source: marrrang.tistory.com
Date Published: 9/8/2022
View: 953
Java vs Kotlin 비교 / 안드로이드 앱 개발 승자는??? – mondayless
여기에서는 Kotlin과 Java Andro 개발 중 어느 것이 가장 좋은지 논의할 것입니다. 시작하겠습니다 ^^ … 4.4) 자바에서 코틀린으로 자동 변환
Source: mondayless.tistory.com
Date Published: 5/22/2022
View: 9315
[Java와 Kotlin 비교] 안드로이드 앱 개발, 자바와 코틀린의 차이 …
안녕하세요! 오늘은 IOS와 함께 스마트폰 OS의 대명사가 된 안드로이드(Andro)와 2017년 5월에 공식 개발 언어로 채택한 코틀린(Kotlin)에 대하여 …
Source: www.hanbit.co.kr
Date Published: 7/7/2022
View: 5561
코틀린(Kotlin)과 자바(Java)의 문법 차이 – 준비된 개발자
이외에도 무수히 많은 차이점이 있지만, 개인적인 생각으론 코틀린도 결국 JVM에서 동작하는 OOP 언어이기 때문에 Java를 잘 알고 Java 8 버전부터 …
Source: readystory.tistory.com
Date Published: 8/18/2022
View: 7409
[kotlin vs java ] 코틀린과 자바의 차이, 코틀린의 장점
[kotlin vs java ] 코틀린과 자바의 차이, 코틀린의 장점. 주하히 2022. 3. 31. 18:14. 기존에 java로 구현했던 spring 프로젝트를 kotlin으로 전환했다.Source: juhi.tistory.com
Date Published: 8/23/2021
View: 2202
주제와 관련된 이미지 코틀린 자바 차이
주제와 관련된 더 많은 사진을 참조하십시오 바로 말씀 드릴께요. 자바 vs 코틀린 java vs kotlin 차이 비교 선택 시 고려 사항. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.
주제에 대한 기사 평가 코틀린 자바 차이
- Author: 기술노트with 알렉
- Views: 조회수 15,739회
- Likes: 좋아요 219개
- Date Published: 2021. 2. 16.
- Video Url link: https://www.youtube.com/watch?v=qFxQpq_yYnE
[Android] 코틀린과 자바의 차이점 (kotlin, java, 안드로이드)
반응형
시작하기에 앞서
필자의 java 언어 수준은 학교 전공 수업인 java언어와 jsp 프로그래밍에서 배운 것으로 멈춰있고 kotlin 언어의 수준은 자바와 마찬가지로 프로젝트 경험 없이 기초만 배운 상황입니다.
따라서 개인적인 견해가 거의 없으므로 찾아본 참고 자료를 토대로 글을 이어가겠습니다.
잘못된 부분이 있다면 댓글로 피드백 부탁드립니다.
자바의 특징
현재 Oracle
객체 지향 방법론을 사용하며 여러 운영체제에서 실행될 수 있는 언어
자바 언어의 특징에 대해서 간단하게 보도록 하겠습니다.
멀티 플랫폼
크로스 플랫폼이라고도 불리는데 JVM(Java Virtual Machine)만 설치되어 있으면 어떤 운영체제에서도 애플리케이션을 작동시킬 수 있습니다.
메모리 관리 자바는 포인터 개념이 없고 자동으로 메모리를 관리합니다. Garbage Collector 가 사용하지 않는 자원을 자동으로 반환해줍니다. 프로그래밍이 편해집니다.
OOP (Object Oriented Programing) 부품들을 조립해서 하나의 제품을 만드는 것과 같은 원리입니다. 객체(Object)라는 단위로 나누고 객체들끼리 상호작용하는 방식입니다.
멀티 스레드 Thread 클래스와 Runnable 인터페이스를 이용하여 멀티 스레드를 구현합니다.
동적 로딩 필요한 시점에 구현한 클래스를 로딩할 수 있습니다.
코틀린 특징
JetBrains
개발자의 편의성, 간결하고 효율적인 코드 작성, 객체지향 프로그래밍과 함수형 프로그래밍의 장점을 절묘하게 조화시킨 언어
코틀린은 jvm의 바이트 코드로 실행되고 자바와 100% 호환되므로 뿌리부터 완전히 다른 새로운 개념의 언어는 아닙니다. 따라서 모든 특징을 설명하기보단 자바와 비교해가며 특징을 보도록 하겠습니다.
Type Inference 할당되는 리터럴 값을 알아서 추론해줍니다.
OOP 와 FP (Functional Programing) 객체지향 프로그래밍, 함수형 프로그래밍을 모두 지원합니다. 코틀린에서 함수는 일급 객체입니다. 고차 함수로 사용이 가능합니다.
모든 타입이 클래스 타입 기본형 타입마저 클래스로 존재합니다. (Nullable 위해)
Nullable Null 할당이 가능한 타입을 선언할 수 있습니다. NPE 예외를 컴파일 시점에서 미리 방지할 수 있습니다.
자바와 코틀린의 차이점
각 언어의 간단한 특징들만 살펴봤습니다.
자바 언어가 1990년대에 등장했고 코틀린 언어가 2010년도에 등장했으니 코틀린이 웬만한 좋은 특징들을 가지고 있기 때문에 간단하게 적었습니다. 예를 들어 가비지 컬렉터, 동적 로딩 등이 있겠죠?
그럼 두 언어의 차이점을 비교해보겠습니다.
Type system Multi-Platform OOP FP Type Inference Nullable 자바 (Java) 정적 타입 O O X X (9 이하) X 코틀린 (Kotlin) 정적 타입 O O O O O
더보기 두 언어는 정적 타입으로 컴파일러가 타입 오류를 잡아줄 수 있습니다. 또한 두 언어는 멀티 플랫폼 개발을 할 수 있는 비슷한 장점을 가지고 있습니다. 특히 두 언어로 안드로이드 개발이 가능합니다. 모두 객체지향 프로그래밍을 지원하며 class 키워드를 사용 가능하나 자바는 class가 기본 단위로 class 안에서 로직을 만들어야 합니다. 반면에 코틀린은 class가 선택사항이며 Top-Level 에서 변수, 함수의 선언과 구현이 가능합니다. 코틀린은 타입 추론이 가능하나 자바(9 이하)는 타입 추론을 할 수 없습니다. 마지막으로 중요한 차이점은 NPE 입니다. 자바는 null 을 참조하게 되면 예외를 발생시킵니다. 런타임 시에 흔히 발생할 수 있는 예외입니다. 그러나 코틀린은 컴파일 시점에서 미리 방지할 수 있습니다. Null 을 확인하는 연산자들이 존재하고 Null 이 가능한 타입도 있습니다.
코드의 차이 (main())
// java class Test { public static void main(String[] args) { System.out.print(“Hello Java”); } }
// kotlin fun main() { print(“Hello Kotlin”) }
안드로이드 개발에서 차이
안드로이드를 개발할 땐 객체지향 언어처럼 클래스 내에서 로직을 작성해야 합니다.
여전히 자바와 코틀린을 동시에 지원하므로 자바의 형식에 맞춰서 코틀린을 사용해야 합니다.
하지만 자바로 작성했을 때보다는 코틀린 코드의 양이 훨씬 줄어들고 간결해지므로 개발자의 편의성이 훨씬 좋습니다.
참고 자료
이것이 안드로이드다 (고돈호 지음)
핵심만 골라배우는 코틀린 프로그래밍 (심재철 지음)
자바의 정석 (남궁 성 지음)
Do it! 안드로이드 앱 프로그래밍 (정재곤 지음)
반응형
[Kotlin] Kotlin vs. Java
시계는 와치
Kotlin vs. Java 비교하기
꽤 오래전부터 많은 회사들과 개발자들이 Android 개발에 있어서 Java 언어보다 kotlin 언어를 많이 사용하는 추세입니다. 물론 아직도 Java를 많이 사용하고 있지만 구글에서도 Kotlin을 제 1언어로 채택하고 앞으로의 컴포넌트나 라이브러리들도 Kotlin으로 개발된다고 하니 안드로이드 개발자들은 Kotlin을 안 할 이유가 없어보입니다.
그래서 코드 사용에 있어서 Java와 Kotlin을 비교해보도록 하겠습니다.
비교 순서는 변수/상수, view 사용, Null 안정성, 객체 초기화, Data Class 순으로 알아보도록 하겠습니다.
1. 변수/상수
Java
String strVar = “”; // 변수
final String strVal = “”; // 상수
– 변수 : final을 사용하지 않음
– 상수 : final을 사용함
Kotlin
var strVar = “” // 변수
val strVal = “” // 상수
– 변수 : var 사용
– 상수 : val 사용
변수/상수 선언에 있어서 무엇이 더 보기 좋고 사용하기 좋은지는 사용자에 따라 다르지만 Kotlin은 iOS 개발에서 사용하는 Swift와 비슷하게 사용할 수 있어 안드로이드와 iOS를 같이 개발하는 개발자라면 Kotlin이 좀 더 편할 수 있을거라 생각드네요.
2. view 사용
* activity_main.xml의 btn_test라는 id를 가진 button 사용
Java
btnTest = findViewById(R.id. btn_test ) ; // 객체를 만들어 findViewById() 함수로 객체에 할당
btnTest .setText( “Test” ) ;
– findViewById() 함수로 Button 객체에 할당
Kotlin
btn_test. text = “Test” // xml에서 정의한 id 값으로 view 사용
– xml에서 정의한 id 값을 그대로 사용
Java에서는 view의 id를 객체로 할당하는 과정이 필요한 반면 Kotlin에서는 view의 id를 그대로 사용할 수 있습니다. 사용하는 view나 layout이 한, 두개면 상관 없겠지만 10~20개도 넘을 땐 코드가 적어도 10~20줄이 줄어드는 효과를 볼 수 있어 Kotlin에서 훨씬 더 편하게 사용할 수 있습니다.
물론 나중에 DataBinding을 사용하게 된다면 이마저도 쓰지않아도 되겠지만 Java와 Kotlin의 사용만 비교해보면 Kotlin이 더욱 편하게 사용될 수 있습니다.
3. NULL 안정성
Java
@Nullable String strNullable = null;
@NonNull String strNonNull = “” ;
– Java는 @(Annotation)을 사용해서 Nullable과 NonNull을 구분 할 수 있습니다. @Nullable은 null이 들어 올 수 있는 변수고, @NonNull은 null이 될 수 없는 변수입니다. Default는 Nullable입니다.
Kotlin
var strNullable : String? = null
var strNonNull : String = “”
– Kotlin은 ?(Optional)을 사용해서 Nullable과 NonNull을 구분 할 수 있습니다. ?(Optional)을 사용하기 위해서는 변수뒤에 자료형을 꼭 붙여주셔야 하고 ?을 붙이게 되면 null이 들어올 수 있고, 붙이지 않으면 null이 될 수 없습니다. Default는 NonNull 입니다.
Java에선 Annotation을 사용하고 Kotlin에선 Optional을 사용합니다. 위 코드는 단순히 null이 들어올수 있는 또는 없는 변수를 선언하는 방법이며 안전하게 null을 사용/컨트롤 하는 방법은 아래와 같습니다.
Java
strNullable .split( “/” ) ; // NPE
if ( strNullable != null ) {
strNullable .split( “/” ) ;
}
– strNullable 변수에 null이 들어와 있을 때 첫번째 코드로 짠다면 NPE가 발생할 수 있습니다. 그래서 null을 체크하기 위해서 if 문을 사용하였습니다,
Kotlin
strNullable . split ( “/” ) // NPE
strNullable ?. split ( “/” )
– strNullable 변수에 null이 들어와 있을 때 첫번째 코드로 짠다면 빨간줄이 생기고 build가 되지 않습니다. IDE에서 nullable 변수를 확인해서 바로 사용이 되지 않습니다. 그래서 두번째 방법과 같이 Optional을 사용하고 만약 strNullable 변수가 null이면 split() 함수는 실행되지 않습니다.
위의 Java 코드와 Kotlin 코드를 보면 Kotlin 코드가 훨씬 직관적이고 깔끔한것을 볼 수 있습니다. 이런 식으로 Kotlin에서는 null을 안전하게 사용할 수 있고 null 체크하는 방법 또한 매우 간단합니다.
4. 객체 초기화
Java
Intent testIntent = new Intent(this, SecondActivity.class); // 일반적인 객체 초기화 및 초기 작업
testIntent.putExtra(“ext1”, 1);
testIntent.putExtra(“ext2”, 2);
testIntent.putExtra(“ext3”, “3”);
testIntent.putExtra(“ext4”, “4”);
testIntent.putExtra(“ext5”, false);
– 객체를 new로 초기화하고 초기화된 객체를 이용해 초기 작업을 수행합니다.
Kotlin
val testIntent = Intent(this, SecondActivity::class.java).apply { // 객체 초기화 시 초기 작업 수행 putExtra(“ext1”, 1)
putExtra(“ext2”, 2)
putExtra(“ext3”, “3”)
putExtra(“ext4”, “4”)
putExtra(“ext5”, false)
}
– apply block을 이용하여 초기화 작업을 수행합니다. apply block안에서는 초기화된 객체 자신을 this로 사용하기 때문에 객체를 따로 명시해주지 않아도 바로 객체의 함수를 사용할 수 있습니다.
하나의 객체만 초기화하고 초기 작업을 수행할 땐 보기에 불편함이 없지만 Java에서 여러객체를 한번에 초기작업을 수행할 땐 가독성이 떨어질 수 있습니다. 하지만 Kotlin에선 객체 초기화 작업을 하나의 block으로 감싸지고 어떤 작업을 수행하는지 한 눈에 확인하기 좋고 코드 관리가 편해집니다.
5. Data Class
Java
public class JavaData {
JavaData (String s , int i , boolean b) {
this . s = s ;
this . i = i ;
this . b = b ;
}
private String s ;
private int i ;
private boolean b ;
public String getS () {
return s ;
}
public void setS (String s) {
this . s = s ;
}
public int getI () {
return i ;
}
public void setI ( int i) {
this . i = i ;
}
public boolean isB () {
return b ;
}
public void setB ( boolean b) {
this . b = b ;
}
}
JavaData data1 = new JavaData( “” , 0 , true ) ; // 생성자로 초기화
JavaData data2 = new JavaData() ; // 빈 생성자로 생성 후 set 함수로 초기화
data2.setS( “” ) ;
data2.setI( 0 ) ;
data2.setB( true ) ;
– Java에서 DTO를 만들기 위해선 변수에 대한 get/set 함수를 만들어주고(필수) 생성자를 만들어 변수를 초기화하는 작업을 수행할 수 있습니다.(선택)
Kotlin
data class KotlinData( var s : String? ,
var i : Int ,
var b : Boolean)
val data1 = KotlinData( “hi” , 1 , false ) // 생성자로 초기화
– Kotlin에선 class를 data class로 만들어 생성자에 인자를 var로 정의해주면 DTO로 사용할 수 있습니다. data class의 생성자에 초기값을 미리주면 비어있는 객체도 만들 수 있습니다. 그리고 비어있는 객체는 위의 Intent 초기화와 같이 apply block을 이용하여 초기화 시킬 수 있습니다.
딱 봐도 코드량이 많이 차이납니다. 하나씩 get/set을 만들어주는 코드에서(Java) data class를 사용하는 방법(Kotlin)으로 간단하게 DTO를 만들어 사용할 수 있습니다.
지금까지 Kotlin과 Java를 비교해봤습니다. Java를 주로 사용하시던 분들이라면 오히려 불편하다고 생각하실 수도 있지만 Kotlin을 써보고 익숙해지면 Java와는 비교할 수 없을 정도로 편하게 사용할 수 있을 것입니다. 이 외에도 함수, For loop, 가변인자 등 자바에서도 사용되지만 사용방법이 다른것들 또는 Extension Function, let/apply/run/with/also block 과 같은 Kotlin에서만 사용할 수 있는 것들이 많이 있어서 이런것들에 익숙해지신다면 훨씬 좋은 개발 능력을 기를 수 있을것이라고 생각합니다.
해당 게시글에 설명하지 않은 것들은 기회가 된다면 다른 글로 설명할 수 있도록 하겠습니다!
* 궁금한점이 있으시면 댓글로 남겨주세요~ 최대한 빨리 답변드리도록 하겠습니다!
코틀린 기본 문법 알아보기
Kotlin 기본 문법
자바와 코틀린의 차이점
자바와 코틀린의 차이점
Java는 객체 지향 프로그래밍 언어입니다. Java로 개발 된 프로그램 또는 응용 프로그램은 여러 플랫폼 및 시스템 / 장치 등에서 동일한 프로그램을 실행할 수있는 JVM (Java Virtual Machine)에서 실행됩니다. Kotlin은 최신 기능을 처리하는 새로운 프로그래밍 언어입니다. Kotlin은 정적으로 유형이 지정된 프로그래밍 언어입니다. Kotlin은 서버 측 응용 프로그램 개발에 적합한 선택이며 간결하고 표현력있는 코드를 작성할 수 있습니다.
Java 란 무엇입니까?
Java는 1995 년에 사용 된 OOP (object-oriented programming) 언어입니다. Java는 나중에 오라클이 인수 한 썬 마이크로 시스템에서 개발되었습니다. 브라우저에서 Java 프로그램을 실행하려면 제안되지 않은 플러그인으로 임베드 된 Java 애플릿을 사용해야합니다. 따라서 Java는 주로 독립형 애플리케이션 또는 백엔드 개발에 사용됩니다. Java는 James Gosling이 설계했으며 주요 구현은 OpenJDK입니다. Java는 Android 자체가 Java로 작성되므로 Android 애플리케이션 개발과 관련하여 대부분의 개발자에게 기본 선택입니다.
코틀린은 무엇입니까?
Kotlin은 IDE Jet Brains의 프로그래머가 개발 한 새로운 프로그래밍 언어로 최신 기능을 처리합니다. 2011 년에 처음 등장했으며 2016 년에 공식 릴리스되었으며 오픈 소스 언어입니다. Kotlin은 JVM (Java Virtual Machine)을 기반으로하는 Java, C ++와 같은 정적으로 유형이 지정된 프로그래밍 언어이지만 코드를 작성하고 iOS에서 실행 하기 위해 JavaScript , Android 및 Native 로 컴파일 할 수도 있습니다 . Kotlin은 원활한 학습 곡선으로 기존 Java 스택과 완벽하게 호환됩니다. 플러그인을 설치하기 만하면 Java에서 Kotlin으로 쉽게 전환 할 수 있습니다. 구글 I / O 기조 연설에서 코 틀린은 안드로이드 애플리케이션 개발을 위해 공식적으로 지원되는 언어가된다고 발표했다.
Java와 Kotlin의 일대일 비교 (Infographics)
다음은 Java와 Kotlin의 상위 8 가지 비교입니다.
Java와 Kotlin의 주요 차이점
둘 다 시장에서 인기있는 선택입니다. 몇 가지 주요 차이점에 대해 논의하겠습니다.
Kotlin은 불변 유형을 식별하고 컴파일러에 의해 내재 된 캐스트를 수행하는 스마트 캐스트를 지원하지만 Java에서는 캐스트를 식별하고 수행해야합니다.
Kotlin은 형식 유추를 지원하므로 변수의 데이터 형식을 명시 적으로 지정할 필요가 없지만 Java에서는 명시 적으로 지정해야합니다.
Kotlin에서는 예외를 검사하지 않았으므로 오류가 발생하기 쉬운 코드로 이어지지 만 Java는 오류 처리를 수행 할 수있는 검사 예외를 지원합니다.
Java 컴파일 시간은 Kotlin 컴파일 시간보다 15-20 % 빠르지 만 증분 빌드 컴파일의 관점에서 Kotlin은 Java와 동일한 컴파일 시간이 필요합니다.
Kotlin에서는 null 값을 변수에 할당하거나 값을 반환 할 수 없습니다. 실제로 할당하려면 특별한 구문으로 변수를 선언 할 수 있지만 Java에서는 null 값을 할당 할 수 있지만 null 값을 가리키는 객체에 액세스하려고하면 예외가 발생합니다.
Kotlin은 Java와 Kotlin의 차이에 관계없이 Java와 호환됩니다. Java에서는 Kotlin 코드를, Kotlin에서는 Java 코드를 호출 할 수 있습니다. 따라서 프로젝트에서 Java 클래스와 Kotlin 클래스를 나란히 둘 수 있으며 문제없이 컴파일 할 수 있습니다. 컴파일 후 Java 또는 Kotlin으로 작성된 클래스를 찾을 수 없습니다.
자바 vs 코 틀린 비교표
다음은 비교표입니다.
비교의 기초 자바 코 틀린 널 안전 Java에서 NullPointerException은 개발자에게 큰 좌절을 안겨줍니다. 사용자가 변수에 null을 할당 할 수 있지만 null 값을 가진 객체 참조에 액세스하는 동안 사용자가 처리해야하는 null 포인터 예외가 발생합니다. Kotlin에서 기본적으로 모든 유형의 변수는 null을 사용할 수 없습니다 (즉, 모든 유형의 변수 / 객체에 null 값을 할당 할 수 없음). null 값을 할당하거나 반환하려고하면 컴파일 타임에 Kotlin 코드가 실패합니다. 변수에 null 값을 가지려면 다음과 같이 선언 할 수 있습니다.
value num : Int? = null 확장 기능 Java에서 기존 클래스의 기능을 확장하려면 새 클래스를 작성하고 상위 클래스를 상속해야합니다. Java에서는 확장 기능을 사용할 수 없습니다. Kotlin은 개발자에게 기존 클래스를 새로운 기능으로 확장 할 수있는 기능을 제공합니다. 클래스 이름 앞에 새 함수 이름을 붙여 확장 함수를 만들 수 있습니다. 코 루틴 지원 Java에서 장기 실행 네트워크 I / 0 또는 CPU 집중 작업을 시작할 때마다 해당 스레드가 차단됩니다. Android는 기본적으로 단일 스레드이므로 Java는 백그라운드에서 여러 스레드를 작성하고 실행할 수있는 기능을 제공하지만이를 관리하는 것은 복잡한 작업입니다. Kotlin에서는 이러한 장기 실행 집중 작업을 실행하기 위해 여러 스레드를 만들 수 있지만 코 루틴 지원을 통해 장기 실행 집중 작업을 실행하는 동안 스레드를 차단하지 않고 특정 지점에서 실행을 일시 중단합니다. 확인 된 예외 없음 Java에서는 예외 지원을 확인하여 개발자가 예외를 선언하고 포착하게하여 궁극적으로 우수한 오류 처리 기능을 갖춘 강력한 코드로 이어집니다. 코 틀린에서는 예외를 확인하지 않았습니다. 따라서 개발자는 예외를 선언하거나 잡을 필요가 없습니다.이 예외는 장단점이 있습니다. 데이터 클래스 Java에서 데이터를 보유해야하지만 다른 것은 필요없는 클래스가 필요하다고 가정하십시오. 이를 위해 생성자, 데이터를 저장할 변수, getter 및 setter 메소드, hashcode (), toString () 및 equals () 함수를 정의해야합니다. Kotlin에서 데이터를 보유 해야하는 클래스가 필요하면 클래스 정의에서 키워드 “data”를 사용하여 클래스를 선언 할 수 있습니다. 컴파일러는 생성자, getter, setter 메소드 생성과 같은 모든 작업을 처리합니다. 필드. 스마트 캐스트 Java에서는 변수 유형을 확인하고 작업에 따라 캐스팅해야합니다. Kotlin에서 스마트 캐스트는 불변 값을 확인하고 암시 적 캐스팅을 수행하는 키워드 “is-checks”를 사용하여 이러한 캐스팅 확인을 처리합니다. 타입 추론 Java에서는 선언하는 동안 각 변수의 유형을 명시 적으로 지정해야합니다. Kotlin에서는 처리 할 할당에 따라 각 변수의 유형을 명시 적으로 지정할 필요가 없습니다. 명시 적으로 지정하려면 할 수 있습니다. 기능적 프로그래밍 Java는 Java 8까지 기능 프로그래밍을 지원하지 않지만 Android 애플리케이션을 개발하는 동안 Java 8 기능 의 유일한 서브 세트를 지원합니다 . Kotlin은 람다, 연산자 오버로드, 고차 함수 및 지연 평가 등과 같은 많은 유용한 방법으로 구성된 절차 및 기능 프로그래밍 언어의 혼합입니다.
결론
마지막으로 Java와 Kotlin의 비교에 대한 개요입니다. 이 Java vs Kotlin 기사를 읽은 후 Java와 Kotlin 언어에 대해 더 잘 이해할 수 있기를 바랍니다. 필자는 Java가 Kotlin보다 이점이 적더라도 컴파일 시간에 대한 걱정없이 Android 응용 프로그램 개발을 위해 Kotlin을 진행할 수 있다고 생각합니다.
https://www.educba.com/java-vs-kotlin/
안드로이드 앱 만들기, 코틀린(Kotlin) vs.자바(Java) 무엇으로 시작할까?
코틀린(Kotlin)이란?
코틀린은 ‘젯브레인스(JetBrains)’라는 회사에서 만든 안드로이드 개발을 위한 프로그래밍 언어로, 2016년도에 정식 발표되었습니다. 코틀린은 기존에 안드로이드 어플리케이션 개발에 활용되는 자바(Java) 언어를 보완하고 대체하기 위해 탄생했는데요. 때문에 기존에 자바 언어로 동작하던 환경에서 코틀린 언어도 100% 호환되는 것이 특징입니다. 이는 기존에 자바로 개발하던 프로그램은 모두 코틀린으로도 개발할 수 있다는 의미입니다.
그리고 2017년 열린 구글 I/O라는 컨퍼런스에서 코틀린은 공식 지원 언어로 채택되었습니다. 공식 지원 언어로 채택이 되었다는 건 과연 어떤 의미일까요? 구글이 코틀린을 공식 지원 언어로 채택하면서, 코틀린 플러그인을 안드로이드 스튜디오(Android Studio) 3.0에서 바로 다운로드하여 이용할 수 있게 되었다는 의미입니다. 이외에도 안드로이드 공식 문서의 예제 코드도 코틀린으로 제공되는 것을 확인할 수 있습니다.
2019년, 구글은 코틀린을 안드로이드 1st 언어로 선정하였습니다. 공식적으로 안드로이드 개발을 위한 메인 언어로 코틀린을 지정한 것입니다.
인텔리제이(IntelliJ)와 안드로이드 스튜디오는 뭐지?
‘인텔리제이’는 자바 기반의 통합 개발 환경으로 코틀린을 공개한 젯브레인스에서 만들었습니다. 2013년 구글 신제품 발표회에서 처음 공개된 안드로이드 스튜디오는 안드로이드 전용 어플리케이션을 제작하기 위해 필요한 공식 통합 개발 환경으로, 기존에 젯브레인스에서 내놓은 인텔리제이를 기반으로 합니다. 자바와 코틀린, C++ 언어를 사용할 수 있습니다.
코틀린, 왜 추천하냐구요?
1. 문법이 간결하며 사용성이 좋다.
1995년에 세상에 나온 자바에 비해 코틀린은 그 역사가 굉장히 짧은 편입니다. 성능이나 안정성 측면에서는 역사가 긴 자바의 장점이 독보적이지만, 코틀린은 기존 언어가 지닌 단점이나 한계를 보완하여 탄생했기 때문에 개발자 입장에서는 훨씬 사용성이 좋다고 할 수 있습니다. 코틀린은 문법이 간결하여 복잡한 구문 없이 비교적 직관적으로 코드를 작성할 수 있죠. 또한 표현력이 좋아 입문자 입장에서는 자바보다는 훨씬 빠르게 안드로이드 개발을 시작할 수 있다는 것이 장점입니다.
2. Null Safe 언어이다.
자바로 개발을 하면서 가장 많이 마주치는 문제는 바로 NPE(NullPointException)입니다. 코틀린은 Nullable과 Non-nullable 이라는 개념을 가지고 있어, null이 발생하지 않도록 만들어 줍니다. 그래서 자바 라이브러리와 함께 사용하지 않는 한, 코틀린으로만 개발할 때는 NPE와 같은 예외 문제가 발생하지 않는다는 것이 장점입니다.
3. 기존 라이브러리와의 상호운용성이 좋다.
코틀린은 기존의 자바를 보완하고 대체하기 위해 탄생했기 때문에, 자바와 100% 호환됩니다. 한 프로젝트 안에 자바 파일과 코틀린 파일이 함께 들어 있더라도 작동에 전혀 문제가 없다는 뜻입니다. 자바 기반의 라이브러리도 모두 문제 없이 사용할 수 있습니다. 또한 자바로 만들어진 프로젝트도 처음부터 코틀린으로 다시 개발할 필요 없이, 이후 생성되는 파일만 전부 코틀린으로 작성해도 전체 프로젝트가 정상적으로 작동하여 효율적으로 개발할 수 있습니다.
앱 개발 입문자를 위한 추천 글 : 스물 아홉, 난생 처음 ‘앱 개발’을 배우다!
코틀린, 단점도 있나요?
1. 속도가 느리다.
안드로이드 어플리케이션을 위한 빌드를 생성한다면, 여전히 자바의 성능이 더 좋습니다. 컴파일 시, 자바로 변환하고 나서 바이트 코드로 변환하기 때문에 컴파일 속도가 상대적으로 느린 편입니다.
2. 자바와 비교하면 학습 생태계가 작은 편이다.
코틀린이 안드로이드 1st 언어로 지정되었다고 해도, 1995년에 나온 자바에 비해서는 역사가 매우 짧기 때문에 코틀린의 생태계 또한 작을 수밖에 없습니다. 개발 생태계가 작다는 것은, 커뮤니티나 오픈 소스를 통해 개발자 개인이 지원 받을 수 있는 기회도 더 적다는 의미입니다. 이는 아무래도 시간이 해결해 줄 문제겠죠?
3. 자바 기존 라이브러리의 활용이 어려울 수 있다.
자바와 100% 호환된다면서 이게 무슨 말이냐구요? 자바로 개발한 프로젝트를 코틀린으로 이어서 작성하더라도, 자바 문법에 익숙하지 않다면 자바 기반의 기존 라이브러리를 완전히 이해하지 못하고 사용할 수 있습니다. 아직까지는 코틀린 기반의 전용 라이브러리보다는 자바 기반이 훨씬 많기 때문에, 코틀린으로 안드로이드 개발을 시작하더라도 프로젝트 개발이 심화될수록 자바에 대한 이해가 필수적으로 요구될 수 있겠죠.
앱 개발 관련 글 추천 : 앱 개발을 1도 모르는 초보를 위한 길라잡이
코틀린의 점유율은 어느 정도일까?
코틀린이 등장하기 전에는 안드로이드 앱은 모두 자바로 개발해왔습니다. 그런데 코틀린이 정식으로 공개되면서, 점차 코틀린을 활용한 안드로이드 개발이 늘어나는 추세입니다.
티오베(TIOBE)에서 제공한 2021년 프로그래밍 언어 순위와 전망을 살펴보면, 코틀린은 36위입니다. 프로그래밍 언어의 선택지와 기능이 다양하다 보니 상대적으로 낮은 순위에 미쳤습니다. 안드로이드 개발을 위한 공식 언어로 지정된 것이 최근이고, 구글의 전격 지원을 받는 이상 앞으로 더 성장할 가능성이 높은 언어라고 할 수 있겠네요. 특히 안드로이드 앱을 만든다면 코틀린을 빼놓기는 점점 어려워질 거예요.
안드로이드 앱 만들기 프로그래밍 언어부터 각종 개발 환경까지, 모르는 것 투성이라구요? 혹은 안드로이드 앱 개발자로 나만의 결과물을 체계적으로 완성해보고 싶은데 혼자서는 막막하신가요? 그렇다면 패스트캠퍼스에서 30가지 프로젝트로 배우는 Android 앱 개발 (with Kotlin) 온라인 수업을 만나보세요! 기업 채용공고에서 요구하는 안드로이드 앱 개발자가 갖춰야 할 필수 기술을 커리큘럼으로 녹여냈습니다. 입문자부터 개발자 취준생까지, 난이도별로 다양한 앱을 직접 완성해볼 수 있도록 도와드릴게요.
지금 커리큘럼을 확인해 보세요!
30개 프로젝트로 배우는 안드로이드 앱 개발 (with 코틀린) ▼
[Kotlin] 코틀린이란? 코틀린과 자바의 차이
1. 코틀린이란?
– 코틀린(Kotlin)은 인텔리제이(IntelliJ IDEA)라는 제품으로 유명한 젯브레인(JetBranins)에서 만든 언어로, 2011년 최초로 공개된 후 오랜 시간 개발을 거쳐 2016년 2월 1.0 정식 버전이 출시되었습니다.
코틀린은 간결한 문법과 풍부한 기능, 높은 안정성을 토대로 높은 생산성을 보장하는 것을 목표로 개발되었습니다. 또한, 자바와 호환되어 자바로 작성된 프로젝트에 코틀린 코드를 추가할 수도 있고 자바 코드를 모두 코틀린으로 대체 할 수도 있습니다. 뿐만 아니라, 코트린은 구글의 연례 개발자 행사인 구글I/O 2017에서 안드로이드의 공식 지원 언어로 채택되었습니다.
2. 코틀린의 컴파일 과정
Java 코드와 Kotlin 코드가 함께 있는 프로젝트의 빌드 과정
Kotlin 컴파일러가 Kotlin 코드를 컴파일해 .class 파일을 생성한다.
이 과정에서 Kotlin 코드가 참조하는 Java 코드가 함께 로딩되어 사용된다. Java 컴파일러가 Java 코드를 컴파일해 .class 파일을 생성한다.
이때 이미 Kotlin이 컴파일한 .class 파일의 경로를 클래스 패스에 추가해 컴파일한다.
3. 코틀린 자바의 차이
3.1 변수 선언
– 자바 변수 선언
String value = “test”; // 변수 final String value = “test”; // 상수 //new 키워드로 클래스 선언 Test test = new Test();
– 코틀린 변수 선언
var/val 변수명: 변수타입 = 초기화
변수 타입 생략 가능 (컴파일러가 타입을 정해줄 수 있음 = 타입추론(TypeInference))
var value: String = “test” // 변수 val value: String = “test” // 상수 var value = “test” val value = “test” val test:Test = Test()
3.2 변수 null 여부
– 자바 변수 선언
@NotNull String value = “test”; @Nullable String value = “test”;
– 코틀린 변수 선언
특징으로는 컴파일시 null여부를 확인한다.
var value: String = “test” // @NotNull val value: String? = “test” // @Nullable
3.3 접근 제한자
– 자바 접근 제한자
public : 모든 접근을 허용 protected : 같은 패키지(폴더)에 있는 객체와 상속관계의 객체들만 허용 default : 같은 패키지(폴더)에 있는 객체들만 허용 private : 현재 객체 내에서만 허용
– 코틀린 접근 제한자
– 코틀린 공식 문서에 따르면 internal이 말하는 ‘같은 모듈’은 아래 상황을 뜻합니다. 쉽게 생각해 같은 프로젝트 라고 생각하면 좋을 것 같습니다.
IntelliJ IDEA Module
Maven Project
Gradle Source Set(with the exception that the test source set can access the internal declarations of main)
a set of files compiled with one invocation of the
Ant task public : JAVA와 동일 private : JAVA와 동일 protected : JAVA와 동일 internal : 같은 모듈 내에서 어디서든 접근 가능
3.4 함수 선언
– 자바 함수 선언
public int sum(int a, int b) { return a + b }
– 코틀린 함수 선언
fun으로 선언, 함수명(파라미터): 리턴타입
사용되는 파라미터 (a, b)는 상수인것이 특징
fun sum(a: Int, b: Int): Int { return a + b }
3.5 클래스 선언
– 자바 클래스 선언
public class Test { private String name; public Test(String name) { this.name = name; } public String getName() { return name; } }
– 코틀린 클래스 선언
class Test(val name: String) //getter, setter 자동으로 만들어줌 내부 name변수 사용할때는 test.name으로 사용할 수 있음 val test:Test = Test(“mylee”) // mylee println(test.name) test.name = “testName” // testName println(test.name)
4. 코틀린의 장 단점
4.1 널 안정성 (null safety)
만약 아래와 같은 함수를 가진 자바 라이브러리를 코틀린에서 사용한다고 할 때 코틀린에서 리턴타입 String을 String?(nullable)로 인식한다.
String getStr() { …. return str; }
따라서 아래와 같은 코드는 컴파일 시점에서 에러가 발생한다.
NotNull 변수에 nullable을 리턴하는 함수를 사용했기 때문이다. 이렇게 컴파일 시점에서 Null 에러를 잡아낼 수 있다.
(nullable을 리턴하는 코틀린 함수여도 마찬가지)
var test: String = getStr()
만약 아래와 같이 !! 연산자를 이용하면 컴파일 오류를 피할 수 있다. (!! 연산자는 Null이 아님을 보장할 수 있음) 하지만 Null값이 들어오면 에러 발생
var test: String = getStr()!!
safety call (안전한 호출)
자바에서 다음과 같이 String을 대문자로 변환할 때 만약 변수가 null이라면 에러가 발생한다.
String str; 가 있다고 가정 // str값이 null일 경우 에러 발생 System.out.println(str.toUpperCase()); 따라서 if문이나, 삼항연사자 같은 방법으로 에러를 피함
코틀린에서는 이런 Null에러를 피하기위해 Safety call을 제공한다.
?. 연산자를 사용하면 null일경우 다음 함수를 호출하지 않는다.
println(str?.toUpperCase())
?: (엘비스 연산자)
삼항연산자와 비슷한 구조인데 b?.length가 null일경우 오른쪽 -1을 리턴하게 된다.
println(b?.length ?: -1)
4.2 코드가 간결해짐
– 클래스, 함수형 프로그래밍 등 코드가 간결해 질 수 있음. 예제로 filter같은 예시를 들어놓은 블로그가 있는데 자바에서 Stream사용하는거랑 큰 차이가 있는지는 잘 모르겠음.
4.3 함수형 프로그래밍 가능
– 자바 8 이상에서 Stream 같이 사용하면서 느낀 장점 사용 가능
4.4 자바와의 호환
– 프로젝트내에서 자바와 함께 사용할 수 있다.
단점 : 빌드시간이 오래걸린다(?)
– 큰 프로젝트를 빌드해보지 않아서 겪어보지 못함
———————————————————————-
반응형
[Kotlin] 코틀린과 자바의 차이
저는 Java를 주로 사용합니다. 그런데 취미로 Flutter를 이용해서 앱을 만들어보려고 하던 중 Java와 완전호환성을 가지고 있고 새로운 언어인 Kotlin에 관심이 가더라구요. 하지만 Java보다 어떤것이 더 나은지 아니면 차이점은 무엇인지 정도는 알고 써야 제가 익숙한 Java를 사용하지 않는 이점이 있을 것 같아서 찾아보고 정리하게 되었습니다.
kotlin이란
Java Platform을 대상으로 하는 새로운 프로그래밍 언어로서 즉, JVM에서 돌아가는 언어이다. Jetbrains에서 만들었다.
Kotiln의 철학
실용성 Kotlin은 다른 프로그래밍 언어가 채택한 검증된 해법과 기능을 사용하여 복잡도를 줄인 실용적인 언어를 지향하고 있습니다.
간결성 코드를 더 간단하고 간결하게 만들어 내용을 쉽게 파악할 수 있게 했다. Kotlin에서는 구조를 만족시키기 위해 반복적이고 부수적인 코드를 줄이기 위한 기능을 제공한다.
안전성 타입 추론을 제공하여 타입 안정성을 보장하고 컴파일 시점에 오류를 더 많이 방지해준다.
상호운용성 Java 라이브러리들을 Kotlin에서도 그대로 사용할 수 있다.
Java의 특징
우선은 Java의 특징부터 알아야지 비교가 가능할 것 같습니다. 간단하게만 나열하자면 아래와 같습니다.
플랫폼에 구애를 받지 않는다 JVM(Java Virtual Machine)만 있다면 어느 플랫폼에서든지 자바 어플리케이션을 작동시킬 수 있다.
포인터 개념 대신 자동으로 메모리 관리 JVM에서 지원하는 기능으로 Garbage Collection을 이용하여 자원을 자동으로 관리해줍니다.
OOP(Object Oriented Programming) 객체라는 단위를 메인으로 객체간의 상호작용을 통해 프로그래밍을 하게됩니다.
동적 로딩 필요한 시점에 클래스 정보를 메모리에 로드할 수 있습니다.
Kotlin의 특징
플랫폼에 구애를 받지 않는다 Java와 동일하게 JVM만 있다면 플랫폼에 구애받지 않고 동작할 수 있다.
정적 타입 지원 Java와 동일하게 정적 언어의 특징을 가지고 있다. 그래서 컴파일시에 자료형이 결정된다.
함수형 프로그래밍 지원
무료 오픈소스 Java는 점점 유료화가 진행되고 있는 반면에 Java와 호환되지만 무료 오픈소스이다.
Kotlin과 Java의 사용법에서의 차이
Java와 사용할 때 차이가 발생하는 부분에 대해서 살펴보겠습니다.
변수/상수
//Java String a = “”; final String b = “”; //Kotlin var a = “” val b = “”
Optional
//Java String nullStr = Optional.ofNullable(null).toString(); String nonNullableStr = Optional.of(“”).toString(); //Kotlin var nullStr? = null var nonNullStr = “”
Kotlin에서는 Optional(?)을 통해서 간결하게 nullable한 변수와 nonNullable한 변수를 나눠서 표시할 수 있습니다.
Data Class
//Kotlin data class KotlinData(var param: String?, var index: Int)
Kotlin에서는 DTO를 생성할 때 간결하게 만들 수 있도록 data class를 제공합니다. Java에서는 생성자, getter, setter를 만들어야 하는 부분을 생략할 수 있게 해주는 역할입니다.
정리
Kotlin의 가장 큰 특징은 아무래도 Java와 완벽한 호환이 된다는 점입니다. 이러한 바탕을 두고 간결성과 실용성이 조금 더 추가된 언어라고 할 수 있습니다.
하지만 ‘Java를 버리고 Kotlin만 선택할 수 있는가’ 라는 질문에 대해서는 개인적으로는 그럴 수도 있지만 권장하지 않는다라고 할 수 있겠습니다. 물론 Kotlin 코드로 모든 Java 코드를 대신할 수 있습니다. 하지만 다른 코드를 이해하고 사용하는 것에는 Java를 잘 아는 것이 필요합니다.
예를 들어 현 시점에서 라이브러리 같은 코드는 Java로 이루어진 것들이 월등히 많습니다. 이를 Kotlin으로 완전히 변경 후 사용한다는 것은 시간이 걸릴 것 같습니다. 그러므로 지금 바로 사용할 때는 Java 코드를 이해하고 적용해야 할 필요가 있을 것 같습니다.
반응형
Java vs Kotlin 비교 / 안드로이드 앱 개발 승자는???
Kotlin vs Java
Android 애플리케이션 개발은 비즈니스 성공을 이끄는 훌륭한 옵션이지만 최고의 프로그래밍 언어를 선택하는 것이 진정한 딜레마입니다. 우리 중 많은 사람들에게 Java는 어디에나 있고 모두가 그것을 칭찬하기 때문에 최고라는 것이 분명합니다. 그러나 Kotlin이 출시된 후 Java에 대한 이러한 명백한 신뢰는 다소 흔들리고 프로그래머는 다음과 같은 다양한 질문을 검색하기 시작합니다.
Kotlin or Java for Android?
Kotlin vs Java for Android Development?
Kotlin or Java for Android Development 더 나은것은?
효율적인 Android App Development Java or Kotlin?
이외 수많은 유사 질문들이 온라인에서 갑론을박하고 있으며, Kotlin 대 Java 문제를 해결하고 명확한 비전을 제공하기 위해 이 글을 작성하기로 결정했습니다. 여기에서는 Kotlin과 Java Android 개발 중 어느 것이 가장 좋은지 논의할 것입니다. 시작하겠습니다 ^^
1. What is Java?
Java는 Android에서 사용하는 기본 언어이며 운영 체제와 통신하고 하드웨어를 직접 사용하는 응용 프로그램은 Java를 사용합니다. 이 언어를 사용하면 모든 프로그램을 만들 수 있으며 거의 모든 유형의 시스템을 지원하며 OS X는 Android, Windows 또는 Linux입니다. Java는 Sun Microsystems(현재 Oracle의 자산)에서 개발했으며 Java와 함께 Microservices를 사용할 수 있습니다.
1.1) What are the Benefits of Java?
다음은 Java 언어의 이점입니다. Java는 다중 플랫폼이며 거의 모든 장치, 서버 또는 운영 체제에서 작동합니다.
코딩이 강력하고 Java 명령이 메모리를 손상시키거나 OS X의 다른 응용 프로그램에서 데이터를 손상시키는 것은 불가능합니다.
Java는 객체 지향적이며 모듈식 애플리케이션을 쉽게 만들고 견고성에 기여하는 부분을 재사용할 수 있습니다.
사용할 준비가 되었으며 Java를 사용하면 사용할 준비가 된 많은 타사 코드를 얻을 수 있습니다.
Kotlin과 Java 성능을 다른 언어와 비교하는 동안 Java는 사용하기 쉽고 컴파일이 가능하며 디버깅 및 배포를 훨씬 더 간단하게 만듭니다.
Java는 많은 라이브러리가 Google, Apache 등과 같은 신뢰할 수 있는 회사에서 관리하므로 안전을 보장하는 오픈 소스 언어입니다.
– Java는 다중 플랫폼이며 거의 모든 장치, 서버 또는 운영 체제에서 작동함.
– 코딩이 강력하고 Java 명령이 메모리를 손상시키거나 OS X의 다른 응용 프로그램에서 데이터를 손상시키는 것은 불가.
– Java는 객체 지향적이며 모듈식 애플리케이션을 쉽게 만들고 견고성에 기여하는 부분을 재사용할 수 있음.
– 사용할 준비가 되었으며 Java를 사용하면 사용할 준비가 된 많은 타사 코드를 얻을 수 있음.
– Kotlin과 Java 성능을 다른 언어와 비교하는 동안 Java는 사용하기 쉽고 컴파일이 가능하며 디버깅 및 배포를 훨씬 더 간단하게 만듬.
– Java는 많은 라이브러리가 Google, Apache 등과 같은 신뢰할 수 있는 회사에서 관리하므로 안전을 보장하는 오픈 소스 언어임.
1.2) What are the Challenges of the Java language?
다음은 Java의 단점입니다.
– Java가 사용하는 구문은 C + 또는 Python과 같은 다른 언어와 비교할 때 약간 복잡하거나 번거로울 수 있음.
– Java를 사용하면 사용 중인 장치 또는 장비와 호환되지 않을 수 있는 특정 콘텐츠에 액세스하는 것이 불가능함.
– 모바일 개발에서 새로운 Java 개선 사항에 액세스하는 것은 쉽지 않음.
– Java가 Android API 설계에 문제를 일으키는 경우가 있음.
– Java용 테스트 주도 개발에는 더 많은 코드를 작성해야 하며 프로그래밍 오류 및 버그의 위험이 훨씬 더 높음.
– Java는 다른 프로그래밍 언어에 비해 약간 느리고 많은 시스템 메모리를 차지함.
2. What is Kotlin?
Kotlin vs Java에서 Kotlin은 Java에서 영감을 받아 새로 생성된 언어이지만 많은 추가 기능이 포함된 개선된 버전입니다. 깨끗하고 비교적 단순하며 Java 및 기타 프로그래밍 언어에 비해 형식과 규칙이 적습니다. 이 언어를 사용하여 Android 앱을 프로그래밍하려면 개발자는 여전히 기본적인 프로그래밍 개념과 구조를 이해해야 합니다.
2.1) What are the Benefits of Kotlin?
– Kotlin 애플리케이션 배포는 컴파일 속도가 더 빠르고 가벼우며 애플리케이션 크기가 커지는 것을 방지함.
– Kotlin으로 작성된 코드 덩어리는 Java에 비해 훨씬 작습니다. (덜 장황하고 코드가 적으면 버그가 적기 때문)
– Kotlin은 코드를 JVM에서 실행할 수 있는 바이트 코드로 컴파일함. 따라서 Java로 만든 모든 라이브러리와 프레임워크는 Kotlin 프로젝트에서 전송 및 실행됨.
– Kotlin 스크립트는 자동 완성 지원을 위해 Android Studio에서 프로젝트를 구성하는 데 도움이 되며 컴파일 시간 오류 감지를 줄이는 데 도움을 줌.
– NullPointerException(The Billion Dollar Mistake)에 대해 안전함.
– Kotlin은 코루틴과 웹 개발을 위한 Javascript와의 상호 운용성을 통합함.
2.2) What are the Challenges of the Kotlin language?
다음은 Kotlin의 단점입니다.
– Kotlin은 그다지 인기가 없기 때문에 개발자 커뮤니티는 Java와 같이 잘 정립된 다른 언어에 비해 희소함.
– Kotlin은 약한 패턴과 일치하며 초기 코드 가독성은 처음에는 읽고 이해하기가 약간 어려움.
– Kotlin이 Java보다 출시가 늦기 때문에 참조할 커뮤니티가 적음. 또한 라이브러리, 블로그 게시물 및 자습서가 Java 대비 부족.
– Kotlin은 학습 곡선이 가파르고 언어의 간결한 구문 때문에 팀을 Kotlin으로 전환하는 것이 어려움
– 시장에서 사용할 수 있는 Kotlin 개발자가 많지 않음. 따라서 경험이 풍부한 멘토를 찾는 것은 매우 까다로움
3. Kotlin vs Java: A Quick Roundup
Kotlin은 Android 앱을 작성하기 위해 공식적으로 지원되는 언어이지만 여전히 전환할 이유가 충분하지 않다고 느낄 수 있습니다. Java는 이 모든 것에 대해 작동하는 것으로 나타났습니다. 그렇다면 왜 변경해야 할까요? Kotlin으로 이전하는 이유는 다음과 같습니다.
3.1) Null Safety
NullPointerException 또는 NPE는 Java의 주요 단점 중 하나이며 NPE가 발생할 수 있는 유일한 이유는 NullPointerException을 throw하는 명시적 호출입니다. 초기화와 관련된 일부 데이터 불일치 또는 외부 Java 코드로 인한 기타 문제입니다. 위의 섹션에서 이미 언급했듯이 Kotlin 대 Java에서 Kotlin은 NullPointerException을 피합니다. Kotlin은 NullPointerException이 발생할 수 있을 때마다 컴파일 타임에 실패합니다.
3.2) 데이터 클래스
Kotlin 대 Java Android, Kotlin에는 equals, hashCode, toString, getters/setters 등과 같은 상용구 자동 생성으로 이어지는 데이터 클래스가 있습니다. 다음 예를 참고하세요. /* Java 코드 */
3.3) Extension Functions
Kotlin을 사용하면 기존 클래스에서 상속하지 않고 기능을 확장할 수 있습니다. 즉, Kotlin 대 Java에서 Kotlin은 클래스에서 상속하지 않고도 새로운 기능으로 클래스를 개발할 수 있는 기능을 제공합니다. 확장 기능이 이를 수행합니다. 확장 함수를 선언하려면 이름에 수신자 유형, 즉 확장되는 유형을 접두사로 붙여야 합니다. 다음은 MutableList에 스왑 기능을 추가합니다.
3.4) Smart Casts
캐스트와 관련하여 Kotlin의 컴파일러는 지능적입니다. 많은 경우에 Kotlin에서는 명시적 캐스트 연산자를 사용할 필요가 없지만 Kotlin 대 Java에서는 변경할 수 없는 값에 대한 “is-checks”가 있고 필요할 때 자동으로 삽입 캐스트를 삽입합니다.
3.5) Type Inference
Kotlin에는 각 변수의 유형을 명시적으로(명확하고 자세하게) 지정할 필요가 없다는 좋은 점이 있습니다. 그러나 Kotlin과 Java Android 간에 데이터 유형을 명시적으로 정의하려는 경우에도 그렇게 할 수 있습니다. 다음 예를 참고하세요 – /* 명시적으로 정의되지 않음 */
3.6) 함수형 프로그래밍
Kotlin vs Java 성능에서 가장 중요한 것은 Kotlin이 Functional 프로그래밍 언어라는 것입니다. 기본적으로 Kotlin은 high-order functions, lambda expressions, operator overloading, lazy evaluation, operator overloading (고차 함수, 람다 표현식, 연산자 오버로딩, 지연 평가, 연산자 오버로딩) 등을 포함한 많은 유용한 방법으로 구성되어 있습니다. Functional 프로그래밍은 Collection 측면에서 Kotlin을 훨씬 더 편리하게 사용할 수 있습니다.
Output – 15, 11 High-order functions 은 function 을 매개변수로 사용하고 function 을 반환합니다. 다음 코드를 참고하세요.
위의 코드에서 “func”는 매개변수의 이름이고 ” ( ) -> Unit “은 함수 유형입니다. 이 경우 func는 매개변수를 받지 않고 값도 반환하지 않는 함수가 됩니다. lambda expressions 또는 Anonymous Function 는 “함수 리터럴”, 즉 선언되지 않았지만 표현식으로 즉시 전달되는 함수입니다. (람다 방식의 예)
위의 예에서 우리는 단순히 두 개의 정수를 취하여 더하고 total을 정수로 반환하는 변수 ‘sum’을 선언합니다. 그런 다음 호출하기 위해 ‘ sum(2,2) ‘을 사용합니다. 꽤 괜찮죠? Anonymous Function in Kotlin vs Java Android는 반환 유형을 지정할 수 있는 함수이며 여기에서 함수 이름은 생략합니다. 다음 예를 참고하세요.
4. What are the Key Features of Kotlin Language?
다음 측면에서 Kotlin은 Android 프로그래밍에는 Java보다 더 나은 언어라고 볼 수 있습니다.
4.1) Kotlin은 JVM 바이트 코드 또는 JavaScript로 컴파일됩니다.
Java와 마찬가지로 Bytecode도 Kotlin 프로그램용으로 컴파일된 형식입니다. 바이트코드는 일단 조립되면 컴퓨터의 프로세서 대신 가상 머신을 통해 실행되는 프로그래밍 코드를 의미합니다. 이 접근 방식을 사용하면 소스 코드가 컴파일되고 가상 머신을 통해 실행되면 모든 플랫폼에서 실행할 수 있습니다. Kotlin 프로그램이 바이트코드로 변환되면 네트워크를 통해 전송되어 JVM(Java Virtual Machine)에 의해 실행될 수 있습니다.
4.2) Kotlin은 기존의 모든 Java 프레임워크 및 라이브러리를 사용할 수 있습니다.
예, Kotlin 프로그램은 주석 처리에 의존하는 고급 프레임워크를 포함하여 기존의 모든 Java 프레임워크와 라이브러리를 실제로 사용할 수 있습니다. Kotlin 언어에서 가장 중요한 것은 Maven, Gradle 및 기타 빌드 시스템과 쉽게 통합할 수 있습니다.
4.3) Kotlin은 빠르게 배울 수 있고 접근하기 쉽습니다.
참고문헌을 읽는 것만으로도 빠르게 익힐 수 있습니다. 구문이 깨끗하고 직관적입니다(Java대비 사용하기 쉽고 이해하기 쉽습니다). Kotlin과 Java 사이에서 Kotlin은 Scala와 매우 유사하지만 더 간단합니다.
4.4) 자바에서 코틀린으로 자동 변환
JetBrains는 Java를 Kotlin으로 변환하고 상당한 시간을 절약하는 IntelliJ에 새로운 기능을 통합했습니다.
4.5) Kotlin의 null-safety가 뛰어납니다.
이제 NullPointerException을 제거하십시오. 이러한 유형의 시스템은 널 포인터 예외를 피하는 데 도움이 됩니다. Kotlin 대 Java에서 Kotlin 시스템은 null을 할당하거나 반환하려는 코드 컴파일을 거부합니다. 다음 예를 참고하세요.
4.6) 코드 리뷰의 용이
Kotlin의 주요 초점은 읽을 수 있는 쉬운 구문이므로 코드 리뷰는 문제가 되지 않고, 코딩에 익숙하지 않은 팀 구성원도 review 할 수 있습니다.
5. Summary
– Kotlin 의 이점이 더 많다.
– Kotlin 전망은 밝은가?
답은 예입니다. IT 부문에 대한 Kotlin의 영향은 지난 몇 년 동안 기하급수적으로 증가했습니다. 사실, Pinterest, Flipboard 또는 Basecamp와 같은 일부 대형 웹 포털은 이미 주요 프레임워크에서 지원하기 위해 이를 사용하고 있습니다. 최근 Google에서 제공한 지원은 Kotlin이 밝은 미래와 Java에 대응할 수 있는 능력이 있다는 결정적인 증거였습니다.
– 결론
우리는 클린 빌드가 우리 프로젝트에서 한 번만 수행된다는 것을 알고 있으며 클린 빌드보다 증분 빌드 컴파일 시간이 우리에게 더 중요하다고 생각합니다. 따라서 Kotlin 대 Java에서 Kotlin은 Java와 거의 동일하며 Compilation 시간에 대해 걱정하지 않고 Kotlin을 사용할 수 있습니다.
Article from [ Kotlin vs Java: Which is Better for Android App Development? ] translated and edited by Mondayless.
감사합니다.
공유하기 글 요소
[Java와 Kotlin 비교] 안드로이드 앱 개발, 자바와 코틀린의 차이를 정리했습니다.
안녕하세요!
오늘은 IOS와 함께 스마트폰 OS의 대명사가 된 안드로이드(Android)와 2017년 5월에 공식 개발 언어로 채택한 코틀린(Kotlin)에 대하여 간단하게 알아보겠습니다.
먼저 안드로이드가 동작하는 플랫폼과 리눅스 커널, 현재 사용되고 있는 안드로이드의 API 레벨 그리고 함수형 프로그래밍에 대하여 간단하게 훑어보겠습니다.
한 줄 정리
• 안드로이드가 무엇이고 어떻게 발전해왔는지 알아봅니다.
• 코틀린을 자바와 비교하면서 코틀린을 사용하는 이유에 대해 알아봅니다.
2020년 4월 statcounter 통계에 따르면 전 세계 스마트폰 사용자 중 71%가 안드로이드를 사용하고 있습니다. 안드로이드란 용어는 많이 들어봤는데 정확히 안드로이드가 뭘까요? 우리가 말하는 안드로이드는 안드로이드 플랫폼입니다. 2005년 구글이 안드로이드 사의 운영체제, 안드로이드를 인수해 오픈소스로 공개하여 현재에 이르고 있지요. 2008년 9월, 버전 1.0을 처음 공개하였고, 버전1.5 컵케이크부터 코드네임에 디저트 이름을 붙였습니다. 이런 식의 코드네임은 2018년 9.0 버전인 파이(Pie)가 마지막이었으며, 2019년 버전 10부터는 디저트 이름을 붙이지 않고 있습니다. • 통계 출처: statcounter https://gs.statcounter.com/os-market-share/mobile/worldwide
> 안드로이드 운영체제와 플랫폼
안드로이드 플랫폼은 리눅스 운영체제 안에서 리눅스와 상호작용하면서 동작합니다. 아래 그림은 안드로이드 플랫폼으로 한 번에 이해하기에는 조금 어렵지만, 전체 아키텍처 위쪽에 안드로이드가 실행되는 런타임 영역(녹색으로 표시)이 존재한다는 점을 알아두시면 되겠습니다.
자세한 내용은 안드로이드 공식 문서에서 확인할 수 있습니다
플랫폼 버전과 API 레벨
안드로이드는 사용하는 플랫폼 버전과 별개로 API(A pplication program interface) 레벨이라는 것이 있습니다.
API는 개발자에게 안드로이드 플랫폼의 기능을 사용할 수 있게 제공하는 도구로 API 레벨에 따라서 새로운 기능이 추가되거나 코드 전체를 변경해야 하는 경우도 있습니다.
그러므로 API 레벨의 변경 사항이 있을 때는 기존의 코드를 다시 한번 확인할 필요가 있습니다.
플랫폼의 최신 버전은 안드로이드 12이지만, 실제 사용자가 사용하는 버전은 훨씬 다양합니다.
현재 시점의 플랫폼 점유율은 안드로이드 개발자 사이트에서 확인할 수 있습니다. 나중에 개발용 툴인 안드로이드 스튜디오를 설치하면 바로 확인할 수 있습니다.
안드로이드 개발자 사이트 배포 대시보드 https ://developer.android.com/about/dashboards/index.html?hl=ko
안드로이드 개발자 사이트는 최신 버전에 대한 정보뿐만 아니라 사용 현황 등도 확인할 수 있습니다.
2021년 12월 기준으로 API 레벨 21, 롤리팝 버전 이상을 사용하는 디바이스가 전체의 98%입니다.
특별한 경우가 아니라면 그 이전 버전은 고려하지 않아도 됩니다. 이 글을 읽는 시점에 따라 점유율이 달라질 수 있습니다.
현재 시점의 점유율은 안드로이드 스튜디오에서 새로운 프로젝트를 생성할 때 나타나는 Help me choose 링크를 통해 확인할 수 있습니다.
▲ 2021년 12월 기준 데이터이며, 배포율이 0.1% 이하인 버전은 표시되지 않습니다.
》》》 여기서 잠깐
★ 짧은 업데이트 주기에 대처하기 안드로이드는 일 년에 한 번 정도, 메이저 버전이 업데이트되고 있습니다(메이저 버전이 바뀐다는 것은 새로운 버전의 안드로이드가 출시된다는 의미입니다). 하지만 새로운 버전으로 사용자가 옮겨 가는 데는 적어도 몇 년의 시간이 소요되기 때문에 항상 최신 버전에 맞춰서 개발할 필요는 없습니다.
코틀린
다시 안드로이드 플랫폼의 구조를 떠올리면 리눅스 커널과 자바 API 프레임워크가 결합된 형태입니다.
과거에 안드로이드 플랫폼에 대한 설명에는 JVM(정확하게는 Dalvik VM입니다만 독자의 이해를 돕고자 JVM으로 표기합니다)이 항상 따라붙었는데, 자바 가상 머신 위에서 앱이 동작했기 때문입니다.
현재는 이를 대신해 안드로이드 런타임(Android RunTime, ART)을 사용합니다.
따라서 JVM이 없지만 여전히 가상 머신 위에서 동작한다는 점에서 자바의 동작 구조를 차용하고 있습니다.
기존에는 주로 자바를 앱 개발 언어로 사용했지만 2017년 5월 Google I/O에서 코틀린(Kotlin)을 공식 언어로 채택한 후 코틀린으로 앱을 개발하는 기업이 차츰 늘어나고 있습니다.
구글은 2019년 Google I/O에서 코틀린 퍼스트를 선언하며 모든 문서에서 코틀린 코드를 먼저 노출하는 등 좀 더 강력하게 코틀린을 메인 언어로 지원하고 있습니다.
코틀린은 젯브레인 사가 만든 프로그래밍 언어입니다.
여담으로 젯브레인(JetBrains)에서 만든 가장 유명한 프로그램은 인텔리제이라는 개발 툴이고, 이를 기반으로 2장에서 배울 안드로이드 스튜디오가 만들어졌습니다.
간략하게 코틀린의 역사를 도표로 살펴보겠습니다.
2021년 12월 시점에서 코틀린 최신 버전은 1.4.20입니다.
함수형 프로그래밍 언어 코틀린
코틀린은 함수형 프로그래밍을 표방하고 있습니다. 객체지향 프로그래밍과 비교하자면 객체지향 프로그래밍은 클래스 내부에 있는 함수에서만 로직을 작성하지만, 함수형 프로그래밍은 이런 제한 없이 어디에서나 작성할 수 있습니다.
‘Hello World’를 출력하는 짧은 코드로 비교하면 다음과 같습니다.
》 자바 코드 – 객체지향 프로그래밍
class Hello { public static void main(String args[]) { System.out.print(“Hello World”); } }
》 코틀린 코드 – 함수형 프로그래밍
System.out.print(“Hello World”);
안드로이드 개발에 있어서 자바와 코틀린의 차이
앞서 다섯 줄짜리 자바로 이뤄진 코드가 한 줄짜리 코틀린 코드로 바뀐 것을 보고 여러분은 환호했을 겁니다. 하지만 안타깝게도, 안드로이드 앱을 개발할 때는 코틀린도 객체지향 언어처럼 클래스 내에서 로직을 작성해야 합니다.
코틀린이 자바와 100% 호환된다는 이야기를 들어봤을 겁니다.
이는 분명 장점이지만, 여전히 안드로이드는 자바와 코틀린을 동시에 지원하므로 자바의 형식에 맞춰서 코틀린으로도 개발해야 합니다.
조금 불편하지만 그래도 코틀린으로 작성하면 자바로 작성했을 때보다는 코드의 양이 훨씬 적어집니다.
간단하게 버튼을 클릭하면 메시지를 보여주는 코드를 살펴보겠습니다.
다음 코드는 각각 자바와 코틀린으로 작성한 예제입니다.
자바로 작성하기 위해서는 기본 코드 외에 약 네 줄 이상의 코드가 필요하지만 코틀린으로 작성하면 한 줄의 코드로 표현할 수 있습니다.
》 자바 코드 – ButtonActivity.java
class ButtonActivity extends Activity { protected void onCreate(Bundle savedInstance) { Button button = findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { System.out.print(“Hello World”); } } } }
》 코틀린 코드 – ButtonActivity.kt
class ButtonActivity : Activity( ) { override fun onCreate(savedInstance: Bundle?) { button.setOnClicklistener { print(“Hello World”) } } }
<관련도서>
Android 입문의 3가지 장벽, 언어+실전+환경 완벽 대응!
안드로이드 스튜디오를 활용한 Kotlin 문법부터 오픈 API를 활용한 도서관 지도 앱 개발까지!
최신 버전으로 실습 환경을 제공하는 『이것이 안드로이드다 with 코틀린(3판)』으로 누구보다 빨리 새로운 코틀린 안드로이드를 경험해보세요!
코틀린(Kotlin)과 자바(Java)의 문법 차이
반응형
기본적인 차이들을 먼저 짚고 예제들을 살펴보자면, Java와 달리 Kotlin에서는
세미콜론(;)이 없다. primitive type이 없다.(char, int, double 등) -> 객체로 제공(Int, Double 등) 변수의 타입이나 메소드의 리턴 타입이 이름 뒤에 따라오는 콜론(:) 뒤에 나온다. 함수를 변수처럼 사용하는 것이 가능하다. Destructuring을 지원한다.
이외에도 무수히 많은 차이점이 있지만, 개인적인 생각으론 코틀린도 결국 JVM에서 동작하는 OOP 언어이기 때문에 Java를 잘 알고 Java 8 버전부터 등장한 람다식, stream 등에 대해 익숙하신 분들이라면 금방 적응할 수 있다고 본다.
Hello, World!
Java
public class Main { public static void main(String[] args) { System.out.println(“Hello, World!”); } }
Kotlin
fun main(args: Array
) { println(“Hello, World!”) } Kotlin에서는 클래스 선언 없이 main 함수를 바로 정의해도 된다.
Arguments
Java
public void hello(String name){ System.out.print(“Hello, ” + name + “!”); }
Kotlin
fun hello(name: String) { println(“Hello, $name!”) }
Kotlin에서는 변수이름: 타입 형태로 선언하고, 문자열 내에서 $를 통해 변수 참조가 가능하다.
만약, 문자열에서 참조할 변수에 일련의 연산을 행하고 싶다면 ${변수+연산} 이런 식으로 중괄호를 사용하면 된다.
Default Values
Java
public void hello(String name) { if (name == null) { name = “World”; } System.out.print(“Hello, ” + name + “!”); }
Kotlin
fun hello(name: String = “World”) { println(“Hello, $name!”) }
Kotlin에는 python과 같이 default value를 파라미터 수준에서 정의할 수 있다. 이는 Java에서 Optional한 값들에 대해 일일이 Overloading 메소드를 만들어야했던 번거로움을 해소해준다.
이를테면 아래와 같은 경우가 그 예다.
Java
public static void main(String[]args){ createFile(“file.txt”); createFile(“file.txt”, true); createFile(“file.txt”, true, false); } public static File createFile(String filename) { } public static File createFile(String filename, boolean appendDate) { } public static File createFile(String filename, boolean appendDate, boolean executable) { }
Kotlin
fun main(args: Array
) { createFile(“file.txt”) createFile(“file.txt”, true) createFile(“file.txt”, appendDate = true) createFile(“file.txt”, true, false) createFile(“file.txt”, appendDate = true, executable = true) createFile(“file.txt”, executable = true) } fun createFile(filename: String, appendDate: Boolean = false, executable: Boolean = false): File { } Java의 경우 createFile() 이란 메소드를 필요에 따라 다량의 Overloading을 해야하지만, 코틀린은 default value와 named argument라는 특징을 이용해 단 하나의 메소드만 정의하면 된다.
Return
Java
public double cube(double x) { return x * x * x; }
Kotlin
fun cube(x: Double) : Double = x * x * x
Single-Expression 리턴을 행하는 함수의 경우 = 키워드를 통해 중괄호{} 없이 함수를 정의할 수 있다.
반응형
[kotlin vs java ] 코틀린과 자바의 차이, 코틀린의 장점
반응형
기존에 java로 구현했던 spring 프로젝트를 kotlin으로 전환했다.
코틀린을 도입하기로 결정한 이유는 다음과 같았다.
왜 kotlin인가?
간결성, 생산성
코틀린은 자바보다 더 간결하고 직관적이라, 쓰고 읽는 데 시간이 덜 걸린다.
자바에 존재하는 여러 가지 번로운 준비 코드(생성자, 게터, 세터 등)들을 코틀린은 묵시적으로 제공하기 때문에 그런 준비코드 없이 더 깔끔하다.
기능이 다양한 표준 라이브러리를 제공하기 때문에 반복되는 코드를 줄일 수 있다.
안정성
실행 시점에 오류를 발생시키는 대신 컴파일 시점 검사를 통해 오류를 더 많이 방지해준다.
코틀린은 null이 될 수 없는 값을 추적하며, 실행 시점에 NullPointException이 발생할 수 있는 연산을 사용하는 코드를 금지한다.
자바에서 객체의 null을 다루는데 사용되는 많은 코드라인을 생략할 수 있다.
1.2.1. nullalbe type
null이 될 수 있는 타입 명시적으로 표시할 수 있다.
nullable이 아닌 변수에 null을 넣으면 컴파일 타임에 에러를 발생시킨다. (자바는 런타임에 NPE 발생)
1.2.2. null 체크
java에서는 NPE(Null Point Exception)를 방지하기 위해 Optional이나 catch를 이용해 짰던 방어로직을 아래와 같은 연산자로 대체할 수 있다.
null safe operator (?.) : null 아님을 확인 후에 안전하게 호출함
elvis operator (?:) : null에 대한 직접적인 처리
1.3. 상호 운용성
Java와 100% 호환되며, 기존 라이브러리를 활용할 수 있어서 기존의 자바 코드를 가능하면 최대한 활용할 수 있다.
java 클래스를 kotlin 클래스에서, kotlin 클래스를 java 클래스에서 사용할 수 있다.
라이브러리가 어떤 api를 제공하던 간에 코틀린에서 그 api를 활용할 수 있다.
도구 친화
Kotlin은 개발 도구인 ItelliJ IDE를 개발한 JetBrains가 설계한 언어라, 사용하고 있는 IDE intellij가 Kotlin을 더 잘 지원한다.
intellij 15부터 코틀린 플러그인이 기본적으로 포함되어 있다.
java vs kotlin 코드 비교
실제로 코틀린으로 전환하고 많은 부분이 편해졌지만 가장 좋은 점은 코드가 간결하다는 것이다.
생성자
우선 생성자, 코틀린의 사용자는 기본적으로 프로퍼티의 선언과 초기화를 동시에 하기 때문에 자바에 비해서 코드 양이 훨씬 적다.
프로퍼티 선언으로 만들어진 모든 필드를 포함하는 생성자와, 초기화해준 필드(아래에서 os)를 제외한 생성자를 따로 선언하지 않아도 사용할 수 있다.
java
@Getter @Builder @AllArgsConstructor public class PageOptionRequest { @NotNull(message = “actionType is required!”) private String actionType; @Nullable private String os; public PageOptionRequest(String actionType) { this.actionType = actionType; this.os = “ios”; } }
kotlin
class PageOptionRequest( val actionType: String, val os: String? = “ios” )
data class
data class는 데이터 보관 목적으로 만든 클래스인데, spring 프로젝트의 DTO로 활용하면 매우 편하다.
toString(), hashCode(), equals(), copy() 메소드를 기본으로 제공해서, 이에 대한 boilerplate code를 생략할 수 있다.
java
@EqualsAndHashCode @ToString public class PageOptionRequest { … }
kotlin
data class PageOptionRequest( … )
문자열 처리
코틀린에서는 문자열 처리를 간편하게 하는 여러가지 기능을 제공한다.
문자열 템플릿
여러 줄의 문자열을 “””를 이용해 하나의 문자열로 구성 가능
trimIndent와 같이 문자열 사용을 편하게 하는 메소드 존재
java
private final String GET_USER_NAME = “” + “SELECT DISTINCT user_name\
” + “FROM tbl\
” + “WHERE user_id = 63;
kotlin
const val GET_USER_NAME = “”” SELECT DISTINCT user_name FROM tbl WHERE user_id = 63 “””.trimIndent()
분기 처리
아래 기능들을 이용해서 분기 처리를 더 깔끔하게 구현할 수 있음
return 값이 있는 if expression : 코틀린에서는 자바와 달리 조건문을 return값이 있는 ‘식’으로 제공한다.
switch보다 간결한 when
null 처리
코틀린의 최대 장점인 null처리! 매우 편하고 안전한 null 처리를 제공한다. 자바8부터 Optional을 제공하긴 하지만 Optional 객체로 만드는 과정을 생략할 수 있어 훨씬 간결하다.
java
public class OptionRequest { @NotNull(message = “user_id is required!”) private String user_id; @Nullable private String os; }
kotlin
class OptionRequest( val user_id: String, val os: String? = “ios” )
java
Optional.ofNullable(optionRequest.getOs()) .map(data -> ” and os_type=\\”” + data + “\\”\
“).orElse(“”)
kotlin
optionRequest.os?.let { data -> “\
AND os_type=\\”$data\\”” } ?: “”
반응형
키워드에 대한 정보 코틀린 자바 차이
다음은 Bing에서 코틀린 자바 차이 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.
이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!
사람들이 주제에 대해 자주 검색하는 키워드 바로 말씀 드릴께요. 자바 vs 코틀린 java vs kotlin 차이 비교 선택 시 고려 사항
- 자바_코틀린
- java_kotlin
- 비교
- 차이
- 선택
- 기준
바로 #말씀 #드릴께요. #자바 #vs #코틀린 #java #vs #kotlin #차이 #비교 #선택 #시 #고려 #사항
YouTube에서 코틀린 자바 차이 주제의 다른 동영상 보기
주제에 대한 기사를 시청해 주셔서 감사합니다 바로 말씀 드릴께요. 자바 vs 코틀린 java vs kotlin 차이 비교 선택 시 고려 사항 | 코틀린 자바 차이, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.