코틀린이란
자바 플랫폼에서 돌아가는 프로그래밍 언어입니다. 자바와 완벽 호환되어 코틀린으로 많이 넘어간다고 해요.
맛보기
// 데이터 클래스
data class Person(
val name: String,
val age: Int? = null // 널이 될 수 있는 타입 지정, 디폴트 값
)
// 최상위 함수
fun main(args: Array<String>) {
val persons = listOf(
Person("Alice"),
Person("Bob", age = 29) // 이름 붙은 파라미터
)
val oldest = persons.maxBy { it.age ?: 0 } // 람다 식과 엘비스 연산자
println("The oldest is: $oldest") // 문자열 템플릿
}
코틀린의 특성
코틀린의 목적은 자바를 대체하면서 간결하고 생산적이며 안전한 언어를 제공하는 것이다.
정적 타입 지정 언어
컴파일 시점에 프로그램의 구성 요소의 타입을 알 수 있고, 필드 메소드 사용 시마다 컴파일러가 검증해준다는 뜻이다.
이 점에서 그루비와는 다르다. 동적 타입은 타입과 관계 없이 모든 값을 넣을 수 있고 검증이 실행 시점에 일어나며 그에 따른 코드가 간결해지고 유연해질 수는 있다. 그러나 실행 시점에 오류가 확인되는 위험이 있다.
자바와 다른 점은 컴파일러가 문맥으로 변수 타입을 유추하기 때문에 타입 선언을 생략해도 된다.(동적 타입의 장점을 가져온다)
var x = 1 // x를 Int로 초기화
장점: 성능, 신뢰성, 유지 보수성, 도구 지원
함수형 프로그래밍과 객체지향 프로그래밍
함수형 프로그래밍의 개념
- 함수를 일반 변수처럼 다룰 수 있다.
- 불변성 - 내부 객체가 바뀌지 않는다.
- 입력이 같으면 항상 같은 출력을 내놓는다.
함수형 프로그래밍의 장점
- 간결성 - 함수를 값처럼 활용해 강력한 추상화를 사용해서 코드 중복을 막는다.
- 다중 스레드 환경에도 안전 - 불변 데이터 구조라서 같은 데이터를 여러 스레드에서 변경할 수 없다. 복잡한 동기화 프로그래밍이 없어도 괜찮다.
- 테스트가 쉽다. TDD가 어렵지만 상대적으로 코틀린으로 짜기 쉽다.
코틀린은 이 장점들을 모두 품고 있다.
- 함수 타입을 지원해 파라미터로 함수를 받을 수 있고 Return도 할 수 있다.
- 람다식을 지원해 복잡한 코드 블록을 사용하지 않아도 된다.
- 데이터 클래스로 불변적인 값 객체를 편하게 만들 수 있다.
- 객체를 함수형 스타일로 만들 수 있다.
코틀린의 철학
간결성 - 개발자가 의미없는 코드 작성을 줄이도록 하고 Lombok 또한 필요가 없다. 람다를 지원해 코드 블록을 줄일 수 있다.
안전성 - 자바에서 가장 짜증나는 NullPointerException을 없애기 위해서 많은 노력을 했다.
val s: String? = null // null O
var s2: String = "" // null x
또 ClassCastException를 방지해준다. 아래 코드에선 타입 검사와 캐스팅을 한 번에 한다.
if (value is String) // 타입검사
println(value.toUpperCase()) // 메소드 사용
코틀린 도구 사용
.kt 확장자를 파일에 붙인다. 자바와 같이 코틀린 컴파일러가 소스 코드를 분석해 .class 파일을 만들어 내고 .jar 파일로 실행을 합니다.
'스프링 부트 > 코틀린' 카테고리의 다른 글
[코틀린] 인터페이스 사용법 (0) | 2022.03.09 |
---|---|
[코틀린] 데이터 클래스 data class (0) | 2022.03.09 |
[코틀린] for문, while문, Iterator 사용법 (0) | 2022.03.09 |
[코틀린] 코틀린 기초 함수 변수 선언법 (0) | 2022.03.09 |
[코틀린] 맥북에 설치하고 스프링 Rest API로 CRUD 해보기 (2) | 2022.03.08 |
댓글