오늘부터 몇일간 JNI 에 대해 시리즈처럼 한번 같이 공부해보아요.
이 글들은 Oracle 에서 제공하는 Tutorial 문서를 번역한 것입니다.
출처 : http://docs.oracle.com/javase/6/docs/technotes/guides/jni/spec/intro.html#wp9502
오늘은 먼저 JNI 가 뭔지 한번 간단히 알아볼까요?
JNI 소개
이번 장에서는 Java Native Interface (JNI) 에 대해 알아보겠습니다. JNI 는 native 프로그래밍 interface 입니다. Java Virtual Machine (VM) 안에서 도는 Java code 를 C, C++, assembly 와 같은 다른 언어로 짜여진 어플리케이션이나 library 와 상호작용할 수 있게 해주는 것입니다.
JNI 의 최고 이점은 Java VM 의 구현을 건들지 않고, 상호작용 시킬 수 있다는 것입니다. 다시 말해 Java VM vendors는 VM의 수정 없이 JNI 를 사용할 수 있습니다. 그래서 프로그래머는 native application 이나 library 를 한가지 버전으로만 짜고, 모든 Java VM에서 작동하게 할 수 있다는 것이죠.
이 장에서는 다음 주제들을 다뤄볼까 합니다.
- Java Native Interface Overview
- Background
- Objectives
- Java Native Interface Approach
- Programming to the JNI
- Changes
Java Native Interface Overview
물론 당신은 Java로 앱 전체를 짤 수도 있지만, Java 만으로는 안 되는 경우가 발생합니다. 프로그래머들은 JNI 를 이용하여 Java Native Methods 들을 작성하고, 이것들로 Java로만으로 cover 할 수 없는 경우를 해결합니다.
다음이 Java Native Methods 가 필요한 경우의 예입니다.
- 일반 Java class library 가 플랫폼 의존적인 기능들을 지원해주지 못할 때.
- 다른 언어로 짜여진 Library 를 가지고 있고, Java에서 사용하고 싶은 경우.
- 성능 이슈 ( time-critical ) 가 있을 수 있는 코드를 assembly 와 같은 low-level 로 짜서 속도향상을 도모하고자 할 때.
JNI native 함수들을 통해 다음과 같은 것들을 할 수 있습니다.
- Java object 를 만들고, 조사하고, update 할 수 있다. ( arrays 와 strings 를 포함하여.. )
- Java 함수들 호출
- Exception 을 catch & throw
- Class information 을 비롯하여 classes 를 load 할 수 있다.
- Runtime type checking.
JNI 의 Invocation API 를 통해 특정 native application에 Java VM 을 포함시킬 수도 있습니다. 이렇게 하면 프로그래머들은 기존 어플들을 VM source code 에 연결시키지 않고도, Java 에 연결하여 쓸 수 있습니다.
Historical Background
( JNI 가 나오게 된 배경들을 설명하는데, 학습에 꼭 필요할 것 같지 않아 번역 생략합니다. )
JDK 1.0 Native Method Interface
( JNI 가 나오기 전 사용된 Interface 중 하나인 JDK 1.0 Native Method Interface 에 대해 소개합니다. JNI 와 직접 관련이 없어 보여 번역 생략합니다. )
Java Runtime Interface
( JNI 가 나오기 전 사용된 Interface 중 하나인 Java Runtime Interface 에 대해 소개합니다. JNI 와 직접 관련이 없어 보여 번역 생략합니다. )
Raw Native Interface and Java/COM Interface
( JNI 가 나오기 전 사용된 Interface 중 하나인 Raw Native Interface and Java/COM Interface 에 대해 소개합니다. JNI 와 직접 관련이 없어 보여 번역 생략합니다. )
Objectives
( Standard Interface 의 필요성이 어떤 측면에서 중요시 되었고, 어떤 요구사항들을 만족시켜야 하는지에 대해 설명하고 있습니다. JNI 와 직접 관련이 없어 보여 번역 생략합니다. )
Java Native Interface Approach
( 어떤 과정으로 JNI 를 만들게 되었는지에 대한 설명을 합니다. JNI 와 직접 관련이 없어 보여 번역 생략합니다. )
Programming to the JNI
( JNI 를 프로그래밍 하는데 있어 장점과 주의사항을 간단히 설명하고 있습니다. JNI 사용 자체와 직접 관련이 없어 보여 번역 생략합니다. )
Changes
( API 변경사항에 대해 간단히 설명합니다. 나중에 프로그래밍 하시면서 필요하실 때 참조하시면 되겠습니다. )
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[Java] Thread 의 Monitor 에 대한 개념. (0) | 2012.03.22 |
---|---|
[Java] JNI Design Overview. ( JNI 의 전체 구조 ) (0) | 2012.03.21 |
[Java] WeakReference 와 SoftReference 의 차이점. (0) | 2012.03.16 |
[Android/안드로이드] Bluetooth 를 사용한 Chatting 프로그램 (0) | 2012.03.15 |
[Android/안드로이드] SMS, MMS Database Table (2) | 2012.03.14 |
댓글