본문 바로가기
프로그래밍 놀이터/안드로이드, Java

[Java] JNI 가 뭔가요? ( JNI Introduction )

by 돼지왕 왕돼지 2012. 3. 21.
반응형



안녕하세요 돼지왕 왕돼지입니다.

오늘부터 몇일간 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 변경사항에 대해 간단히 설명합니다. 나중에 프로그래밍 하시면서 필요하실 때 참조하시면 되겠습니다. )
 


도움이 되셨다면 손가락 꾸욱~



반응형

댓글