달력

5

« 2024/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
2016. 8. 4. 17:58

Java Native Interface 프로그래밍/java2016. 8. 4. 17:58

JNI


1. JNI(Java Native Interface)이란?

다른 언어로 작성된 코드를 자바에서 호출할 수 있도록 만들어진 규약이다.  Native Code란 플랫폼에 종속적인 기계어 코드로 C/C++와 같은 언어를 말한다. 자바는 특정 플렛폼에서 제공하는 고유의 서비스의 기능을 모두 처리할 수 없기때문에 특수한 목적으로 제작된 하드웨어를 제어해야 할 필요가 있다면 자바만으로 해결하기 힘들다.


2. DLL이란 무엇인가?


라이브러리란 자주 사용되는 표준적인 함수를 매번 직접 작성해서 사용하는 것은 지나치게 시간 소모적이므로 표준화할 수 있는 함수를 미리 만들어서 모아 놓은 집합이며 보통 LIB확장자를 가진다. 이 라이브러리를 프로그램에 링크시키는 방식에는 정적 링크(Static Link)와 동적 링크(Dynamic Link)가 있는데 동적 링크 방식을 쓰면 DLL이 된다.


- 정적 링크(Static Link)

실행파일을 만들 때 프로그램에 라이브러리 코드를 복사하여 컴파일하는 방식이다. 그래서 파일의 크기는 커지지만 실행파일은 완전한 단독 실행파일이 된다. 컴파일이 끝나면 라이브러리 파일(LIB)이 없이도 프로그램을 실행할 수 있다.


- 동적 링크(Dynamic Link)

실행 파일을 만들 때 프로그램에 라이브러리를 복사시키지 않고 링크시키는 방식이다. 그러면 실행파일에는 호출할 함수의 정보만 포함되고 실제 함수 코드는 복사되지 않으므로 실행파일의 크기는 작아진다. 실행 파일은 실제코드를 가지고 있지 않으므로 프로그램 실행시에 DLL이 꼭 있어야 한다.


3. Shared object란 무엇인가?

라이브러리는 함께 링크될 수 있도록 보통 미리 컴파일된 형태인 오브젝트코드(Object code) 형태로 존재한다. 이 Object들은 자주 사용하는 함수의 소스를 컴파일하여 만들 수 있다.


*표준 시스템 라이브러리: /lib와 /usr/lib에 위치

*라이브러리의 이름은 대개 lib로 시작




1단계: Native Method를 선언하는 자바 클래스를 작성하고 컴파일한다.

여기서 Native Method란 Native code(C/C++)를 호출하기 위한 자바 함수이다.

native는 Native Function이라는 것을 알여주는 키워드이다.




[출처]

- DLL이란 무엇인가?

http://stdesignstar.tistory.com/entry/DLL-%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80




'프로그래밍 > java' 카테고리의 다른 글

객체  (0) 2016.05.04
변수  (0) 2016.05.04
hello world  (0) 2016.05.04
리눅스에 자바 설치 및 실행 방법  (0) 2016.02.13
:
Posted by youjin.A