코틀린: 두 판 사이의 차이
편집 요약 없음 |
(→안전함=) |
||
17번째 줄: | 17번째 줄: | ||
또한 과도하게 엄격한 예외 처리를 강요하는 [[자바]]와는 달리 모든 예외 처리를 강제하지 않는다. 모든 예외를 다 처리함으로써 오류 문제에 단단한 코드를 만들려고 했던 게 [[자바]]지만 지나친 엄격함으로 대충 RuntimeException 같은 걸로 다 때워버리든가 해버려서 오히려 프로그램을 부실하게 만드는 [[자바]]의 문제점을 해소한 셈이다. | 또한 과도하게 엄격한 예외 처리를 강요하는 [[자바]]와는 달리 모든 예외 처리를 강제하지 않는다. 모든 예외를 다 처리함으로써 오류 문제에 단단한 코드를 만들려고 했던 게 [[자바]]지만 지나친 엄격함으로 대충 RuntimeException 같은 걸로 다 때워버리든가 해버려서 오히려 프로그램을 부실하게 만드는 [[자바]]의 문제점을 해소한 셈이다. | ||
==안전함 | ==안전함== | ||
코틀린이 강조하는 또 하나의 특징은 안전함이다. 코틀린은 null 값이 들어가도 되는 변수(nullable)와 그렇지 않은 변수를 구분한다. 기본은 nullable이 아니며 nullable로 지정하려면 변수 이름 뒤에 ? 기호를 붙여 줘야 한다. 이로 인해 null 값을 잘못 사용해서 생길 수 있는 문제<ref>이른바 The Billion Dollar Mistake라고 부른다.</ref>를 컴파일 단계에서 더 많이 잡아준다. | 코틀린이 강조하는 또 하나의 특징은 안전함이다. 코틀린은 null 값이 들어가도 되는 변수(nullable)와 그렇지 않은 변수를 구분한다. 기본은 nullable이 아니며 nullable로 지정하려면 변수 이름 뒤에 ? 기호를 붙여 줘야 한다. 이로 인해 null 값을 잘못 사용해서 생길 수 있는 문제<ref>이른바 The Billion Dollar Mistake라고 부른다.</ref>를 컴파일 단계에서 더 많이 잡아준다. |
2017년 6월 25일 (일) 08:36 판
Kotlin,
통합 개발환경인 인텔리 J로 유명한 제트브레인에서 내놓은 프로그래밍 언어. 자바 가상머신 위에서 동작하며 자바와 100% 호환된다는 것이 제트브레인 측의 설명이다. 즉 자바가 돌아가는 환경이라면 코틀린도 돌아간다. 그 대표적인 예가 안드로이드로, 지금도 코틀린을 사용해서 안드로이드 프로그래밍을 하는 것이 가능하며 안드로이드 스튜디오 3.0부터는 아예 자바와 함께 코틀린도 지원한다. 물론 자바 라이브러리도 제약 없이 갖다 쓸 수 있다.
특징
간결함
자바에 비해서 훨씬 간결하게 코드를 짤 수 있으며, 현대 프로그래밍의 여러 개념들을 적극 수용했다. 실제로 똑같은 일을 하는 프로그램을 자바와 코틀린으로 짜 보면 코틀린의 코드 양이 훨씬 적다. 예를 들면 아래의 코드는 단 한 줄로 name, email, company 세 개의 필드를 가지고 이에 대한 getters와 setters는 물론 equals(), hashCode(), toString() 그리고 copy()까지 모두 지원하는 POJO 클래스를 정의한다.
data class Customer(val name: String, val email: String, val company: String)
이걸 자바로 짜려면? 말도 하지 말자.
또한 과도하게 엄격한 예외 처리를 강요하는 자바와는 달리 모든 예외 처리를 강제하지 않는다. 모든 예외를 다 처리함으로써 오류 문제에 단단한 코드를 만들려고 했던 게 자바지만 지나친 엄격함으로 대충 RuntimeException 같은 걸로 다 때워버리든가 해버려서 오히려 프로그램을 부실하게 만드는 자바의 문제점을 해소한 셈이다.
안전함
코틀린이 강조하는 또 하나의 특징은 안전함이다. 코틀린은 null 값이 들어가도 되는 변수(nullable)와 그렇지 않은 변수를 구분한다. 기본은 nullable이 아니며 nullable로 지정하려면 변수 이름 뒤에 ? 기호를 붙여 줘야 한다. 이로 인해 null 값을 잘못 사용해서 생길 수 있는 문제[1]를 컴파일 단계에서 더 많이 잡아준다.
var output: String
output = null // Compilation error
val name: String? = null // Nullable type
println(name.length()) // Compilation error
각주
- ↑ 이른바 The Billion Dollar Mistake라고 부른다.