Spring(56)
-
JDK 17 ~ 21 Release, 제대로 이해하기
본 포스팅은 openJDK 17 부터 21 까지의 변경 사항을 확인하고, JDK 21을 사용할 때 개발자로서 알아두면 좋을 내용을 학습합니다. Previous Series: 📌 JDK 11 ~ 17 Release, 제대로 이해하기 👉🏻 JDK 17 ~ 21 Release, 제대로 이해하기 (current) 지난 9월 19일 (2023년), Open JDK LTS인 JDK 21 가 프로덕션에 적용 목적의 General Availability로 릴리즈되었습니다. General Availability: Final release, ready for production use JDK 21에서는 아래 15개의 새로운 기능들을 발표했는데요. 크게 네 개의 카테고리로 분류해보면 아래와 같습니다. Core Java Li..
2023.10.10 -
Kotlin 1.9.0 Release, 제대로 살펴보기
본 포스팅은 개발 시 직접적으로 사용하게 될 Kotlin 1.9.0의 업데이트 사항들을 살펴보는 것을 목표로 합니다. Kotlin 1.9.0 지난 2023년 8월 23일, Kotlin 1.9.0 가 릴리즈 되었습니다. 기존의 기능들이 Stable 지원되고, 성능 개선이나 사용성 향상이 되는 등의 다양한 업데이트가 진행되었습니다. 참고로, 1.7부터 Alpha로 지원되던 K2 Compiler가 1.9부터 Beta로 지원됩니다. 따라서 Kotlin 2 릴리즈 전 설정 후 사용해보실 수 있습니다. 본 포스팅에서는 Web(Wasm), Multiplatform Support 등은 제외하고, Kotlin의 Language / Library 측면의 내용만을 정리했습니다. 🔍 Highlights 본 포스팅에서 다룰 내..
2023.08.28 -
Kotlin, null 어렵지 않게 다루기
최근, 코프링을 사용하고 있어서 코틀린 시리즈를 마무리해보려 합니다. 이전 게시글을 다시 작성하는 것도 고려하고 있으니, 참고하시길 바랍니다. TL;DR - 코틀린은 널이 될 수 있는 타입을 지원해 NullPointerException 오류를 컴파일 시점에 감지할 수 있습니다. - 코틀린의 안전한 호출 ?., 엘비스 연산자 ?:, 널 아님 단언 !!, let 함수 등을 사용하면 널이 될 수 있는 타입을 간결한 코드로 다룰 수 있다. - as? 연산자를 사용하면 값을 다른 타입으로 변환하는 것과 변환이 불가능한 경우를 처리하는 것을 한꺼번에 편리하게 처리할 수 있다. - 널이 될 수 있는 원시 타입(Int? 등) 은 자바의 박싱한 원시 타입 (java.lang.Integer 등)에 대응한다. - Any 타..
2023.08.20 -
JDK 11 ~ 17 Release, 제대로 이해하기
본 포스팅은 openJDK 11 부터 17 까지의 변경 사항을 확인하고, JDK 17을 사용할 때 개발자로서 알아두면 좋을 내용을 학습합니다. Previous Series: 👉🏻 JDK 11 ~ 17 Release, 제대로 이해하기 (current) 📌 JDK 17 ~ 21 Release, 제대로 이해하기 Release Timeline JDK 11는 JDK 17 바로 이전의 LTS release 입니다. 본 포스팅에서는 JDK 11 릴리즈 이후에 변화된 JDK Release를 시간 순서대로 다뤄볼 예정입니다. JDK 12 JDK 12에서는 Compact Number Formatting을 지원하고, 확장된 Switch 표기법 처음 소개 (Preview) 했습니다. 새로운 모습의 Switch 문은 자세한 내..
2023.06.08 -
JVM Architecture, 제대로 이해하기
본 포스팅은 JDK, JRE, JVM에 대한 큰 그림을 그리고 각 구성요소가 어떤 기능을 하는지 깊이 있게 공부합니다. 바야흐로 금요일 저녁 javap 관련 글을 보다가 ... 아니 그래서 ClassFile은 뭘 확인할 수 있는데, 아니 그래서 JDK 9에서 뭐가 바꼈는데, 아니 그래서 JVM Architecture이 어떻게 구성되었는데 ... 이렇게 "아니 그래서 ..." 삼진 아웃 맞고 주말 내내 이어진 디깅이 포스팅이 되었습니다 🤦🏻♀️ 사실 한 번쯤 파보고 싶던 내용이라 확실히 재밌게 공부했습니다. 본 글이 많은 분들에게 도움이 되길 바랍니다. 해당 포스팅의 이미지의 저작권은 본 블로그 관리자에게 있습니다. 2차 사용 시 출처 표시 부탁드립니다. 무단 배포는 삼가해 주세요. 본 포스팅은 JVM ..
2023.05.14 -
Garbage Collector, 제대로 이해하기
소프트웨어 개발자라면 본인의 제품이 메모리를 관리하는 방식에 대한 이해가 필요합니다. 특히 Heap 영역에서 일어나는 동적 메모리 관리는 소프트웨어의 성능을 결정짓는 중요한 요소 중 하나입니다. 컴파일 언어에서 Stack 영역은 컴파일 시간에 그 크기를 가늠할 수 있는 정적 할당과는 달리, 동적 할당은 Runtime 시 Heap영역에서 할당되어 지기 때문에 그 크기가 Application 실행 동안 결정되어 집니다. Garbage Collection C나 C++에서는 개발자들이 동적 할당을 위한 코딩 작업을 하고 난 후, 더 이상 사용되지 않을 때 수동으로 해제해야 합니다. 수동으로 메모리를 해제하는 작업에 대한 휴먼 오류가 발생하기 쉬운데요. 다음과 같은 오류가 발생할 수 있습니다. - 메모리 누수를 ..
2023.01.11