Giter VIP home page Giter VIP logo

kotlinlab's Introduction

코틀린(Kotlin)

코틀린(Kotlin)이란?

Kotlin은 JetBrains사가 공개한 JVM에서 동작하는 프로그래밍 언어로서, 간결하고 실용적이며 자바코드와 상호운용성이 100%인 언어이다.

코틀린의 주 목적은 현재 자바가 사용되고 있는 모든 용도에 적합하면서 더 간결하고 생산적이며 안전한 대체 언어를 제공하는 것이다.


코틀린 특성

타입(type)

1. 정적 타입(statically typed) 지정 언어

정적 타입 지정 언어는 프로그래밍 구성 요소의 타입을 컴파일 시점에 알 수 있고 프로그램 안에서 객체의 필드나 메서드를 사용할 때마다 컴파일러가 타입을 검증해준다. 즉, 컴파일 시점에 해당 타입이 올바른지 아닌지 알 수 있다.

장점

  • 성능: 실행 시점에 어떤 메서드를 호출할지 알아내는 과정이 필요 없으므로 메서드 호출이 더 빠르다.
  • 신뢰성: 컴파일러가 프로그램의 정확성을 검증하기 때문에 런타임 시점에 타입 오류가 발생할 가능성이 적다.
  • 유지 보수성: 코드에서 다루는 객체가 어떤 타입에 속하는지 알 수 있기 때문에 처음보는 코드를 다룰때도 더 쉽다.

2. 타입 추론(type inference)

자바와 달리 코틀린에서는 모든 변수의 타입을 프로그래머가 직접 명시할 필요가 없다.

대부분의 경우 코틀린 컴파일러가 문맥으로부터 변수 타입을 자동으로 유추할 수 있기 때문에 프로그래머는 타입 선언을 생략해도 무방하다.

var x = 1 // Int
var y = 1.1 // Double

3. 널이 될 수 있는 타입(nullable type)

코틀린은 null이 될 수 있는 타입을 지원함에 따라 컴파일 시점에 null pointer exception의 발생 여부를 검사할 수 있어 프로그램의 신뢰성을 높일 수 있다.

image

?를 사용해서 nullable type을 선언할 수 있다. ?가 없으면 compile errorr가 발생한다.


상호운용성

  • Kotlin은 자바의 기존 라이브러리들을 그대로 사용할 수 있다. 라이브러리가 어떤 API를 제공하던 간에 코틀린에서는 메서드 호출, 클랙스 상속, 인터페이스 구현 등 모든 일이 가능하다.
    • 자바 코드에서 코틀린 코드를 호출할 때도 마찬가지로 아무런 노력이 필요 없다.
  • 자체 컬렉션 라이브러리를 제공하지 않고, 자바 표쥰 라이브러리에 의존한다.
  • 코틀린이 제공하는 도구도 다중 언어 프로젝트를 완전히 지원한다. 코틀린과 자바의 소스 파일이 임의로 섞여 있어도 제대로 프로그램을 컴파일 가능하다.

Kotlin 프로젝트 빌드 과정

image

Kotlin파일은 코틀린 컴파일러로 컴파일을 한 후 컴파일한 코드는 코틀린 런타임 라이브러리에 의존한다. 이 라이브러리에는 코틀린 자체 표준 라이브러리 클래스와 자바 API의 기능을 확장한 내용이 있다.

자바에서 사용한 빌드 도구로는 Maven, Gradle 등이 있는데 이러한 빌드 도구는 애플리케이션을 패키징 할 때, 알아서 코틀린 라이브러리를 포함시켜준다.


Java와 Kitlin 파일이 섞여 있을때

Java와 Kotlin 코드의 빌드 과정은 다음과 같은 순서로 이뤄진다.

  1. Kotlin 컴파일러가 Kotlin 코드를 컴파일해 .class 파일을 생성한다. 이 과정에서 Kotlin 코드가 참조하는 Java코드와 함께 로딩되어 사용된다.
  2. Java 컴파일러가 Java코드를 컴파일해 .class 파일을 생성한다. 이때 이미 Kotlin이 컴파일한 .class 파일의 경로를 클래스 패스해 추가해 컴파일한다.

kotlinlab's People

Contributors

bangkihyun avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.