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)
핀터레스트, 에버노트, 트렐로, 스퀘어, 코세라 ...
코틀린은 JDK SE9까지 지원하지만 안정적인 동작을 위해 Zulu의 JDK SE 8 설치
자바 JDK 설치
[윈도우키]+[Pause] / 고급 시스템 설정 > 환경 변수 > 시스템 변수 > 새로 만들기
변수 이름 : JAVA_HOME
변수 값 : C:\Program Files\Zulu\zulu-8
cmd창에서 설치가 완료된 것을 확인할 수 있다!
자바 같은 객체 지향 언어에서는 프로그램을 실행하려면 최소한 하나의 클래스와 그 안에 main() 함수가 있어야 한다
선언한 class가 없는데 어떻게 "Hello World!"를 출력할 수 있을까?
역컴파일된 main.kt 소스
main( ) 메서드를 보면 main.kt 클래스 안에 속한 멤버 메서드로 선언되어 있는 것을 알 수 있음
-> JVM에 실행되기 위해 문자열은 String var0으로 선언되어 System.out.println()에 의해 콘솔 장치에 출력 됨
여기서부터 클래스에 포함된 함수는 메서드, 그렇지 않은 함수는 그대로 함수라 부름!!
public static final void main() {
1) public : 가시성 지시자 - 이 메서드의 접근 방법을 가리키고 있다.
2) static : 이 메서드가 정적 메서드임을 말한다.
3) final : 최종 메서드임을 나타낸다.
4) void : 메서드가 반환할 것이 없는 경우 지정환다.
main() 메서드에서 매개변수 args: Array을 사용하면 자바에서는 String[] args로 변환된다.
이 args는 main()에 전달할 외부의 인자들을 가리키고 명령행에서 입력받은 값들이 차례로 배열에 들어가게 된다.