[Java/Kotlin] 코틀린 Kotlin

Jay·2021년 1월 13일
0

Java&Kotlin

목록 보기
4/30
post-thumbnail

Kotlin

  • Java가 실행되는 환경에서 자바를 대체할 수 있도록 개발된 언어.
  • 사용처
    • 백엔드의 코드
    • 모바일 안드로이드 어플리케이션 코드
    • and so on..

(JS도 코틀린으로 컴파일 가능하다는..)

정적타입 지정 언어

우선, 코틀린정적 언어이다.
그래서 컴파일 시점에 모든 객체나 메서드의 타입을 알 수 있다.
즉, 컴파일러가 타입을 확정하고 검증해준다.

동적 언어는 타입과 관계없이 모든 값을 변수에 넣을 수 있고 이런 필드나 메서드의 접근에 대한 검증은 run time에 일어난다.
그래서 코드 길이는 더 짧아지고, 데이터 구조는 유연하게 가질 수 있지만
오타 등의 실수는 컴파일시 잡지 못합니다.

코틀린은 타입추론이 가능하다.
아래와 같은 코드를 작성할 수 있다.

var ex = 1
var ab : Int = 1000

정적 타입 언어의 장점

  • 성능 : 컴파일 타임에 이미 메서드 호출 관계가 지정되어 런타임시 빠르다
  • 신뢰성 : 컴파일러가 어느정도 컴파일 타임에서 많은 오류를 잡아낸다.
  • 유지 보수성 : 코드 상에서 객체 타입을 알 수 있어 코드를 다루기 쉽다.
  • 도구 지원 : 안전 리팩토링이 가능하며, 개발 툴은 정확한 코드 완성 기능을 제공한다.
  • nullability check 등의 이점도 가진 코틀린이다.

함수형 프로그래밍 with 객체지향 프로그래밍

코틀린을 사용하여 함수형 프로그래밍이 가능하다.
함수를 변수에 담을 수 있고, 함수의 파라미터로 함수를 넘겨줄 수도 있다.
java8에서의 지원이지만, java8에선 함수 타입까지 지원을 하진 않는다.
(대신, interface로 함수형 타입 대체한다)


코틀린 철학

1. 실용성

  • 실용적인 언어 = 코틀린
  • 대학원에서 나온 새로운 방식 언어가 아닌 자바의 불편한 점을 개선하고, 간소화 하는 방향으로 발전되었다.

2. 간결성

  • 개발자가 작성하는 코드에서 의미 없는 부분을 줄이고 의미는 없지만 형식을 맞추기 위해 넣어야 하는 부서적 코드들을 제거 할 수 있도록 합니다.

ex) getter/setter를 컴파일시 자동으로 생성해주며, 함수형을 지원하여 코드량을 줄일 수 있다.

3. 안정성

  • nullpointerexception을 미리 잡아준다.
  • 오류 발생 가능성이 있는 코드는 아예 컴파일 조차 되지 않는다.

ClassCaseException을 막는 코틀린

if(value is String){
	pritnln(value.toUpperCase())
}

value is String을 보면, type검사와 casting을 동시에 한다.
type검사 & casting을 따로하는 자바보다 간결하다.

4. 상호 운용성

  • 기존 사용하던 라이브러리를 코틀린에서 그대로 사용할 수 있다.
  • 자바 코드 상속 및 구현하는 것 역시 가능하다.
  • 디버깅 시에도 코드가 섞여 있더라도 하나의 언어를 쓴 것 처럼 한 단계씩 실행 가능하다.
    ex. 코틀린에서 collection을 따로 구현하지 않고 자바의 collection을 그대로 가져다가 쓴다. 물론 해당 라이브러리를 확장해서 좀 더 편리한 API를 제공한다.
profile
developer

0개의 댓글