[Kotlin] 1장. 코틀린이란 무엇일까?

leeeha·2022년 6월 17일
0

코틀린

목록 보기
4/28
post-thumbnail

출처: https://www.boostcourse.org/mo132/lecture/59964

코틀린의 탄생 배경

목표

풀스택 웹 개발, Android와 IOS 앱 개발, 그리고 임베디드, IoT 등 모든 개발을 다양한 플랫폼에서 가능하도록 하자!

특징

  • IDE로 유명한 JetBrains에서 개발하고 보급
  • 코드가 간결하고 다재다능하며 호환성이 높다.
  • 문장 끝에 세미콜론은 옵션이다.
  • 안드로이드 스튜디오에서 안드로이드 공식 언어로 추가
  • 변수는 Nullable과 NotNull로 나뉘는데, 변수 선언시 '?'를 붙여서 Nullable로 만들 수 있다.

다양한 플랫폼

사용 가능한 플랫폼

  • Kotlin/JVM: JVM (Java Virtual Machine) 상에서 동작하는 앱을 만들 수 있다.
  • Kotlin/JS: 자바스크립트에 의해 브라우저에서 동작하는 앱을 만들 수 있다.
  • Kotlin/Native: LLVM (Low Level Virtual Machine) 기반의 네이티브 컴파일을 지원해서 여러 타깃의 앱을 만들 수 있다. 즉, ARM, x86 프로세서 등등 하드웨어 종류에 상관 없이 멀티 플랫폼 상에서 동작하는 앱을 만들 수 있다.

Kotlin/Native에서의 타깃

  • IOS (arm32, arm64, emulator x86_64)
  • MacOS (x86_64)
  • Android (arm32, arm64)
  • Windows (mingw x86_64)
  • Linux (x86_64, arm32, MIPS, MIPS little endian)
  • WebAssembly (wasm32)

코틀린의 장점

  • 자료형에 대한 오류를 미리 잡을 수 있는 정적 언어 (Statically typed)
    - 정적 타입: 컴파일러가 컴파일 타임에 데이터의 타입을 검증해준다.
  • 널 포인터로 인한 프로그램의 중단을 예방할 수 있다.
    - 보통 개발자들은 코틀린의 이러한 특징을 'NPE에서 자유롭다'고 말한다.
    - NPE은 Null Pointer Exception을 줄여서 말한 것
  • 데이터형 선언 시 널이 가능한 형식과 불가능한 형식을 구분해서 지원
  • 자바와 완벽하게 상호 운영이 가능하다. 왜냐하면 자바와 코틀린은 모두 바이트 코드로 컴파일 되며, JVM의 인터프리터는 이 코드들이 여러 플랫폼에서 동작하도록 만들어주기 때문이다.
  • 아주 간결하고 효율적
  • 함수형 프로그래밍과 객체 지향 프로그래밍 모두 가능 (멀티 패러다임 언어)
  • 세미콜론을 생략할 수 있다.

자바 JDK 설치하기

JDK 설치는 왜?

  • 코틀린을 JVM에서 실행하기 위해서
  • 기존 자바와 상호작용 할 수 있고 자바 라이브러리를 이용할 수 있다.

Oracle JDK vs. OpenJDK

  • 자바 언어 자체는 무료지만, 그에 딸린 라이브러리들은 무료가 아니다.
  • Oracle JDK: 보안 업데이트를 지속적으로 받으려면 '구독' 방식으로 라이선스 구매 필요!
  • OpenJDK: 제한 없이 사용 가능. 단, 보안 서비스의 의무가 없어서 유지보수가 어려움.

JDK 배포판의 선택

프로그램 개발을 위해서 어떤 SDK를 선택해야 할까요? 무엇을 선택해도 상관은 없으나 Oracle JDK SE 8은 2019년 1월부터 보안 업데이트를 공개적으로 제공하지 않고 유료 구독자에게만 업데이트를 제공합니다. 기업에서 상용 제품을 개발하는 경우에는 Oracle JDK에 대한 라이선스를 지불하고 안정적인 보안 서비스를 받는 것을 고려해볼 수 있습니다.
무료로 사용할 수 있는 Zulu 배포판은 OpenJDK기반이며 역시 TCK인증을 통과했기 때문에 상업적인 제품을 개발하는데도 문제 없을 것입니다. 다만 오라클이 상용으로 제공하는 세부적인 추가 API가 필요하다면 오라클의 JDK를 선택할 수 있습니다. 앞으로의 실습은 OpenJDK 기반인 Zulu 배포판을 사용해 보도록 하겠습니다.

Azul의 Zulu 설치하기

Azul의 Zulu는 TCK 인증을 통과한 OpenJDK를 묶어서 배포하는 제3의 벤더이다.

이제 강의 설명을 그대로 따라서 설치하자!
👉 https://www.boostcourse.org/mo132/lecture/59965

다운로드 사이트
👉 https://www.azul.com/downloads/zulu/

설치가 끝나고 환경변수 설정까지 해준다!

내 PC > 속성 > 관련 설정 > 고급 시스템 설정 > 환경 변수 > 시스템 변수 > 새로 만들기

변수 이름: JAVA_HOME
변수 값: C:\Program Files\Zulu\zulu-8

OpenJDK 설치가 완료된 걸 cmd 창에서 확인할 수 있다!


IntelliJ IDEA 설치하기

자신이 사용하는 운영체제에 맞게 IntelliJ IDEA Community Edition을 설치하면 된다!

👉 https://www.jetbrains.com/idea/download

쫘잔!


main 함수 실행하기

최초에는 Alt + Shift + F10 으로 프로그램을 실행할 수 있다.


main 함수 분석

바이트 코드 확인

Tools > Kotlin > Show Kotlin Bytecode 를 누르면 컴파일 된 바이트코드를 볼 수 있다.

Decompile 버튼을 누르면 컴파일 되기 전의 자바 코드를 확인할 수 있다.

println의 실체

Ctrl + B 버튼으로 함수의 실체를 확인해 볼 수 있다.

Console.kt 파일에서 한번 더 Ctrl + B 를 누르면, 자바 코드를 확인할 수 있다. 최상위 레벨에서는 코틀린을 사용하고 있지만 결국 그 하위에서는 자바 라이브러리가 쓰이고 있던 것이다!

다시 실행을 할 때는 Shift + F10 으로 프로그램을 실행할 수 있다.

명령줄 인수가 있는 경우

요약

main 함수는 최상위 함수로 실행의 진입점이다. 자바와 같은 객체 지향 언어는 프로그램 실행을 위해 클래스와 그 안의 main 함수가 필요하다. 하지만 코틀린은 클래스 없이 main 함수 하나로 실행이 가능하다.

JVM 상에서 실행하기 위해서 실제로 코틀린의 main 함수는 파일명을 기준으로 자동으로 클래스를 생성한다. 만들어진 파일은 IntelliJ IDEA의 메뉴에 [Tools → Kotlin → Show Kotlin Bytecode]를 누른 후 생성된 화면에서 [Decompile]을 누르면, 자바 코드를 확인할 수 있다.

profile
꾸준히!

0개의 댓글