자바7, 개발자들에게 달라질 점은

일반입력 :2011/08/03 08:17    수정: 2011/08/03 09:25

최근 나온 자바 스탠다드 에디션(SE) 7 버전에 기술적 오류가 많다는 지적이 이는 가운데, 오라클은 개발자를 위한 신기능 소개에 집중하는 분위기다.

지난달말 아담 메싱어 오라클 퓨전 미들웨어 부사장은 자바 SE 7 버전을 소개하는 말로 이번 업그레이드 버전은 미래에 선택받은 자바 뒤에 숨은 에너지를 선택받은 언어와 플랫폼으로 강화하게 만드는 시도라며 자바 커뮤니티 프로세스(JCP) 집행위원회(EC)는 자바SE 7 버전과 8 버전과 구성요소에 대한 자바 규격 요청서(JSR)들을 IBM, 애플과 협력중인 오픈JDK 활동에 뒤따라 내놓게 된것이라고 강조했다.

이달초 일부 외신들은 5년만에 대규모 업그레이드를 시도한 자바 버전이 몰고온 변화가 아직 개발자들에게 환영받지못하고 있다고 지적하면서도 ▲자동 리소스 관리 ▲형 변환과 타입 지정 등 문법 변화 ▲작업을 나누고 합치는 기능과 클래스로더 등 코어 모듈 업데이트 ▲입출력 시스템 개선 ▲클라이언트 성능 지원 강화 등 현업 개발자들이 알아둘 만한 기능상의 변화를 다뤄 보도했다.

지난달말 오라클이 자바 7 버전을 소개할 당시 브라질 자바 사용자 그룹 '수자바'의 브루노 수자 대표는 자바7은 (개발자들에게) 최대 기대주로 통한다고 평했다. 그러나 국내 자바 챔피온으로 알려진 인피언컨설팅 R&D센터의 양수열 소장은 2일 개발 언어에 없다가 새로 투입한 기능이 광범위할 경우 기존 개발자들이 다라지는 문법에 적응하는데 따른 혼란이 유발될 수 있다고 지적했다.

■자동 리소스 관리 강화

자바 7 버전부터는 자동 리소스 관리(ARM)를 지원하는 '다이아몬드 오퍼레이터' 기능을 포함한다. 이는 자바 규격 요청서(JSR) 334번으로도 알려진 '프로젝트 코인'에 포함된 항목 중 하나다.

이 프로젝트는 일상적인 자바 프로그래밍 작업을 단순화시켜주는 역할을 한다. 개발자들이 신경쓰지 않아도 애플리케이션이 쓰는 컴퓨팅 자원이 쓸모를 다하면 알아서 되돌려 주는 기능이다. 원래 파일, 데이터베이스(DB), 접속 등 리소스 사용 현황을 개발자가 일일이 추적하긴 어렵고 복잡한 프로그램 안에서 메모리 누수 등 잡기 어려운 버그를 만들어내는 경향이 있어 문제가 돼왔다.

■덜 까다로운 형 변환 선언

프로젝트 코인이 제안한 또다른 목표는 자료형(case) 변환 선언에 문자열 객체를 넣어 쓰도록 한다는 것이었다. 자바개발키트(JDK) 7 버전부터 개발자들은 문자열 객체를 형변환 구문에 넣을 수 있다. 기존보다 더 민감해진 형변환 문법을 활용하면 예전처럼 문자열을 형변환하기 위한 특정 방법을 쓰지 않아도 된다는 설명이다.

덕분에 자바 컴파일러는 문자열을 처리하기 위해 필요한 형변환 명령어를 덧붙이지 않아도 되기 때문에 바이트코드를 더 효율적으로 생성할 수 있을 전망이다. 그러나 달라지는 문법을 충분히 활용하려면 적응 기간이 필요할 것으로 보인다.

■가상머신(VM) 환경의 동적 타입 지정 언어

JSR 292번으로 알려진 '인보크다이나믹'은 자바 가상 머신(JVM)에 확장 기능으로 붙어 '동적 타입 지정 언어'를 지원하는 내용이다.

동적 타입 지정 언어는 프로그래밍 언어 안에 별도로 데이터 타입을 지정하는 정의가 없다. 변수에 논리값, 문자열, 숫자, 함수 등 미리 정의된 형식이 없어 모든 변수가 모든 타입을 담아낼 수 있다는 뜻이다. 자바 7 버전 언어와 자바 스탠더드 에디션(SE) API는 자바 언어 스스로의 성능 수준에까지 동적 타입지정 언어로 구현될 수 있다.

■자바코어, 분기-병합 프레임워크와 클래스로더 업데이트

JSR 166y 번으로 알려진 '분기 병합 프레임워크'는 주어진 작업을 하위 작업으로 쪼갠 뒤 병렬 처리해 되모은 결과를 만드는 식으로 병렬 프로그래밍을 지원하는 자바 프레임워크다. 유연하며 재사용가능한 동기화 관문, 전송 큐, 동시 연결된 양방향 큐, 스레드형 로컬 가상(pseudo) 난수 생성기를 포함한다.

또 클래스로더 설계구조가 향상됐다. 클래스로더는 프로그램 실행시 클래스 파일을 찾고 적재하는 역할을 수행하는 기능이다. 클래스로더 API와 비위계적인 클래스로더 환경에서 교착상태를 피하는 구현방식이 바뀌었다는 평가다.

■입출력 시스템, 파일 API 개선과 SDP 지원

'두번째 새 입출력(NIO.2) 파일시스템 API'는 JSR 203번으로 알려진 것으로, 기존에 확장성이 없게 만들어졌던 자바 I/O 기반 파일API를 대신할 전망이다. 예를 들어 개발자가 파일에 대한 사용 권한 등 원하는 메타정보를 제공하며, 효율적으로 파일을 복사 및 생성하고 변경이나 삭제시 이에 따른 알림 등을 구현할 수 있다.

소켓 다이렉트 프로토콜(SDP)은 솔라리스와 리눅스 환경에서 인피니밴드 접속에 기반한 신뢰성있는 고성능 네트워크 스트림을 구현할 수 있도록 지원한다.

■클라이언트 성능 지원 강화

관련기사

자바 7 버전에서는 최신 그래픽 처리 장치(GPU) 기능들을 더 잘 접근할 수 있는 방식도 제공된다. '자바2D용 X렌더(XRender) 파이프라인'은 X11 X렌더 확장에 기반한 새 자바2D 그래픽 파이프라인 기술로 소개됐다. 이 프로젝트 목표는 X11 X렌더 확장에 기반한 자바 2D 그래픽 파이프라인을 새로 개발하는 것이다.

오픈소스 음향 소프트웨어도 포함돼 있다. '거빌 사운드 신디사이저'라는 오픈소스 기반 JDK 음성합성 엔진 프로젝트가 바로 그것.