본문 바로가기

전체 글118

[kotlin] Serialization / 직렬화 역직렬화 성능비교 http://kotlinlang.org/docs/serialization.html Serialization | Kotlin kotlinlang.org먼저 코틀린 공식 홈페이지에서 제공하는 직렬화 역직렬화의 개념에 대해서 알아보았습니다. 직렬화(Serialization) 는 애플리케이션 내부의 객체(런타임 메모리 상태)를 전송/보관 가능한 형태(예: JSON, 바이트 스트림)로 바꾸는 과정입니다.반대로 역직렬화(Deserialization) 는 외부에서 받은 데이터(파일/네트워크/DB)를 다시 런타임 객체로 복원하는 과정입니다. 네트워크 통신과 로컬 저장을 다루는 대부분의 앱에서 필수 개념입니다.Gson vs Moshi vs Kotlinx.serialization안드로이드/코틀린에서 많이 쓰는 JSON 컨.. 2025. 9. 17.
핵심만 골라 배우는 젯팩 컴포즈 (chapter 20 ~23) CompositionLocal- 컴포즈는 상태 주도적이며, 상태는 일반적으로 컴포저블 트리에서 가능한 한 가장 높은 노드에 선언되어야 하고(상태 호이스팅), 필요한 경우 계층의 하위 컴포저블에 전달해야 한다 -> 대부분의 상황에선 이는 잘 동작하지만, 계층의 여러 단계를 통해 상태를 전달해야 할 때는 다소 번거로울 수 있다. 이런 문제를 해결하기 위해 컴포즈에서는 CompositionLocal를 사용한다.CompositonLocal은 컴포저블 계층 트리 상위에서 선언된 상태를 계층 트리 하위의 함수에서 이용하는 방법 제공.해당 상태가 선언된 함수와 상태를 이용하는 함수 사이에 있는 모든 컴포저블에 상태를 전달하지는 않음.트리의 깊이가 깊을수록 여러 단계의 컴포저블에 상태를 전달해야 하는데, Composi.. 2025. 8. 26.
핵심만 골라 배우는 젯팩 컴포즈 (chapter 18 ~20) 컴포즈 개요컴포즈는 앱 개발에 관한 완전히 새로운 접근 방식.컴포즈는 선언적인 동시에 데이터 주도적.컴포즈의 선언적 구문프로그래머가 선언만 하면 레이아웃 배치, 제한, 렌더링 방법에 관한 모든 복잡한 세부 사항은 컴포즈가 자동으로 처리.컴포즈의 선언은 계층적으로 구조화되어 있기 때문에, 재사용 가능한 서브 뷰를 조합함으로써 복잡한 뷰를 쉽게 만들 수 있음.명령형 프로그래밍 패러다임 (기존 안드로이드 XML + Java/Kotlin)기존의 명령형 패러다임은 트리형태로 뷰를 구성. 레이아웃 위에 텍스트 뷰, 버튼 등을 쌓아 뷰를 그림.UI를 업데이트 하기 위해 일반적으로 findViewById() 같은 함수로 트리를 탐색해 내부 상태를 변경함.xml을 inflating 하여 객체를 만들어 사용, 위젯들은 내.. 2025. 8. 26.
[kotlin] inline functions 코틀린을 쓰다 보면 inline, noinline 같은 키워드를 접하게 된다. 이 키워드는 고차함수(람다를 인자로 받는 함수)를 자주 다룰 때 성능 최적화와 코드 표현력을 높이는 데 중요한 역할을 한다. inline과 noinline에 대해 정리한다.inline 함수란 ?? inline 키워드를 붙이면 컴파일 시 함수 본문과 람다 파라미터 코드가 호출 지점에 그대로 삽입된다.이렇게 되면 불필요한 람다 객체 생성과 함수 호출 오버헤드가 사라진다. Kotlin 공식 문서에서도 “람다 전달 시 객체 생성과 가상 호출을 줄여 성능을 높인다”고 설명하고 있다.inline fun foo(block: () -> Unit) { println("foo 시작") block() // 호출 지점에 block의.. 2025. 8. 26.