Offcanvas
Some text as placeholder. In real life you can have the elements you have chosen. Like, text, images, lists, etc.
Offcanvas
1111Some text as placeholder. In real life you can have the elements you have chosen. Like, text, images, lists, etc.

java

자바19에 추가될 핵심 기능 7가지

올 9월 출시될 자바 개발 키트(JDK) 19 버전의 7번째 기능으로 구조적 동시성이 추가됐다. 멀티쓰레드 프로그래밍을 간편하게 지원하기 위한 요소다. 구조적 동시성 외에 미리 공개된 6가지 핵심 기능에는 레코드 패턴, 외부 함수와 메모리API(프리뷰), 오픈소스 기반의 리눅스/RISC-V 명령어 집합 구조(ISA) 지원 등이 있다.  자바 공식 개발 계획에 따르면 JDK19(‘자바19’라고도 표현)에는 확장된 제네릭스나 밸류 오브젝트(VO) 등 향후 더 많은 기능이 제공될 것으로 보인다.    오픈JDK 커뮤니티가 발표한 JDK19 공식 일정을 살펴보면 6월 9일부터 21일까지는 자바 기술에 대한 조정 기간을 갖는다. 최종 기술 후보는 8월 11일과 25일 사이 공개되며, 9월 20일에는 최종 버전이 배포된다.  JDK19를 미리 이용하고 싶은 경우 jdk.java.net/19에서 다운로드 가능하다.  JDK19에 추가된 기능은 다음과 같다.  구조적 동시성(인큐베이터) : 아직 인큐베이터 단계로 구조를 갖춘 동시성 라이브러리를 이용해 멀티쓰레드 프로그래밍을 제공한다. 동시성이라는 기능 덕에 여러 태스크를 서로 다른 쓰레드 안에 운영하고 동시에 단일한 유닛 형태로 관리할 수 있다. 따라서 사용자는 에러 관리나 취소 관련 작업을 효율적으로 운영할 수 있다. 안정성이 높아지고 문제의 탐지나 조사도 더 쉬워진다.  레코드 패턴(프리뷰) : 레코드 값을 분석하기 위해 개발됐다. 레코드 패턴이나 타입 패턴은 중첩 사용돼 선언적이면서 강력하고 조합 가능한 데이터 형태를 만들 수 있다. 데이터 탐색이나 처리 과정에도 쓰인다. 레코드 패턴의 핵심 목표는 타입 패턴의 신텍스나 시멘틱 요소를 바꾸지 않으면서도 패턴 매칭을 확장하고 정교하게 분리해서 사용할 수 있는 데이터 쿼리를 표현하는 것이다.  이 기능은 2021년 3월 자바16에서 지원됐던 instanceof 패턴 매칭...

자바 자바19 java 2022.06.03

'finalize 메소드 퇴역 이후' 자바 오류를 처리하고 클린업하는 방법

몇 년 간의 무성한 소문 끝에 마침내 자바가 JDK 18에서 finalize 메서드를 퇴역시킬 준비를 하고 있다. JDK 향상 제안(Enhancement Proposal) 421은 finalize를 사용 중단되는 요소로 명시하고, 테스트를 위해 이 메서드를 비활성화하는 것을 허용한다. 기본적으로는 계속 활성화된 상태로 유지되다가 이후 릴리스에서 완전히 제거된다. finalize의 끝이 무엇을 의미하는지, 이제부터는 오류와 리소스 클린업을 어떻게 처리해야 하는지 알아보자.     finalize란 무엇인가 finalize가 왜 사라지는지, 그 대신 무엇을 사용해야 하는지를 이해하기 전에 finalize가 무엇인지부터 살펴보자. finalize의 기본적인 개념은 객체가 가비지 수집 대상이 될 때 실행되는 메소드를 객체에 정의할 수 있도록 하는 것이다. 기술적으로 객체는 팬텀 도달 가능(phantom reachable) 상태가 될 때, 즉 JVM에 강하거나 약한 참조가 남아 있지 않을 때 가비지 수집 대상이 된다. 이 시점에서 JVM이 object.finalize() 메서드를 실행하고 애플리케이션별 코드가 I/O 스트림이나 데이터스토어에 대한 핸들과 같은 리소스를 클린업한다는 개념이다.  자바의 루트 Object 클래스에는 equals(), hashCode() 등 다른 메소드와 함께 finalize() 메소드가 있다. 이 메소드의 용도는 모든 자바 프로그램이 만든 모든 단일 객체가 리소스 누출을 방지하기 위한 이 단순한 메커니즘에 참여할 수 있도록 하는 것이다. 예외가 발생하고 다른 클린업 코드가 누락된 경우에도 해당된다. 즉, 객체는 여전히 가비지 수집 대상으로 표시되고 최종적으로는 해당 객체의 finalize 메소드가 호출된다. 문제가 해결된 것이다. 그렇지 않은가? 리소스를 소비하는 객체에서 finalize() 메소드를 오버라이드하기만 하면 된다.    finalize 메소드의 문제 거기까지는 개념이다...

finalize 자바 java 2022.02.08

회사명 : 한국IDG | 제호: ITWorld | 주소 : 서울시 중구 세종대로 23, 4층 우)04512
| 등록번호 : 서울 아00743 등록일자 : 2009년 01월 19일

발행인 : 박형미 | 편집인 : 박재곤 | 청소년보호책임자 : 한정규
| 사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2023 International Data Group. All rights reserved.