자바 6
- G1 가비지 콜렉션
- 가상 머신의 성능에 가장 크게 영향을 주는 것 중 하나가 가비지 컬렉션이나. G1 가비지 컬렉터는 정확히는 버전 6의 중간 버전부터 추가된 기능으로 기존에는 힙 메모리 영역을 영과 올드 영역으로 분할해서 관리했지만 버전 6부터는 해당 영역 구분을 없애고 1MB 크기의 영역(region)으로 구분하여 메모리를 관리한다. Full GC 발생을 최소화 하기 위함이다. 자바 7부터 기본 가비지 컬렉터로 사용한다.
-
데스크톱 API
- 데스크톱 API는 자바를 이용해서 UI를 개발할 때 운영체제의 기본 설정값을 기반으로 애플리케이션을 실행하고 출력 등을 편리하게 개발할 수 있도록 해준다. 이 기능을 이용해서 html 파일을 열면 OS에 기본값으로 설정한 브라우저가 실행된다. 예를 들어 리눅스에서는 파이어폭스, 윈도우에서는 엣지가 실행된다.
-
자바 컴파일러 API
- 자바 코드에서 직접 자바 컴파일러를 호출할 수 있는 API를 제공한다. 이를 통해 자바 애플리케이션에서 자바 소스 코드를 컴파일하고 실행할 수 있다.
자바 7
-
File NIO 2.0
- 자바 7에서 가장 관심 있게 살펴볼 만한 기능을, 파일 처리를 위한 새로운 기능을 제공한다. 기존에는 다양한 운영체제에서 파일을 처리할 때 예상치 못한 에러가 발생하거나 기능이 부족한 점 등이 문제로 거론되었다. File NIO는 기능이 풍부하고 처리 속도도 개선되었다. 다만 기존에 사용하던 java.io.File 클래스와 개념이 완전히 달라서 새로 공부해야하는 부담감이 있다.
-
fork/join 프레임워크
- 자바 5에서 처음 등장한 Concurrent API에 포크/조인 기능이 추가되었다. 이 기능을 이용하면 기존에 멀티 스레드를 생성하는 것에 더해서 라이프 사이클을 관리하고 모니터링할 수 있따.
-
다이아몬드 연산자
- 제네릭의 선언 방법이 개선되었다. 변수 선언 시 제네릭의 타입을 이미 선언하였다면 객체 생성 시에는 제네릭 타입을 다시 기입할 필요 없이 다이아몬드 연산자만 기술하면 된다.
-
try-with-resource
- 자바로 개발한 애플리케이션에서 메모리 누수가 발생하는 중요한 원인 중 하나가 자원을 사용한 이후 종료시키지 않는 것이다. 이러한 작업은 굉장히 단순하고 반복적으로 이루어지지만 세심하게 작업하지 않으면 치명적인 오류가 생길 수 있다. 자바 7에서는 자원의 종료를 언어 차원에서 보장하고 있으며, 이 기능을 이용할 경우 안정적인 자원 관리 뿐 아니라 소스 코드 작성량도 현저히 줄어든다.
-
예외처리
- 예외 처리를 위해 try catch 문장을 작성할 때는 경우에 따라서 많은 catch 문장을 작성해야 한다. 심지어 catch 절 안에 처리하는 로직이 같더라도 반복적인 작업이 발생한다. 자바7 에서는 하나의 catch절에 여러 개의 Exception을 처리할 수 있도록 개선했다.