개발자 / 모바일 / 애플리케이션

18살된 된 자바, C · 안드로이드서 신기능 배운다

Paul Krill | InfoWorld 2013.04.11
자바와 그 핵심인 JVM(Java Virtual Machine)이 세상에 첫선을 보인지 벌써 18년이 흘렸다. 그러나 전문가들은 로컬리티(locality)와 애플리케이션 분리(application isolation), 병렬 처리 등에서 아직도 개선할 부분이 있다고 지적한다.
 
JVM은 자바 애플리케이션을 다양한 하드웨어 플랫폼에서 실행할 수 있도록 하는 역할을 한다. 메모리와 프로세스 간의 연결을 강화해 로컬리티를 향상시키는 마치 C 언어의 스트럭트(struct) 기능과 비슷하다. 세일즈포스닷컴의 성능 엔지니어링 아키텍트이자 '자바 퍼포먼스'(Java Performance)라는 책의 저자인 찰리 헌트는 "스트럭트(Struct)는 메소드 없이 필드를 지원하는 경량 오브젝트를 제공한다"며 "이러한 특성은 풋프린트 측면에서 장점이 있다"고 말했다.

오픈JDK 오픈소스 자바의 최고 회의 소속이자 JCP(Java Community Process)에도 소속됐던 더그 리는 스트럭트 기능이 JVM에 추가될 것으로 전망했다. 스트럭트는 더 작은 풋프린트와 더 뛰어난 로컬리티를 지원하기 때문이다. 실제로 스칼라(Scala)와 같은 일부 JVM 언어는 이미 이 기능을 추가했다.
 
리는 "특히 자바와 모바일 애플리케이션의 경우 애플리케이션 분리를 가능케하는 구글 안드로이드의 페일세이즈(failsafe) 기능을 참고할 필요가 있다"고 말했다. 안드로이드의 달빅(Dalvik) VM은 이 기능을 통해 다른 프로세스의 영향으로 발생하는 예상치 못한 프로세스 오류를 방지한다.

그러나 리는 자바 운영방식과 내부 정책 때문에 이 기능이 JVM에 이식되기는 쉽지 않을 것이라고 전망한다. 그는 "이것이 설사 썬 연구소의 프로젝트라고 해도 핫스팟 JVM에 적용되지는 않을 것"이라며 "대신 비슷한 기능이 안드로이드 전문가를 통해 도입될 것"이라고 말했다.
 
한편 헌트는 "자바용 자동 병렬 처리과 런타임은 긍정적"이라고 말했다. 자바 스탠다드 에디션 8의 경우 람다(Lambda) 기능은 통해 API를 이용한 병렬처리에 한발자국 더 다가갔다. 그러나 최종적으로 기능이 추가되려면 시간이 더 필요할 것으로 보인다. 그는 "명확하게 표현하지 않아도 되는 언어와 런타임 정도는 가능할 것"이라며 "하지만 일부 과정을 자동화하는 수준에 그칠 것"이라고 말했다.
 
또한 리는 메모리 충돌 제어 관련해서 가상 머신 기능이 개선돼 자바 애플리케이션 성능이 향상될 것으로 전망했다. 멀티코어 프로세서는 메모리 충돌 프로세스를 펄스 공유(false sharing) 문제와 함께 대응한다. 반면 자바의 경우 큰 문제로 불거지지는 않은 상황이다. 리는 "이것은 모든 영역에서 제기되는 문제로 주로 개별 사안별로 해결책을 찾고 있는 상황"이라며 "아직은 더 많은 정보가 필요하다"고 말했다. editor@idg.co.kr
Sponsored

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

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

Copyright © 2024 International Data Group. All rights reserved.