Kotlin In Action 1장 - 코틀린이란 무엇이며, 왜 필요한가?

바이너리·2022년 1월 1일
2

Kotlin In Action

목록 보기
1/2
post-thumbnail

얼마 전 썬, 제키와 함께 코틀린 스터디를 시작했다.

사실 책의 내용을 요약하고 정리할 수 있다면 좋겠지만.. 내용이 너무 많을뿐더러 글쓰는 것과 정리하는 데 부담감을 가지게 될 것 같다.

그래서 공부할 때는 책을 가볍게 읽으면서 사소한 궁금증, 같이 얘기하고 싶은 이슈들을 공유 깃허브의 이슈로 리스트업하고 있다. 각 단원에서 이해한 내용과 해당 이슈들을 정리하는 방식으로 블로그에도 정리해보려고 한다.

코틀린 인 액션은 실제 JetBrains에서 코틀린을 설계하고 개발한 사람이 실제로 집필한 책이다.

1장의 목차는 다음과 같다.

  • 1.1 코틀린 맛보기
  • 1.2 코틀린의 주요 특성
    • 1.2.1 대상 플랫폼: 서버, 안드로이드 등 자바가 실행되는 모든 곳
    • 1.2.2 정적 타입 지정 언어
    • 1.2.3 함수형 프로그래밍과 객체지향 프로그래밍
    • 1.2.4 무료 오픈소스
  • 1.3 코틀린 응용
    • 1.3.1 코틀린 서버 프로그래밍
    • 1.3.2 코틀린 안드로이드 프로그래밍
  • 1.4 코틀린의 철학
    • 1.4.1실용성
    • 1.4.2간결성
    • 1.4.3 안전성
    • 1.4.4 상호운용성
  • 1.5 코틀린 도구 사용
    • 1.5.1 코틀린 코드 컴파일
    • 1.5.2 인텔리J 아이디어와 안드로이드 스튜디오의 코틀린 플러그인
    • 1.5.3 대화형 셸
    • 1.5.4 이클립스 플러그인
    • 1.5.5 온라인 놀이터
    • 1.5.6 자바-코틀린 변환기
  • 1.6요약

코틀린의 주요 특성

코틀린은 인텔리제이, 파이참을 서비스중인 JetBrains에서 개발한 프로그래밍 언어이면서 현재 서버, 안드로이드 개발 등 많은 도메인에서 사용중인 인기 언어다.

JVM 기반으로 동작할 수 있도록 설계되었기 때문에 기존 자바 언어를 완벽하게 대체할 수 있으며 자바 + 코틀린을 함께 사용하는 것도 가능하다.

출처: How kotlin is interoperable with java

그 경우 코틀린 컴파일러에 의해 코틀린 코드가 바이트코드로 먼저 변환되고, 이 중간 결과물 + 자바 코드를 자바 컴파일러가 변환한다.

C, Java와 같은 정적타입 지정언어이기 때문에 컴파일 타임에 변수의 타입이 결정된다. 이는 런타임에 발생할 수 있는 수많은 에러를 예방할 수 있다. 또한 동적타입 언어보다 성능면 이점도 가질 수 있다.

코틀린 컴파일러는 똑똑한 타입추론 기능을 제공하기 때문에 변수 타입을 코드에 지정하지 않아도 문맥을 파악해서 스스로 해당 변수의 타입을 지정해줄 수 있다.

자바8부터 스트림, 람다를 통해 함수형 프로그래밍 패러다임을 제공하고 있다. 이는 코틀린에서 더 간결하고 멋있게 쓸 수 있다고 들었다(by my buddy).

