2025/01/17 2

이펙티브 자바 - 직렬화

"이펙티브 자바"의 마지막 챕터는 직렬화이다.  요즘은 대부분 JSON이나 Protobuf 같은 언어에 독립적인 데이터 교환 형식을 사용하는데, 왜 책에서는 여전히 직렬화를 중요한 주제로 다룰까? 자바에서 기본적으로 제공하는 직렬화(Serialization)와 역직렬화(Deserialization)는 JVM 위에서 동작하며, 데이터를 파일이나 네트워크로 전달할 수 있는 형식으로 변환하는 강력한 기능입니다. 하지만 이 메커니즘은 클래스 설계이 유연성 저하, 보안 취약점, 이식성 부족등의 큰 한계가 존재한다. 그렇다면 책에서는 왜 직렬화 파트를 크게 다룰까?여기서는 크게 직렬화를 하게 되면 유의할 점 등 직렬화시 매커니즘과 유의 사항을 알아보자는 취지로 책을 읽어보자! 직렬화의 목적현재 JVM 메모리 상태를..

지연 연산 vs 즉시 연산: Kotlin과 Java Stream을 통한 최적화 전략 이해하기

지연 연산 (Lazy Evaluation) vs 즉시 연산 (Eager Evaluation) 스트림을 배우다 보면 지연연산이라는 특징을 접하게 된다. 지연연산을 종단연산을 실행하기 전까지 연산을 미루기 때문에 해당 연산을 즉시 실행되지 않는다. 그렇다면 지연 연산이란 무엇일까? Lazy  vs Eager 지연 연산이란 간단히 말해 결괏값이 필요할 때까지 계산을 늦추는 기법이다. 즉, 눈앞에 코드가 주어졌을 때 곧바로 해당 코드를 실행하는 것이 아니라 실행결과가  필요해지는 시점에 실행을 하도록 하는 것이다. 다만, 이러한 방식으로 코드가 동작하기 위해 내부적으로 준비해 주는 작업이 필요하므로  무조건 효율적인 방식이라고 보기 어렵다. 이에 반해 어떠한 작업이 즉시 수행되다면 말 그대로 실행할 코드가 보이..

JAVA 2025.01.17