티스토리 뷰
Java는 가상머신으로써, 범용 운영체제 위에서 동작하는 형태가 가장 많다. 자바는 가상머신이기 때문에 CPU, Memory 등의 자원과 디스크, 파일, 네트워크 및 각종 IO장치에 대한 접근이 필요할 경우 운영체제를 경유하도록 만들어 지는게 일반적이다. 즉, 운영체제에서 제공하는 시스템호출(System Call)에 래퍼(Wrapper)를 만들어, 자바표준(JSR xxx시리즈)을 구현하는형태이다. (실제 일은 운영체제가 다~ 한다는 얘기다)
이렇게, 운영체제(운영체제가 하드웨어를 제어하므로)에 대한 저수준 제어 로직을 만들어 상위수준의 인터페이스(API) 만들어 이뤄진 것이 자바의 본체이다. 자바는 이러한 것들을 구현하기 위해 운영체제/저수준 인터페이스(네이티브; native)를 제공하는데, 이 표준 이름이 JNI(Java Native Interface)이다.
JNI는 2가지 형태로 사용될 수 있다. 하나는 Java에서 C/C++등으로 작성된 모듈을 호출하는 형태이며, 다른 하나는 C/C++에서 Java를 호출하는 형태이다. 보통은 전자가 더 널리 사용되고 있다.
JNI를 사용하기 위해 일정한 절차를 따르게 되어 있다. 어찌보면 다소 복잡한 면이 있으나, 익숙해 지면 별로 어려운 것은 아니다. 그래도, JNI를 프로그래밍 하는 것은 다소 복잡한 모습을 가지고 있음에 대해 의문을 가지는 사람은 별로 없다.
이러한 JNI의 사용상 문제를 간소화하여, 운영체제 API를 쉽게 호출하도록 만들어진 것이 JNA이다.
package examples.subclass;import org.apache.log4j.*;
"OutputDebugStringA “+i); } |
'부담없이 읽기' 카테고리의 다른 글
유태인 속담 : '고기 한 마리' vs. '고기 잡는 방법' (0) | 2014.11.12 |
---|---|
화이부동(和而不同) vs.부화뇌동(附和雷同) (0) | 2013.08.05 |
개발자를 위한 VM - Virtual Appliance - Oracle VMs (0) | 2013.06.05 |
리눅스) 다수 벤더/버전 관리하기- JDK사례(update-alternatives) (0) | 2013.06.05 |
Ubuntu/Mint Linux에 RPM패키지 인스톨하기 (0) | 2013.06.04 |