아래의 글은 드미트리 제메로프, 스베트라나 이사코바 저/오현석역,『Kotlin in Action』,에이콘출판사(2017)의 내용을 기반으로 작성하였습니다.
kotlin은 저자가 밝혔듯이 러시아 상트페테르부르크 근처의 섬 이름이다.
위치는 북유럽 서쪽이다.
코틀린
1. 개발언어, jetbrain에서 개발하였음
2. JVM 기반 언어
3. 자바코드 및 라이브러리와 interoperability
4. 자바가 사용되고 있는 모든 용도에 적합하면서도 더 간결하고 생산적이며 안전한 대체 언어를 제공하는 것
5. javascript로도 코틀린 컴파일 가능, 코틀린 코드를 브라우저나 노드에서 실행할 수 있다.
6. 정적타입 : 컴파일 타임에 데이터의 타입이 정해짐, 컴파일 때 오류를 검출 할 수 있음. ( 타입 선언 생략 가능, 타입 추론 엔진)ene
7. class, inteface, generics 지원
8. function type 지원
9. annotation 지원
10. 함수형 및 함수타입
코틀린 프로그래밍
1. 서버프로그래밍 : 웹 어플리케이션, api 어플리케이션, RPC 프로토콜 지원 (기존 자바 라이브러리 혹은 프레임워크 통합 가능)
2.안드로이드 프로그래밍 : 모바일 어플리케이션 개발,
참고로 코틀린 프로그래밍을 한다고 해서 서버 프로그래밍과 안드로이드로 앱 개발을 동시에 할 수 있을 거라는 착각은 하지 말자.
물론 같은 코드로 쓰여져 있으니 읽을수는 있지만 이해한다고는 볼수 없기 때문이다.
사용해야하는 라이브러리가 다르며, 그리고 서버 프로그래밍과 클라이언트 UI 프로그래밍은 라이프사이클 관리가 다르며 데이터에 접근법이 다르므로 서로 다른 분야의 전문가이다. 하지만 둘이서 만나서 같은 코틀린으로 되어 있다면 이전보다는 서로를 이해하기가 좀 더 쉬울 것이라는 긍정적인 측면이 있다고 생각한다.
예제
fun main(args: Array<String>) {
val personList = listOf(Person("Colin"), Person("Jina", 20))
val oldest = personList.maxBy { it.age ?: 0}
println("Hello, world! $oldest")
}
코틀린 특징
1. 코드가 짧아진다.
2. 연산자 오버로딩이 된다. (연산자 정의는 허용하지 않는다. cf. 스칼라는 연산자 정의가 가능하다.)
3. .kt라는 확장자 컴파일 하면 .class가 된다.
4. .class된 파일을 .kt로 디컴파일이 될까? (즉, .java > .class > .kt 가 가능할까? 좀 더 테스트 해봐야 겠지만 검색해봤을때는 가능한 것으로 보인다.)
5. 코틀린 대화형 쉘 : REPL ( ㅎ 이것도 요즘 언어의 유행일세 )
6. jave to kotlin 변환기 ( 자바코드 > 코틀린 변환 ㅎㅎㅎ 역시 다 있네 intellij code > convert java to kotlin , tool > kotlin > show kotlin bytecode > decompile )
try.kotlinlang.org/#/Kotlin%20Koans/Introduction/Java%20to%20Kotlin%20conversion/Task.kt
blog.mindorks.com/how-to-convert-a-kotlin-source-file-to-a-java-source-file
How to convert a Kotlin source file to a Java source file?
In this blog, we will learn how to convert a Kotlin source file to a Java source file. We will do the file conversion by two methods. So, let's see how.
blog.mindorks.com
'독서관련 > Kotlin in Action' 카테고리의 다른 글
CH02 코틀린기초 - 맵이터레이션 (0) | 2021.01.01 |
---|---|
CH02 코틀린 기초 - loop (0) | 2021.01.01 |
CH02 코틀린 기초 - 스마트 캐스트 (0) | 2020.12.30 |
CH02 코틀린 기초 (0) | 2020.12.28 |
CH00 kotlin useful info (0) | 2020.12.27 |