Tag: code-review

VO vs DTO: 정의와 용어 혼용의 역사

getter/setter만 있는 데이터 운반용 객체를 VO(Value Object)라고 부르는 관행은 혼란을 부릅니다. VO는 값의 의미와 동등성에 관한 분류이고, DTO는 데이터를 전송하는 역할에 관한 분류입니다. Java/J2EE 진영에서 용어 혼용을 확산시킨 Core J2EE Patterns의 사례와 두 패턴의 정의를 정리합니다.

Continue Reading

Java 문자열 더하기 연산의 최적화

String을 +로 더하는 코드가 javac과 JDK 런타임에서 버전에 따라 어떻게 최적화되는지 정리합니다. JDK 1.4의 StringBuffer 치환, JDK 5의 StringBuilder 치환, JDK 9의 invokedynamic 도입, JDK 15의 대안 전략 제거, JDK 24의 hidden class 기반 구현까지의 변화를 JDK 25에서 확인한 바이트코드와 함께 설명합니다.

Continue Reading

IEEE 754 부동소수점 오차와 BigDecimal

IEEE 754 표현이 0.1 같은 십진 소수를 정확히 담지 못하는 이유와, 자바에서 그 오차를 피하는 BigDecimal과 정수형 최소 단위 두 대안, 그 위에 얹는 Java Money 같은 도메인 특화 라이브러리를 정리합니다.

Continue Reading

카멜 케이스를 쓸 때 약어 표기

Continue Reading

Java auto boxing의 컴파일 방식과 Integer 캐시

int와 Integer를 섞어 쓸 때 생기는 auto boxing·unboxing이 Integer.valueOf()와 intValue() 호출로 컴파일되는 과정을 JDK 25의 바이트코드로 확인합니다. IntegerCache의 -128~127 범위와 JLS 5.1.7의 요구사항, -XX:AutoBoxCacheMax 옵션, 박싱된 타입을 반복문에 쓸 때의 비용, 그리고 캐시 구현과 wrapper 생성자 deprecation이 JDK 5부터 25까지 어떻게 바뀌었는지 정리합니다.

Continue Reading