
자바 프로그램의 성능, 시작 시간, 공간(footprint) 개선을 위한 프로젝트 레이든(Project Leyden)이 콘덴서(condenser)를 제공한다고 발표하였다. 콘덴서는 컴파일 타임과 런타임 사이에 실행되는 코드로, 기존 프로그램을 빠른 속도를 구현하면서도 작은 신규 프로그램으로 전환한다.
해외 IT 매체 인포월드는 오라클의 자바 플랫폼 그룹 수석 아키텍트 마크 레인홀드(Mark Reinhold)를 인용, 프로그램의 시작 시간과 공간은 일부 연산을 일시적으로 런타임 전후로 이전하여 개선할 수 있다고 전했다.
또, 클래스 로딩과 재정의 등 자바의 동적 기능과 관련된 일부 연산 작업을 제한하며, 성능을 추가로 강화할 수 있다. 결과적으로 더 나은 코드 분석과 최적화 작업이 가능하다.
프로젝트 레이든은 콘덴서를 통하여 연산 작업 이전, 제한 및 최적화 전환을 구축한다. 또한, 신규 언어 기능을 조사해, 개발자가 연산 작업을 직접 이전하여 추가 압축이 가능하도록 지원할 계획이다. 그러나 자바 플랫폼 표준의 진화가 필요하다. JAR 파일과 같은 코드 아티팩트를 위한 JDK 툴과 형식도 콘덴서 지원을 위해 확장돼야 한다.
콘덴서 모델은 개발자에게 융통성을 제공한다. 개발자는 적용할 콘덴서를 선택하여 자바의 원동력 제한 요소 수용 여부를 선택할 수 있다. 콘덴서 모델은 자바 버전에 자유를 부여하기도 한다. 콘덴서가 프로그램의 본질을 유지하면서 개발자가 허락한 제한 요소만 적용한다면, 해당 버전은 더욱 자유롭게 결과를 최적화할 수 있다.
레인홀드는 개시 시간과 공간을 개선하기 위한 최선책으로 제거해도 되는 연산을 찾는 것을 언급했다. 제거 가능한 연산을 찾을 수 없다면, 시간상 앞이나 뒤로 이동할 수 있는 연산을 찾으면 된다.
사실, 연산 처리 시간 이동 개념 자체는 새로운 혁신이 아니다. 이미 자바에는 연산을 이동시킬 수 있는 여러 기능이 존재한다. 가령, 컴파일 타임 상수 폴딩은 런타임에서 컴파일 타임으로 연산을 이동하며, 가비지 컬렉션은 메모리 호출을 시간상 앞으로 당긴다. 이외에도 사전 계산이나 클래스 데이터 셰어링 등의 선택적인 연산 이동 메커니즘이 존재한다.
한편, 프로젝트 레이든은 올해 초 본격적으로 진행되기 전 2년 전부터 거론되었다. 프로젝트는 자바 개발 부서 내부 핫스팟 가상머신과 코어 라이브러리 그룹이 주관한다.
[ⓒ CWN(CHANGE WITH NEWS). 무단전재-재배포 금지]