Please Enable JavaScript!
Mohon Aktifkan Javascript![ Enable JavaScript ]

KOTLIN 이란?

2020. 12. 10. 10:39programming/kotlin

728x90

코틀린은 IDE회사로 유명한 jetBrains에서 2011년에 공개한 프로그래밍 언어입니다. Kotlin은 JetBrains의 개발자들이 있는 핀란드 발트해의 작은 섬의 이름을 땃다고 합니다.

JVM 기반 언어이며 자바와 100% 호환되어 자바로 작성된 코드를 코틀린 코드로 대체할 수도 있습니다. JVM 바이트코드가 기본이지만, Kotlin/Native 컴파일러를 사용하여 기계어 최종컴파일이 가능합니다.

2017년에는 구글에서 안드로이드 공식언어로 채택하였습니다.

코틀린 공식 사이트 : https://kotlinlang.org/

안드로이드 코틀린 개발자 공식 사이트 : https://developer.android.com/kotlin/?hl=k

안드로이드 스튜디오 다운로드 : https://developer.android.com/studio/?hl=ko

코틀린 프로그래밍 웹 IDE 버전 : https://try.kotlinlang.org

 

특징

간결한 문법

  • 문장끝에 세미콜론을 넣지 않아도 됩니다.
  • new 키워드를 쓰지 않고 객체를 생성합니다.
  • 타입추론이 가능하기 때문에 아래와 같이 사용이 가능합니다.\
var a = 1
var b:Int = 2

널 안정성

  • 객체 타입의 변수에서 널 값의 허용 여부를 컴파일 단계에서 검사합니다. 런타임시에 발생하는 오류를 줄일 수 있는 큰 장점이 있습니다.

Data classes

  • 코틀린을 사용하면 get/set을 별도로 생성해줄 필요가 없습니다. var과 val의 사용에 따라 get/set 사용법이 다릅니다. var의 경우 Read/Write가 모두 가능하고, val 을 사용하면 Read-only만 가능합니다.
  • (값 val=value, 변수 var=variable)

Kotlin이 아닌 기존 안드로이드 자바에선 VO 클래스에선 get/set ..등등 별도로 생성해야 하는 lombok 라이브러리를 사용해야 했는데 Kotlin에선 lombok을 사용할 필요가 없어집니다.

 

Java – User VO

class User() {
 
 String name = "";
 String id = "";
 
 public void setName(String name) {
   this.name = name;
 }
 
 public String getName() {
   return this.name;
 }
 
 public void setId(String id) {
   this.id = id;
 }
 
 public String getId() {
   return this.id;
 }
 
}

Kotlin – User Vo

Class User() {
  var name: String = ""
  var id: String = ""
}

코드가 간결해지며 유지보수도 용이해집니다.

4. 람다표현식 지원

  • 함수를 선언하지 않고 곧바로 식으로 전달해서 표현할 수 있습니다.
  • 파라미터는 -> 왼쪽에 선언. 파라미터가 있다면 식으로 전달
  • -> 의 오른쪽에서는 function 작동
  • 식은 중괄호 { }로 시작하고 끝납니다
fun printText(text: String) {
 println("print : $text")
}
printText("HI")

위와 같은 식을 아래처럼 표현이 가능합니다

val printText = {text: String -> printLn(print : $text")}
printText("HI")

스트림 API 지원

  • Stream은 자바8부터 추가된 기능으로 컬렉션, 배열 등의 저장 요소를 하나씩 참조하며 함수형 인터페이스(람다식)를 적용하며 반복적으로 처리할 수 있도록 해주는 기능입니다.
  • Stream은 주로 Collection, Arrays에서 사용합니다.

<기존방식>

List<String> users = Arrays.asList("player1", "player2", "player3", player4");
 
int rank = 0;
for (String user : users) {
    if (user.contains("2")) {
        count++;
    }
}
System.out.println("rank : " + rank);

<Stream 방식>

List<String> users = Arrays.asList("player1", "player2", "player3", player4");
 
rank = 0;
rank = users.stream().filter(x -> x.contains("2")).count();
System.out.println("rank : " + rank);

배열안 해당 값을 가진 갯수를 출력하려 할때 기존 방식으로는 반복문과 분기문을 사용해서 했지만 스트림을 이용하면 보다 간결하게 사용 가능합니다.

6. 완벽한 자바 호환성

  • Kotlin은 개발 코드가 Java 클래스로 빌드되어 JVM에서 동작하기 때문에 호환이 가능합니다.
  • 안드로이드 스튜디오에서 Kotlin 파일에 Java 소스를 붙여넣기 하면 자동으로 Kotlin 언어로 변경됩니다. 처음에 이런식으로 Java 문법이 어떻게 Kotlin으로 바뀌는지 보다 쉽게 접근할 수 있습니다.

7. 함수형 프로그래밍

  • 절차지향 프로그래밍 : 로직 위주로 동작하는 프로그래밍 방식 ex) C
  • 객체지향 프로그래밍 : 클래스가 프로그램의 최우선이 되는 프로그래밍 방식 ex) Java, C++
  • 함수형 프로그래밍 : 함수가 일급 객체로써의 의미를 가짐 ex) Kotlin, javascript

일급객체?? 최상위 레벨이라고 생각하면 됩니다. 자바에서 클래스가 변수, 함수를 클래스 안에 둘 수 있는데 그 클래스 마져 안에 가질 수 있다는 겁니다.

 

fun Developer() {
  var name = "cooingpop"
  fun coding() {
    println("coding by $name")
  }
 
  class Project {
    fun develop() {
      coding()
      println("coding project")
    }
  }
  Project().develop()
}

함수를 변수처럼 사용할 수도 있고, 참조할 수도 있습니다.

val test = fun Play() {
   ...
}
728x90