본문 바로가기
Android

[Android] Java vs Kotlin

by 준토리73 2022. 12. 7.

Kotlin의 장점 

💡 생성자를 따로 선언하지 않아도 된다

 

💡 Data class 로 DTO 대신 사용할 수 있다 

 

💡 문자열 처리가 간단하다 

  • 문자열 템플릿 
  • 여러 줄의 문자열을 """를 이용해 하나의 문자열로 구성 가능 
  • trimIndent와 같이 문자열 사용을 편하게 하는 메소드 존재 

JAVA 

private final String GET_USER_NAME = ""
    + "SELECT DISTINCT user_name\\n"
    + "FROM tbl\\n"
    + "WHERE user_id = 63;

Kotlin

const val GET_USER_NAME = """
        SELECT DISTINCT user_name
        FROM tbl
        WHERE user_id = 63
    """.trimIndent()

💡 분기처리가 용이하다 

  • return 값이 있는 if expression 

JAVA

String userLevel;
    if(id == 0) {
      userLevel = "Administrator"
    } else if(id in 1 .. 10) {
      userLevel = "Normal"
    } else {
      userLevel = "Hacker"
    }

Kotlin

val userLevel = if(id == 0) {
  "Administrator"
} else if(id in 1 .. 10) {
  "Normal"
} else {
  "Hacker"
}
  • switch보다 간결한 when
fun main(){
	var num1 = 1
    var num2 = 10
    when(num1){
    	0 -> println("num1 is 0")
    	1 -> println("num1 is 1")
        2 -> println("num1 is 2")
        else -> {
        	println("num1 is not 0 or 1 or 2")
        }
    }
	
}

💡 null 처리가 편하다 

코틀린의 최대 장점인 매우 편하고 안전한 null 처리 

JAVA 

public class OptionRequest {
  @NotNull(message = "user_id is required!")
  private String user_id;
  @Nullable
  private String os;  
}

Optional.ofNullable(optionRequest.getOs())
    .map(data -> "   and os_type=\\"" + data + "\\"\\n").orElse("")

Kotlin 

class OptionRequest(
    val user_id: String,
    val os: String? = "ios"
)

optionRequest.os?.let { data -> "\\nAND os_type=\\"$data\\"" } ?: ""

 

참고1) https://juhi.tistory.com/72

참고2) https://lwndnjs93.tistory.com/2

참고3) https://devsnote.com/writings/2161

 

뎁스노트 | 왜 자바 서버 개발자들은 코틀린을 채택하지 않는가

오랜 자바 개발자로서 수년간 코틀린을 사용하고 그것을 서버에 적용해보면서 코틀린에 재미를 느낀 개발자가 쓴 글인데요 자바 서버 개발자들이 코틀린으로 서버 개발을 하지 않는 이유에 대

devsnote.com

 

댓글