# 준비
- 강의자료 : https://github.com/zoops/2018-kotlin-lecture
- Kotlin 공식 홈페이지 : http://kotlinlang.org/
- HAXM : 안드로이드 에뮬레이터 가속(속도 빨라짐)
- Kotlin 웹 IDE : https://try.kotlinlang.org/
# IDE : Android Studio
- 2.x 까지는 별도로 Kotlin 플러그인 설치 필요
- 3.x 부터는 불필요(자동 설치)
- 최소 버전 Lollipop 부터 지원
# 개요
- Kotlin은 JVM 위에서 돌아감(바이트코드로 변환->자바코드로 변환) <-> JVM 위에서 돌릴 수 있는 모든 언어는 Kotlin으로 변경 가능!
ex) Android(Java), Spring, sublet, java script
- 구글에서 Kotiln을 안드로이드 공식 언어로 채택함!
# Kotlin 소개
- 젯브레인의 오픈소스 그룹에서 개발
- 자바, 안드로이드 100% 호환
- 자바, 안드로이드, 브라우저, native app, 웹 백엔드 등 개발
- 함수형 언어, Lambdas, Extension, Null Safety 등 최신 언어의 트렌드 지원
-> 사용자가 더 편하게 코드를 작성할 수 있도록 되어있음. (런타임에러 등 오류 발생 가능성 줄여줌)
- Java8 Nougat 버전부터 지원하는 반면 Kotlin은 Lollipop 버전부터 지원
- 단점 : 자바로 하면 되는데 왜 배워야하는지 의문이 들 수 있음(띠용?), 함수형 언어의 어려움. Java와 Kotlin 100% 호환되지만 일부 미묘하게 다를 수 있음.
# 여담
- open JDK 무료
- oracle JDK 유료화됨.(Java8 까지는 무료)
# 코틀린의 가장 큰 장점!
public class data {
private String str = "";
private int i = 0;
@Override
public String toString() {
return "data{" +
"str='" + str + '\'' +
", i=" + i +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof data)) return false;
data data = (data) o;
return i == data.i &&
Objects.equals(str, data.str);
}
@Override
public int hashCode() {
return Objects.hash(str, i);
}
public String getStr() {
return str;
}
public void setStr(String str) {
this.str = str;
}
public int getI() {
return i;
}
public void setI(int i) {
this.i = i;
}
}
data class D01(var s1: String? = null, var i1: Int = 0)
# 특징
1. 자바의 불편한 점을 개선하고, 간소화 하는 방향으로 발전.
- Java와 100% 호환
- 무의미한 반복적인 코드를 간소화하고, 최대한 의미있는 부분만 집중하도록 발전
- 코드 작성시간과 읽는 시간을 줄여줌.
- 세미콜론(;) 불필요
- 정적 타입 언어지만 강력한 타입 추론 지원
정적 타입 언어 특징
- 성능: 컴파일 타임에 이미 메서드 호출관계가 지정되어 런타임시 빠르다
- 신뢰성: 컴파일러가 어느정도 컴파일타임에서 많은 오류를 잡아낸다.
- 유지 보수성: 코트상에서 객체의 타입을 알수 있기 때문에 코드를 다루기 쉽다
- 도구지원: 안전한 리팩토링이 가능하며, 개발툴은 정확한 코드 완성 기능을 제공할 수 있다.
- 강력한 nullability check 지원 : ?, ?., ?:, !!
- 제어식 지원
- Switch-case 보다 편리한 when
- default parameter 지원
2. 객체지향형 프로그래밍 지원
- Class / interface / abstract
- Operator overloading
- infix : a add b
- Object
- Companian
- Nested / inner
- Data
- Enum
- Sealed
3. 함수형 프로그래밍 지원
- 하이오더펑션 (고차함수) : 함수를 파라미터(데이터)로 전달할 수 있음.
- 람다
- 클로저
- It
- SAM(Single Abstract Method)
- Stream : Java8은 pararell stream 지원하지만 Kotiln은 아직.
- Standard Scope function
- T.let / T.run / run / with / T.apply / T.also
=> CPU 처리속도는 더이상 빨라지지 않음(정체). 병렬처리가 부상중! 객체지향 + 함수형 프로그래밍이 대두될 것.
- 제너릭 지원 (객체 / 함수)
- 불변형 / 공변형 / 반공변형
# 출처 : 모베란 백지훈 대표이사님
'Programming > Kotlin' 카테고리의 다른 글
[Kotlin]코틀린을 이용한 안드로이드 프로그래밍 실습 04 (0) | 2018.07.05 |
---|---|
[Kotlin]코틀린을 이용한 안드로이드 프로그래밍 실습 03 (0) | 2018.07.04 |
[Kotlin]코틀린을 이용한 안드로이드 프로그래밍 실습 02 (0) | 2018.07.03 |
[Kotlin] 코틀린을 이용한 안드로이드 프로그래밍 실습 01-2 (0) | 2018.07.02 |