1. 특징
코틀린은 자바 플랫폼에서도 돌아가는 새로운 프로그래밍 언어다. 그래서 코틀린의 대 전재는 자바와 코틀린을 섞어가면서 써도 전혀 문제 없이 돌아가게 만들었다.
주요 특성은 자바가 실행되는 곳에선 모두 돌아가고 정적 타입 지정 언어(statically typed)라는 것이다.
동적 타입(dynamically typed) 지정 언어는
greet_hi = "hello"
one = 1
const greetHi = "hello"
const one = 1
와 같이 코드 작성자가 타입에 대해 알 필요 없이 그저 적고, 무슨 타입인지는 실행하면서 알아낸다. JVM에서는 그루비나 JRuby가 대표적인 동적 타입 지정 언어다. 단점은 잘못 입력 시 컴파일 단계에서도 감지하지 못하고 에러를 발생시킨다.
자바는 정적 타입 지정 언어이며, 모든 프로그램 구성 요소의 타입을 컴파일 시점에 알 수 있고 프로그램 안에서 객체의 필트나 메서드를 사용할 때마다 컴파일러가 타입을 검증해준다. 그래서
String greetHi = "hello"; // (맞는지 모르겠음)
int one = 1;
위 처럼 원래 타입을 일일히 지정해 줘야 하지만 코틀린은 그럴 필요가 없다.
val greetHi = "hello"
val one = 1
그럼 이게 어딜봐서 타입을 표시하냐?? 하지만 컴파일러가 문맥을 고려해 타입을 추론해서 지정한다. 이를 타입 추론(type inference)라고 부른다. 장점은 성능, 신뢰성, 유지 보수성, 도구 지원이 있다. 즉, 동적 타입을 따라하면서도 정적 타입의 장점을 가져온다는 것.
코틀린의 또 다른 장점은 함수형 프로그래밍을 사용할 수 있다고 한다. 람다 같은거 사용 가능하다는데, 자바는 그렇게까지 안써봐서 잘 모르겠다. 책에서는 있긴 한데 지원이 별로라고 함(이렇게 모르는건 직접 부딪혀야 머리에 쏙쏙 들어오는데 큰일이네). 그 외의 장점은 Flutter 마냥 안드로이드와 HTML에도 작성 가능하게 하려고 노력중이라 한다.
2. 철학
코틀린의 철학을 실용성, 간결성, 안정성, 상호운용성 4가지로 소개하고 있다.
실용성은 코틀린은 이미 IT에서 굴러본 개발자들이 만들어서 가독성 같은 것도 중요하지만 다른 프로그래밍 언어에서 성공적으로 채택된 해법과 기능을 가지고 왔다. 또한 IDE인 IntelliJ와 같이 개발했기에 도구까지 고려했다.
간결성은 코드는 사실 작성보다 읽는 시간이 더 많아서 코드에서 의미가 없는 부분을 줄이고, 보통 항상 쓰이는 기본 기능은 기본 라이브러리로 제공한다. 또 코드 억지로 짧게 한다고 지 멋대로 오버라이딩 해서 수정하는거 막아놨다.
안정성은 얘도 이미 왠만한 오류들(메모리 안정성, 버퍼 오버플로, 동적 메모리 잘못 사용 등)은 잘 막고있는 자바와 같은 JVM를 쓰고 있기 때문에 컴파일러 부분에서 NullPointerException 만큼은 없애기 위해 노력한다. 또 ClassCastException도 방지한다.
상호운용성은 코틀린으로 작성한 건 자바로 실행할 수 있고, 자바로 실행한 건 코틀린으로도 실행할 수 있다. 자바 라이브러리도 사용할 수 있다. 같은 호환성 얘기.
3. 어떻게 사용할까
kotlinc <소스파일 또는 디렉터리> -include-runtime -d <jar 이름>
java -jar <jar 이름>
코틀린으로 빌드하면 자바 파일을 빌드할 때 나오는 *.class 로 빌드되서 호환성 있다고 한다. 단, 코틀린 런타임을 포함시켜야 한다.
'CS > 코틀린 인 액션' 카테고리의 다른 글
5. 람다로 프로그래밍 (0) | 2023.04.30 |
---|---|
4. 클래스, 객체, 인터페이스 (0) | 2023.04.28 |
3. 함수 정의와 호출 (0) | 2023.04.24 |
2. 코틀린 기초 (0) | 2023.04.23 |
코틀린 인 액션 책 정리 할려고 함 (0) | 2023.04.22 |