자바 개발진이 머신러닝 모델, GPU, SQL, 미분가능 프로그래밍(Differentiable programming) 등 외부 프로그래밍 모델 지원을 위한 기술 연구에 착수했다. 프로젝트명은 ‘바빌론(Babylon)’이다.
자바 개발진은 ‘프로젝트 바빌론’를 통해 머신러닝 모델, GPU, SQL, 미분가능 프로그래밍(differential programming) 같은 외부 프로그래밍 모델을 자바에서 확장할 수 있을지 검토할 예정이다.
오라클의 아키텍트인 폴 샌도즈는 9월 6일 오픈JDK 커뮤니티 메일링 리스트에 “바빌론은 ‘코드 리플렉션(code eflection)’으로 불리는 리플렉티브 프로그래밍(reflective programming, 프로그래밍 프로세스에서 구조와 동작을 검사하고 성찰하며 수정하는 방법론, 자바에선 주로 특정 클래스가 필드가 제대로 호출됐는지 확인하며 필요한 경우 동작을 변경할 때 관련 기능을 이용한다)을 개선하여 자바의 범위를 외부 프로그래밍 모델까지 확장하려는 것”이라고 소개했다.
폴 샌도즈는 바빌론이 진전되면서 자바 코드에 대한 표준 액세스, 분석 및 변환이 가능해질 것이라고 기대했다. 또한 자바 라이브러리 내에서 외부 프로그래밍 모델에 대한 지원도 더 쉽게 구현될 수 있을 것이라 예상했다.
바빌론 프로젝트로 개발자는 코드 리플렉션을 활용하고 자바 라이브러리로 구현되는 자바용 GPU 프로그래밍 모델을 만들어 코드 리플렉션이 목적에 맞게 제대로 실행됐는지 확인할 수 있다. 편향 위험성을 줄이기 위해 SQL 및 차별화 프로그래밍과 같은 다른 프로그래밍 모델도 탐색할 수도 있다.
코드 리플렉션은 구체적으로 다음 세 부분으로 구성된다.
– 액세스, 분석 및 변환에 적합한 코드 모델로서 자바 프로그램 모델링
– 컴파일 타임과 런타임에 코드 모델에 액세스할 수 있도록 자바 리플렉션을 개선
– 코드 모델을 빌드, 분석 및 변환하기 위한 API
샌도즈는 바빌론 프로젝트로 개발자가 자바로 GPU 커널을 작성하여 GPU에서 실행하고자 할 때 특히 유용할 수 있다고 설명했다. 기존 방식 안에서 자바로 GPU 커널을 개발할 때면 개발자는 코드를 분석하고 실행 가능한 GPU 커널로 변환해야 했다. 이때 자바 라이브러리가 관련 작업을 수행할 수 있지만, 이를 위해서 별도의 자바 코드에 대한 접근 권한이 필요했다. 또한 접근 과정에서 비표준 API를 사용하거나 컴파일 시간 또는 런타임 등 특정 수명 주기 안에 이뤄져야 한다는 제한이 있었다. 또한, 사용 가능한 형식(추상 구문 트리 또는 바이트코드)은 분석 및 변환에 적합하지 않은 경우가 많았다.
바빌론은 향후 여러 기능 릴리스에 걸쳐 일련의 JDK 개선 제안(JEP)을 통해 제공될 예정이다. 코드 리플렉션은 2024년 3월로 예정된 JDK 22의 메인라인 릴리스 복제본에서 우선 적용되고 향후 공식 출시를 검토할 예정이다.
자바 개발진은 GPU 프로그래밍 모델을 위해 바빌론 프로젝트에서 관련 코드 리플렉션 기능을 만들고 개별 레포지토리에서 이를 관리할 예정이다. 현재로서는 GPU 프로그래밍 모델을 JDK에 제공할 계획은 없는 상태다. 다만 해당 모델작업을 통해 향후 해결될 수 있는 JDK 기능 및 일반 유틸리티의 개선 사항을 파악할 수 있을 것으로 보인다.
dl-ciokorea@foundryco.com