[Kotlin] 1. 코틀린 시작하기

문상훈·2022년 7월 7일
0

Kotlin

목록 보기
2/7

🛴 01. 코틀린 시작하기

📌 01-1 코틀린의 탄생 배경

코틀린 소개

  • JetBrains에서 개발한 언어
  • 구글의 안드로이드 스튜디오도 IntelliJ IDEA 기반이며 코틀린 언어를 공식적으로 지원하고 있다.
  • 코틀린은 멀티 플랫폼 언어이다.

    Kotlin/JVM : 자바 가상 머신(Java Virtual Machine)에서 동작하는 애플리케이션을 만들 수 있다.

    • 자바 애플리케이션이나 안드로이드 애플리케이션을 만들 수 있다.

    Kotlin/JS : 자바스크립트로 웹 브라우저에서 동작하는 애플리케이션을 만들 수 있다.

    • JS(javas) 기반의 코틀린은 DB부터 서버, 클라이언트까지 다루는 풀스택(Full-Stack) 웹 개발이 가능하다.

    Kotlin/Native : LLVM 컴파일러를 이용하여 여러 플랫폼을 타깃으로 하는 애플리케이션을 만들 수 있다.

    • 코트를 한 번만 작성해도 안드로이드와 iOS에서 모두 구동하는 애플리케이션과 임베디드, IoT(Internet of Things)를 타깃으로 한 애플리케이션을 만들 수 있다.
      애플 iOS 환경(arm32, arm64, emulator x86_64), 애플 맥 OS 환경(x86_64), 안드로이드 환경(arm32, arm64), 윈도우 환경(MinGW X_86_64), 리눅스 환경(X_86_664, arm32, MIPS, MIPS little-endian), 웹 전용환경(wasm32)

코틀린 장점

  • 정적언어이다 - 자료형 오류를 미리 잡을 수 있다.
    • 코틀린은 프로그램이 컴파일될 때 자료형을 검사하여 확정하는 정적 언어이다.
    • 자료형 오류를 초기에 발견할 수 있어 프로그램의 안정성이 좋아진다.
  • 널 포인터 예외(NullPointerException)로 인한 프로그램의 중단을 예방할 수 있다.
    • 널 포인터 예외(NPE)는 프로그램이 실행되는 도중에 발생하기 때문에 언제 어디서 어떻게 발생할지 아무도 알 수 없다. 하지만 코틀린은 널 포인터 예외(NEP)를 예방할 수 있다.
  • 아주 간결하고 효율적이다.
    • 여러 가지 생략된 표현이 가능하다.
    • 다른 언어보다 훨씬 간결하고 효율적으로 코딩할 수 있다.
  • 함수형 프로그래밍과 객체 지향 프로그래밍이 모두 가능하다.
    • 함수형 프로그래밍 : 함수를 변수에 저장하거나 다른 함수의 매개변수로 넘길 수 있다.
    • 객체 지향 프로그래밍 : 클래스를 사용한다.
    • 다중 패러다임 언어이다.
  • 세미콜론 (;)을 생략할 수 있다.

안드로이드 공식 언어로 채택

  • 썬 마이크로시스템즈가 오라클에 인수되고 오라클이 자바 JDK의 개발과 관리를 전적으로 주도하게 되었다.
  • JAVA는 전 세계에서 가장 널리 사용되고 있으며 언어 자체는 무료이다.
  • 오라클이 특정 자바 JDK에 대해 유료화 정책을 시작했다.
  • 이미 자바 JDK를 사용해 API를 개발한 구글에게 오라클이 천문학적인 금액의 사용료를 요구했다. -> 긴 법정 소송 ..

Oracle JDK vs Open JDK

  • 자바 언어 자체는 무료다. 하지만 자바 언어로 프로그램을 작성하기 위해서는 SDK(Software Development Kit)인 자바 JDK가 필요하고, 자바 바이트코드를 실행하기 위해서 JVM이 필요하다.
    • 오라클은 Oracle JDK와 JVM의 특정 기능을 사용할 때 라이선스 비용을 지불하는 정책을 사용한다.
    • 자바 언어를 대체하기 위해 코틀린을 안드로이드 공식언어로 채택하게 되었다.
  • Oracle JDK : 보안 업데이트를 지속적으로 받으려면 구독방식으로 라이선스 구매가 필요하다.
  • Open JDK : 제한 없이 사용 가능하다. 하지만 보안 서비스의 의무가 없어서 유지보수가 어렵다.

코틀린으로 개발한 안드로이드 App

핀터레스트, 에버노트, 트렐로, 스퀘어, 코세라 ...

📌 01-2 실습환경 구축하기

자바 JDK 설치하기

코틀린은 JDK SE9까지 지원하지만 안정적인 동작을 위해 Zulu의 JDK SE 8 설치
자바 JDK 설치

[윈도우키]+[Pause] / 고급 시스템 설정 > 환경 변수 > 시스템 변수 > 새로 만들기

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


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

📌 01-3 코틀린 프로젝트 시작하기

  1. HelloKotlin 프로젝트 만들기
  2. 작고 귀여운 나의 Hello World!..

프로젝트 하나씩 뜯어보기

  1. 코틀린의 main() 함수는 프로그램의 실행 진입점
  • 자바 같은 객체 지향 언어에서는 프로그램을 실행하려면 최소한 하나의 클래스와 그 안에 main() 함수가 있어야 한다

    선언한 class가 없는데 어떻게 "Hello World!"를 출력할 수 있을까?

  • 역컴파일된 main.kt 소스

  • main( ) 메서드를 보면 main.kt 클래스 안에 속한 멤버 메서드로 선언되어 있는 것을 알 수 있음
    -> JVM에 실행되기 위해 문자열은 String var0으로 선언되어 System.out.println()에 의해 콘솔 장치에 출력 됨
    여기서부터 클래스에 포함된 함수는 메서드, 그렇지 않은 함수는 그대로 함수라 부름!!

  1. 변환된 main() 메서드의 의미
public static final void main() {
1) public : 가시성 지시자 - 이 메서드의 접근 방법을 가리키고 있다.
2) static : 이 메서드가 정적 메서드임을 말한다.
3) final : 최종 메서드임을 나타낸다.
4) void : 메서드가 반환할 것이 없는 경우 지정환다.
  1. 코틀린의 main() 메서드에서 매개변수를 사용할 경우
  • main() 메서드에서 매개변수 args: Array을 사용하면 자바에서는 String[] args로 변환된다.

  • 이 args는 main()에 전달할 외부의 인자들을 가리키고 명령행에서 입력받은 값들이 차례로 배열에 들어가게 된다.

    • 명령행에 아무런 인자가 들어가지 않아서 ArrayIndexOutOfBoundsException 예외가 발생했다.
    • Run > Edit Configurations 에서 Program arguments 에 명령행 인자를 나열하면 ..!

      명령행에서 입력받은 인자를 각각 args[0], args[1], args[2]에 문자열 형태로 저장한다.
profile
내가 왜 개발잔거지

0개의 댓글