[코틀린 스터디 01] 0530

※ 부스트코스 코틀린 프로그래밍 기본 1 강의를 정리한 내용입니다.

✔ 코틀린의 배경

안드로이드 대체용으로 나타난 언어지만, 풀 스택 웹을 포함한 IOS, 임베디드, IOT 등 다양한 플랫폼에서 사용할 수 있게끔 만들어짐.

✔ 코틀린의 특징

◆ 안드로이드 스튜디오 모체로 유명한 JetBrain에서 개발하고 보급, 안드로이드 공식 개발 언어 중 하나.
◆ 코드가 간결하며 호환성이 높음
◆ 문장 끝에 세미콜론은 옵션
◆ 변수는 Nullable(널 값 사용 가능)과 NotNull로 나뉘는데, 변수 선언 시 '?'를 붙여 Nullable로 만들 수 있음.

✔ 사용가능한 플랫폼

Kotlin/JVM - 자바 가상 머신(jvm) 상에서 동작하는 앱
Kotlin/JS - 자바스크립트에 의해 브라우저에서 동작하는 앱 → 웹의 여러 내용 처리 가능 (=웹 앱으로 동작 가능)
Kotlin/Native - LLVM(특정 중간코드) 기반의 ARM, X86 등 CPU 네이티브 컴파일을 지원해 여러 타깃의 앱을 만들 수 있음 (= 어디서든 동작시킬 수 있음)
즉, 현재 존재하는 모든 플랫폼에서 돌릴 수 있음. 그러나 JVM 이외에 나머지 두 가지는 진척도가 낮음.

✔ 코틀린의 장점

◆ 자료형에 대한 오류를 미리 잡을 수 있는 정적 언어(컴파일러가 타입을 검증), 타 스크립트 언어는 인터프린터가 실행 단계마다 검사
◆ 널 포인터로 인한 프로그램의 중단 예방 가능 (널 포인터 예외-NPE에서 자유로움)
◆ 데이터 형 선언 시, 널 가능한 형식과 불가능한 형식 지원
-널 가능한 형식은 타입 뒤 ?를 붙여 사용, 불가능한 형식은 타입명만 작성
◆ 자바와 완벽하게 상호운영이 가능, 기존 자바 프로젝트의 일부를 코틀린으로 바꿔가며 운영 가능.
◆ 함수형 프로그래밍 + 객체 지향 프로그래밍 모두 가능
◆ 세미콜론 생략 가능

✔ 개발환경 설치

◆ 강의에서는 IntelliJ를 사용하나, 스터디에서는 구름 ide를 이용할 예정이므로 따로 개발 환경 구축 진행 X, but 로컬에는 사전에 JDK 설치한 상태
◆ 코틀린 확장자는 .kt, 코틀린의 주석은 슬래시 두 번(//)
◆ 아래 코틀린 구문은 코틀린 1.3 버전에서부터 작성 가능. 하지만, 현재 사용하고 있는 구름 IDE에서는 1.1.2-5 버전을 지원하고 있기 때문에 해당 코드를 그대로 작성하면 오류가 남.

//구름 ide에서는 오류 발생, 코틀린 1.3 버전에서부터 사용 가능
fun main(){ //프로그램 진입점
    println("helloKotlin!")
}
//이전 버전에서 사용가능한 코틀린 구문
fun main(args:Array<String>){
    println("helloKotlin!")
}

구름 ide 실행 키는 Shift + f5, 그러나 실행 속도가 좀 많이 느리다. 그래서 다른 ide 툴인 코틀린 플레이 그라운드를 사용하였다.
다른 ide 툴인 코틀린 플레이그라운드로 이동

✔ 첫번째 프로젝트, Hello world - 1

fun main(){
  println("helloKotlin!")
}

위 코드에서 보면 알 수 있듯, main은 진입점이다. 실행을 누르면 진입점으로 들어가서 코드를 실행한다.
실행하면 hellokotlin! 이라는 텍스트가 콘솔에 뜨는데, 이는 println이 콘솔과 관련된 api와 연계되어 있기 때문이다. 이때, 코틀린 라이브러리 가서 살펴보면 system.out.println(자바 출력문)을 소환하는 것을 볼 수 있다.


◈ 자바와 다르게 class 없이 함수 하나만 존재

실제로 main 메서드는 파일명을 기준으로 자동으로 클래스가 생성됨
- fun : 함수를 정의하는 키워드
- {} : 구현부를 의미, 코드를 감싸는 역할

✔ 바이트코드

특정 하드웨어가 아닌 가상 컴퓨터에서 돌아가는 실행 프로그램을 위한 이진 표현법, 소프트웨어 상에서 돌아가므로 기계어보다는 추상적임.
코틀린으로 코드를 작성하고 바이트 코드를 확인해보면, (JVM 기준) 자바기반의 바이트 코드를 확인할 수 있으며 이는 decompile을 통해 완전히 자바 코드로 바꿀 수 있다.

(실행 과정)

.kt 파일 → .java형태의 중간코드 → JVM에서 실행

✔ 첫번째 프로젝트, Hello world - 2

fun main(args:Array<String>){
 	//인자를 사전에 설정해야 함.
    println(args[0]) //설정 없이 실행하면 outofbound 에러 발생
    println("args[0] =${args[0]}")
    //따옴표 사이에 변수를 넣기 위해서는 중괄호 감싼 다음에 앞에 $를 사용해야 함.
}

args:Array → 함수의 인자가 문자 배열이다.
: (콜론) 기준으로 args(인수)를 Array(문자배열)로 받겠다라는 의미로, 프로그램 외부에서 인자를 받아들일 때 사용

좋은 웹페이지 즐겨찾기