본문 바로가기

코틀린5

[Kotlin] Java Scripting API (JSR-223) JSR-223 Kotlin은 Java scripting engine을 사용하기 위한 툴로 Java Scripting API를 지원한다. 원래 우리의 프로젝트에서는 Java scripting engine으로 Nashorn을 사용했었는데, 이게 jdk11부터 deprecated(관련 링크 - https://openjdk.java.net/jeps/335) 되면서 다른 대안이 필요해졌다. 그래서 서치하다 보니 Kotlin에서 제공하는 Java Scripting API(JSR-223)가 있었다. Kotlin 1.1 버전부터 지원한다. 우리는 이미 백엔드 서버 개발을 Kotlin으로 하고 있었기 때문에 큰 변경 없이 이를 사용할 수 있었다. 제공하는 기능은 Nashorn과 거의 유사하다. 사용자가 작성한 스크립트 .. 2019. 10. 19.
Kotlin에서 Util 함수 작성하기 - Top-Level Functions Java에서 Util 함수를 만들 때는 주로 Util class를 만들어서 사용하였다. 이런 Util 작성 패턴을 Kotlin에서 그대로 사용하면 아래와 같은 코드가 된다. // Don't object MapUtils{ fun Map2JsonString(map: mutableMap) : String{ return objectMapper.writeValueAsString(map) } } // Usage val map: MutableMap = mutableMapOf("K" to "V") MapUtils.Map2JsonString(map) // {"K":"V"} 하지만, Kotlin에서는 Top-Level Function을 대신 사용하는 것이 좋다. Java에서와 같이 추가로 Util class를 작성할 필요.. 2019. 10. 14.
[Kotlin] Generics - 공변성(covariant)과 반공변성(contravariant) What is generic? Generic이란 Class 또는 method에서 매개변수에 사용되는 자료형의 정의를 개체 생성시 정하게 하여 타입에 대한 안정성을 높이는 도구를 말한다. 일반적으로 로 표기된다. Generic 사용의 장점 – Type casting is evitable- typecasting을 하지 않고 객체를 사용할 수 있다. Type safety- Generic allows only single type of object at a time. Compile time safety- 런타임 에러를 방지하기 위해 Generics code는 컴파일 타임에 체크된다. 이런 Generic에서 사용할 수 있는 타입의 범위를 지정하는것이 Type Bound이다. Modern Language들은 대부분.. 2019. 10. 5.
Kotlin으로 Spring Boot JPA 프로젝트에 Querydsl 적용하기 코드 작성 과정과 방법은 모두 https://jojoldu.tistory.com/372에서 참조하였다. build.gradle.kts build.gradle.kts에서 Querydsl을 사용하기 위한 gradle 설정을 추가한다. apply(plugin = "kotlin-kapt") apply(plugin = "kotlin-jpa") sourceSets["main"].withConvention(KotlinSourceSet::class) { kotlin.srcDir("$buildDir/generated/source/kapt/main") } dependencies { kapt("org.springframework.boot:spring-boot-configuration-processor") compile("c.. 2019. 10. 1.