6/29 (Sa) pm 1:00 - 6/29 (Sa) pm 6:00
건국대학교에서 KotlinConf2024
가 열렸다.
코틀린 스프링 개발자가 기억할만한 내용들만 간략하게 정리해보았다.
코틀린개발 생태계가 증가하고 있다. 올해 5월에 코틀린 2.0 출시될 예정 (future-ready, fast)
주요한 변경점으로써는 k2컴파일러 활용을 통한 성능개선(최대 2배의 성능 개선 가능)이 있다.
이외로는
+) Kotlin 2.0이후로는 Jetbrain
의 Compose Compiler
로 코틀린 버전 호환 가능 (Android)
Google
에서 Andorid Lint, Parcelize, KSP, Compose Compiler Plugin 등을 디벨롭 중이며등 다양한 기능을 출시 준비 중이다.
또한 아래의 Android Lib또한 KMP에서 지원 대기 중이며
KMP전용 IDE개발 중이다. -> Fleet
등등 KMP 및 Compose MultiPlatform 광고에 대한 내용이 주를 이루었다.
Gradle이란 빌드 자동화 도구를 의미한다.
Gradle도 코틀린으로 사용이 가능하다 -> build.kts
를 의미
이런 코틀린 + 버전 카탈로그를 활용하여 Gradle을 좀 더 쉽게 관리할 수 있다.
gradle.kts
의 장점퍼포먼스는 비슷하나 아직까진 느리다.
(인터프리터가 라이브러리를 불러오는데 있어 시간이 오래 걸림)
Gradle 의존성을 목록으로 관리한다.
Gradle 7.0
이후 사용설정 과정이 복잡하다.
versions
, liberaies
, plugins
, bundles
등에 관한 정보를 모두 추가한다.
이런 형식으로 gradle의 버전 정보를 입력할 수 있으며, 한 곳에서 모든 모듈의 버전에 대한 정보를 관리할 수 있음 (의존성 통합 관리)
But
모듈이 많은 프로젝트에서만 효과가 유효
Spring에서는 boot-starter가 적절한 dependency를 들고오고, 이를 통해 관리할 만큼 큰 프로젝트가 없는 것 같음(Android Porject에는 의미 있을 듯 - 특히
Compose
)MSA형식으로 모듈이 작게 분리되어 있으면 해당 항목을 적용할만 프로젝트가 존재 X
buildSrc가 더 느림 (플러그인도 같이 관리하고, 리컴파일도 해야한다.)
Michail Zarecenskij
발표자료의 번역 본을 리캡
서브 시스템 기능 및 성능 향상 및 컴파일러 도 변화하게 됨
Sealed Class 활용시 부하 절감
component
함수가 아닌 JS처럼 구조분해 할당을 제공할 예정(2.2)
Default Value가 많은 함수 및 클래스에 대하여 이를 통해 중복된 생성자를 줄일 수 있음
T이거나 NotFound이거나 (에러를 다룰 때 유니온 타입 제공)
발할라 프로젝트란? -> JVM을 좀 더 효율적으로 써보자.
Flat한 데이터 구조를 가지기.
Value Class
의 등장으로 프로젝트 발할라를 구현객체(Object)를 생성하지 않고, 원시타입을 포장한 클래스를 만듬(비싸서...) ->
PRIMITIVE CLASS
객체지향 구조에서 필요한
PRIMITIVE CLASS
를Value Class
를 통해 구현
Value Class는 Kotlin 1.5에서 추가된 내용으로 해당 내용 참고
Value Class 굳이? typealise 써도 되지 않을까?
성능적 관점에서의 비교
타입 안전성
런타임 성능
Value Class는 성능 최적화와 타입 안전성을 모두 제공하므로 성능이 중요한 상황에서 유용하다.
Typealias는 코드의 가독성을 높이는 데 유용하지만 타입 안정성을 제공하지 않는다.
두 기능 모두 성능에 부하가 거의 없다.
코틀린이란 언어를 활용해 다른 스크립트 언어처럼 빌드 없이 실행 가능 (쉘 스크립트)
그럼에도 쓰는 이유? : 재밌어 보이니까...
+) 설치 방법 및 활용 방법도 복잡하기에 패스
Refactoring to Expressive Kotlin 리캡
다양한 타입의 객체를 다룰 수 있도록 함수를 다양화 가능
무곤변성 : 기본 Generic -> 상위 Or 하위 타입 전환이 불가능
공변성(out) : 제네릭 타입 매개변수가 반환타입으로 사용될 때 사용하며, 하위 타입으로 반환될 수 있다.
https://kotlinlang.org/docs/generics.html
바이트 코드 시 함수 call을 방지
noinline
을 활용하면 함수 call 진행inline
임으로 적절하게 사용함수참조란?
이외 Jetpack Animateion, KMP에 대한 세션이 더 있고, 해당 내용은 발표자료를 참고