일반적으로 〰️ 형 프로그래밍이라는 단어들은 프로그래밍 언어가 어느 하나의 분류에만 속할 것이라는 착각을 심어준다고 생각한다. 그래서 코틀린 홈페이지에도 코틀린은 객체지향인지, 함수형 언어인지에 대한 QnA를 달아둔 것을 확인할 수 있다. 코틀린은 사용자에 의해 객체지향적으로도, 함수형으로도, 둘다로도 활용할 수 있으며 어느 하나에 종속되지 않는다. 일급 시민 클래스와 다양한 함수형 프로그래밍 패러다임을 제공하고 있으니 이 부분은 실제로 사용하면서 기대할만한 부분이라고 생각한다(모던자바인액션을 읽고있는 FP어린이)

JetBrains가 어떤 회사와는 다르게 평생 무료 오픈소스로 제공할것임을 선언하기도 했다.

코틀린 운용

코틀린은 이 글에서도 언급한 것 처럼 수많은 IT회사의 서버사이드 언어로 채택되기도 했으며, 스프링 공식 문서에서는 자바와 함께 샘플코드를 정식으로 제공하고 있다. 안드로이드는 메인 개발 언어를 코틀린으로 채택해서 사용하는 중이고, JS 언어로도 변환될 수 있다는 특징이 있다.

코틀린의 설계 철학

코틀린은 실용성, 간결성, 안전성, 상호운용성이라는 철학을 중심으로 설계됐다.

  1. 실용성: 특정 패러다임을 사용하도록 강제하지 않으며, IntelliJ와 높은 호환성을 제공한다.
  2. 간결성: 짧고 간결한 코드 = 높은 이해도 제공 + 유지보수의 도움 = 생산성 향상이라는 믿음 아래에 간결한 코드 문법을 제공한다. 단, 숏코딩 자체가 코틀린의 본질은 아니다.
  3. 안전성: JVM위에서 동작하기 때문에 기본적인 안정성이 있으면서 NPE를 방지하고, 변수의 불변성을 쉽게 지킬 수 있다.
  4. 상호운용성: 기존 자바 라이브러리를 그대로 쓸 수 있고, 자바 코드와 함께 사용할 수 있다. 코틀린에는 롬복이 필요없지만 특정 버전 이후부터 롬복을 지원하면서 최대한 기존 자바 사용자를 배려하는 느낌을 받을 수 있다.

우형 세미나에서 내가 짠 코틀린 코드를 자바 코드로 역컴파일하는 습관을 들여서 의도한대로 작성했는지 검토하는 습관을 가지라고 해서 실천해 볼 생각이다.

코틀린은 수많은 장점이 있지만, 그렇다고 자바가 갑자기 Garbage 언어가 되는건 아니다.

기존에 자바로 개발중이던 프로젝트나 서비스가 있다면 코틀린의 특장점, 현재 개발중인 서비스의 호환성과 마이그레이션 비용을 산정하고 정말 옮겨야겠다는 판단이 설 때 이동하면 될 것 같다 !!

1장 요약

  • 코틀린은 타입 추론을 지원하는 정적 타입 지정 언어이다. 소스코드의 정확성&성능을 보장하며 코드를 간결하게 유지할 수 있다.
  • 객체지향과 함수형 프로그래밍 스타일을 모두 지원한다. 일급 시민 함수를 통해 높은 추상화가 가능하고, 불변 값 지원을 통해 다중 스레드 애플리케이션 개발과 테스트를 쉽게 할 수 있다.
  • 서버 애플리케이션 개발에 용이하다. 기존 자바 프레임워크를 완벽하게 지원하면서 HTML 생성기/퍼시스턴스 등의 일반적인 작업을 위한 새로운 도구도 제공한다.
  • 실용적이고, 안전하고, 간결하고, 상호운용성이 좋다. 코틀린 설계 과정에서 일반적인 작업에 대해 잘 알려진 해법을 채택하고, NPE와 같은 흔한 오류를 방지하고, 읽기도 쉬우며 간결하고, 자바와 아무 제약 없이 통합될 수 있는 데 중점을 두었다.

👉 코틀린 인 액션 1장의 이슈 확인하기

profile
01101001011010100110100101101110

0개의 댓글