1. 코트린을 사용하는 이유
– 코트린의 주요 목적은 현재 Java가 사용되는 모든 용도에 적절하고 간결하며 생산적이고 안전한 대체 언어 제공하는 것이다.
2. 코트린 활용 영역
– 서버의 코드 (백엔드) -> Spring에서 Kotlin의 공식 사용 지원 우선 했다
– Android 기기에서 실행되는 모바일 애플리케이션
– IOS 장치에서도 사용 가능 (Intel의 멀티 OS 엔진, KMM 등)
3. 코트린은 정적 유형 언어입니다.
(객체 지향 및 함수형 프로그래밍 지원)
– 정적 형식 언어: 컴파일 시 형식 확인이 수행됩니다.
프로그램 내에서 객체의 필드와 메서드를 사용할 때마다 컴파일러가 형식을 확인합니다.
– 타입 추론(Type inference): 컴파일러가 컨텍스트를 고려하여 변수 타입을 결정하는 기능입니다.
– 정적 유형 언어의 장점 : 성능, 안정성, 서비스 가능성, 도구 지원
- 성능: 런타임에 어떤 메소드를 호출하는지 확인하는 프로세스는 필요하지 않습니다.
- 신뢰성: 컴파일러가 프로그램의 정확성을 검증하므로 런타임에 프로그램이 오류로 인터럽트될 가능성이 줄어듭니다.
- 유지 보수성 : 코드로 처리하는 객체가 어떤 유형에 속하는지 알 수 있으므로 처음 보는 코드를 다룰 때 간단합니다.
- 도구 지원: 정적 유형 지정을 사용하면 보다 안전하게 리팩토링할 수 있으며 도구는 보다 정확한 코드 완성 기능을 제공할 수 있습니다.
– 가장 중요한 특성은 코트린 널이 되는 타입 지원한다.
-> 모든 오브젝트 변수가 NOT Null입니다.
(null이 되는 타입을 지원한다 => 컴파일시에 널 포인터 예외가 발생하는지 확인)
(Java는 모든 객체 변수를 nullable로 정의하고 null 안정성 검사는 개발자의 임무입니다.
try-catch로 잡지 않으면 NPE 발생)
4. 코트린은 간결하다.
– 한 언어가 간결하다는 말은 그 언어로 작성된 코드를 읽을 때, 의도를 쉽게 파악가능한 구문 구조를 제공한다.
– “람다” 지원 -> 반복하거나 길게 할 수 있는 코드를 라이브러리 함수 호출로 바꿀 수 있으며, 람다를 통해 라이브러리 함수에 쉽게 전달할 수 있습니다.
– 간결성은 생산성을 향상시키고 개발을 보다 빠르게 할 수 있도록 한다.
5.안전성
– 프로그래밍 언어가 안전하다는 것은 프로그램에서 발생할 수 있는 에러 중에서 어떤 종류의 에러를 프로그램 설계가 원칙적으로 방지해 준다는 의미이다.
(물론 절대적인 것은 아니다)
– 언어가 안전하다 -> 에러를 프로그램으로 방지 -> Java보다 안전한 언어이다 -> 코틀린을 JVM에서 실행하면 메모리의 안전성을 보증한다, Java보다 적은 비용으로 타입의 안전성을 유효하다.
– 코틀린 컴파일러가 타입을 자동적으로 추론해 주므로, Java보다 적은 비용으로 타입 안전성을 사용할 수 있다.
– ‘?’를 사용하여 어떤 유형이 널이 될 수 있는지 표시할 수 있습니다(? 있다면 널이 될 수 있습니다.
)
– 한 객체를 다른 타입으로 캐스트하기 전에 타입 체크를 해야 하지만 ‘is’를 통해 체크할 수 있다.
if(a is String)
println(a.toUpperCase())
6. 상호 운용성
– Java 코드에서 코트린 코드를 호출할 때 아무런 노력이 필요하지 않습니다.
따라서 두 언어를 혼합할 수 있습니다.
– 기존의 Java 라이브러리를 최대한 활용 가능. -> Cotlin은 Java 표준 라이브러리 클래스에 의존합니다.
하지만 코틀린에서 컬렉션을 보다 쉽게 활용할 수 있는 몇 가지 기능을 추가할 뿐이다.
– 코트린은 Java와 소스 파일이 혼합되어도 올바르게 컴파일 할 수 있습니다.
7. 컴파일
- Cotlin 소스 코드를 .kt 확장자를 파일에 붙여 넣습니다.
- 코틀린 컴파일러가 소스 코드를 분석합니다.
- 소스 코드를 분석하여 .class 파일을 만듭니다.
- 만든 .class 파일을 Java 바이트 코드로 변환
- Cotlin 컴파일러로 컴파일 된 코드는 Cotlin 런타임 라이브러리에 따라 다릅니다.
- 코트린으로 컴파일된 애플리케이션을 배포합니다(배포할 때 런타임 라이브러리도 함께 배포해야 합니다.