Java 25 주요 변경 사항 완벽 정리 — LTS 신기능과 실무 적용 가이드
Java 25 LTS에서 정식 도입된 Stream Gatherers, Scoped Values, Structured Concurrency를 비롯한 핵심 변경 사항을 코드와 함께 정리한다.
배움의 즐거움, 나눔의 가치를 실천하는 DevLog
Java 25 LTS에서 정식 도입된 Stream Gatherers, Scoped Values, Structured Concurrency를 비롯한 핵심 변경 사항을 코드와 함께 정리한다.
이번 포스팅에서는 지정된 디렉토리의 파일 목록을 얻어올 수 있는 몇가지 방법에 대해서 정리해 보았다. Java directory file list를 얻어오기 위해서 사용하는 몇가지 API는 다음과 같다.
자바 개발자가 반드시 알아야 할 컬렉션 프레임워크(JCF)의 뿌리가 되는 List, Map, Set에 대한 메모리 구조, Big-O 성능 분석, Java 21 Sequenced Collection에 대해서 정리해보았다.
자바에서 InputStream을 다루다 보면 파일의 헤더만 살짝 읽어 파일의 형식을 확인한 뒤 다시 처음부터 전체 데이터를 읽어야 하는 상황이 생기는 경우가 있다. 이 때 직관적으로 reset() 메서드를 떠올리지만 막상 코드를 실행하면 IOException이 발생하는 경우가 있다. 이번 포스팅에서는 스트림에서 이전 위치로 돌아가는 방법과 함께 BufferedInputStream의 mark/reset/fill의 동작에 대해서 분석하고 RandomAccessFile의 사용법에 대해서 정리해보고자 한다.
자바 기반의 Spring Boot로 백엔드 개발을 하다 보면 어느 순간 애플리케이션이 느려지거나 식은땀 나게 만드는 OutOfMemoryError같은 에러를 한번씩은 봤을 것이다. 이 때 GC의 동작 원리를 정확히 알고 있다면 문제의 원인을 찾아 해결하는데 많은 도움이 된다. 이번 포스팅에서는 자바 애플리케이션을 개발하면서도 막연히 알고 있던 가비지 컬렉션(GC)에 대해서 정리해 보고자 한다.
2023년 9월 21일에 java 21이 배포가 되었다. java 21에서 새롭게 소개된 항목 중 하나가 기존의 스레드보다 더 경량화되어 설계된 virtual thread (가상 스레드)라고 할 수 있겠다. 이번 포스팅에서 새롭게 소개된 virtual thread(이하 가상 스레드)에 대해서 정리해 보고자 한다.
자바 애플리케이션의 성능을 결정짓는 핵심은 효율적인 메모리 설계와 이를 뒷받침하는 검증 과정에 있다. 이번 포스팅에서는 문자열 최적화부터 가상스레드까지 메모리를 아끼는 5가지 기법을 소개하고자 한다.
boolean 타입 필드의 이름을 is로 시작하도록 하는 경우 주의해야 한다. JSON 변환시 boolean 필드의 is가 사라질 수 있기 때문이다. boolean 필드의 ‘is’가 사라지는 이유와 해결법에 대해서 알아보자.
쿠버네티스 환경의 서비스에 애플리케이션 배포를 하기 전에 QA 검증 과정을 거칠 것이다. 검증 과정 중에 발생한 이슈의 원인을 확인 하기 위해서 때로는 추가적인 로그를 코드에 추가해서 다시 테스트 환경에 애플리케이션에 배포 후에 로그 내용을 확인하는 매우 번거로운 과정을 반복하는 경우가 있다. 추가한 로그를 통해서도 명확히 원인 파악이 안된다면? 또 다시 의심되는 부분을 찾아서 로그를 추가하고 또 배포해서 확인하고… 시간적으로 그리고 일의 능률 측면에서 매우 비효율적이 아닐 수 없다. 이번 포스팅에서는 테스트 환경에서 이러한 비효율을 단번해 해결할 수 있는 Remote Debugging 을 적용하여 Pod 내의 애플리케이션을 로컬에서 디버깅 할 수 있는 방법을 소개하고자 한다. (ft. IntelliJ)
Java 빌드 프로세스에 jdeb를 통합하여 Windows나 MacOS 환경에서도 표준 리눅스 배포 패키지인 .deb 파일을 쉽고 자동화된 방식으로 생성하는 방법을 소개한다.