[Kotlin] 코틀린 인 액션 1장
1장에서 다루는 내용
-코틀린 기본 기능 데모
-코틀린 언어의 주요 특성
-코틀린을 활용한 안드로이드와 서버 개발
-코틀린이 다른 언어보다 더 나은 점
-코틀린으로 코드를 작성하고 실행하는 방법
정적 타입 지정 언어
동적 타입 지정 언어와 달리 메서드와 필드에 대한 검증이 컴파일 타임에 일어난다.
정적 타입 지정 언어는 컴파일 타임에 검증이 일어나 여러 장점들이 존재한다.
1. 런타임에 호출할 메서드 검증을 안 해도 되므로 빠르다.
2. 안정적이다. 컴파일 타임에 오류를 검출해서 런타임에 정지될 확률이 낮아진다.
3. 타입을 명시하기 때문에 코드 이해가 빠르다.
4.ide 도구를 이용해서 리팩토링을 안전하게 할 수 있다.
하지만 타입 명시를 해주어야 하기 때문에 코드가 길어진다.
코틀린은 타입 추론을 사용한다.
그래서 var data = 123 처럼 아무 형태나 값을 넣게 되면 컴파일 타임에 타입 추론을 해서 타입 지정을 한다.
함수형 프로그래밍
1.일급 시민인 함수
함수를 일반 값처럼 다룰 수 있고, 인자로 넘길 수도 있다. 그렇기 때문에 더 강력한 추상화를 할 수 있다.
2. 불변성
내부값이 절대 바뀌지 않는 불변 객체를 선언할 수 있다. 불변성을 이용해서 동기화 코드 없이 스레드 세이프하게 만들 수 있다.
3. 부수효과 없음
함수에 같은 입력을 넣으면 항상 같은 값이 나온다. 외부 환경과 상호작용 하지 않는다. 그렇기 때문에 독립적으로 테스트할 수 있다.
코틀린의 철학
1. 실용성
실제 문제들을 해결하기 위해 나온 실용적인 언어
2. 간결성
코드는 간결할수록 내용 파악을 하기 쉽다. 반복되는 큰 의미가 없는 코드를 줄인다. (게터, 세터)
라이브러리 내부 내용들은 기능들은 캡슐화하고 람다를 사용해서 코드 블록을 넘기면서 간결해진다.
3. 안정성
안전성과 생산성은 트레이드오프이지만 비용을 줄이면서 안정성을 가져가고 싶어 했다.
1) 메모리 안전성, 타입 안정성을 가질 수 있는 Jvm 선택했다.
2) null안정성, nullPointerException이 생길 수 있는 연산을 금지한다.
3) 객체를 다른 타입으로 캐스트 하는 경우 타입 검사가 필수이다. 타입 검사를 하면 바로 변환된 타입으로 사용할 수 있다.
타입 캐스트를 할 때 같은 타입으로 검사 되다 보니 이를 생략하는 경우가 많고 오류를 발생할 수 있기 때문이다.
4. 상호보완성
기존에서 자바에서 사용하던 api들, 상속, 구현 개념을 그대로 사용할 수 있다. 컬렉션 라이브러리 같은경우 자바 컬렉션 라이브러리를 그대로 가져와서 사용한다. 자바 - 코틀린 호환이 된다.
코틀린의 컴파일 과정
코틀린을 빌드할때 코틀린 런타임 라이브러리에 의존한다. 메이븐, 그래들, 앤트등의 빌드 시스템과 호환된다. 앞의 빌드 시스템들은 앱을 패키징할때 알아서 코틀린 런타임을 포함시켜준다. 코틀린 런타임은 코틀린 자체 표준 라이브러리 클래스와 코틀린에서 자 바 API의 기능을 확장한 내용을 포함한다.