본문 바로가기

개발 언어/JAVA

디자인패턴 상세 설명 http://bins4088.blogspot.com/2009/12/java-%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4.html 더보기
[자바] Thread - 작업중단 및 종료 1. http://blog.naver.com/garaboss?Redirect=Log&logNo=100104362453 2. http://blog.naver.com/myca11?Redirect=Log&logNo=80130600534 더보기
[자바] 실행파일 만들기 http://blog.naver.com/reach_reach?Redirect=Log&logNo=90119907102 더보기
JNI 참고 링크 (자바스터디) http://www.javastudy.co.kr/docs/jhan/javaadvance/jni.html 더보기
JNI 종합편 http://blog.naver.com/parknine/60068945119 http://blog.naver.com/parknine/60068945272 더보기
Java Native Interface 설명서 http://eureka7.com.ne.kr/jdk-1_5_0-Korean-doc/docs/guide/jni/spec/jniTOC.html 더보기
[JNI] 배열혈 아규먼트 JNI(Java Native Interface) - 4. 배열형 아규먼트 - 이번 시간에는 배열로 들어온 아규먼트를 처리하는 법을 조사해 보겠습니다. 단순히 배열로 되었을 뿐인데 무었이 있나라고 생각하시면.... 음.... 역시나 다른 언어간의 교신이므로 있습니다. 무언가가.... 단순한 메모리 참조를 넘어선 그 뒤의 무언가가..... 아무튼 기본 자료 형태의 배열과 오브젝트 형태의 배열로 나뉘어져 있습니다만.... 조금의 차이를 제외하고는 거의 동일 합니다. 먼저 일차원 배열에 대해서 알아 보도록 하겠습니다. 간단한 예제를 통해서 접근해 보겠습니다. class ArrayTest { public native void passArray(int []intary); static { System.loadLibr.. 더보기
[jni]객체의 메서드 실행하기 -Native Method 내부에서 자바의 메서드를 호출하는 방법은 바로 앞 절에서 언급한 객체의 변수에 접근하는 방법과 매우 유사한 단계를 거칩니다. -1단계: 자바 객체의 타입 알아오기 -2단계: 자바 객체의 타입에서 부터, 호출하려는 메서드의 식별 정보를 알 오기 -3단계: 메서드의 식별 정보를 사용해서 메서드를 호출하기 2단계와 3단계에서 변수의 식별 정보 대신, 메서드의 식별 정보를 사용하는 것만이 달라졌다. 메서드의 식별정보는 jimethodID라는 JNI가 미리 정의해 놓은 타입을 사용한다. 한가지 주의할 점이 있다면 메서드의 경우 매개 변수와 값을 가지기 때문에, 이런 매개변수와 반환값을 Native Method가 이해할 수 있도록 특수한 처리를 해주어 한다. MethodControl.ja.. 더보기
[jni]객체 필드에 접근하기 -자바에서, 객체의 변수에 접근하려면 그 객체의 이름과 변수의 이름을 알아야 한다. 마찬가지로 Native Method역시 자바 객체의 변수에 접근하기 위해서 그 객체의 타입과, 변수의 식별 정보를 컴퓨터에 인식시켜줄 필요가 있다. ※예를 들어 자바의 int형 데이터 타입의 변수에 접근하기 위해서는,Native Method에 자바의 객체 타입(클래스)과 변수의 식별 정보인 변수 이름과 변수 타입을 알려 주어야 한다. FieldControl.java(맴버변수를 생성한 자바 소스 코드) public class FieldControl { int int_a = 10; double double_b = -1.2345; static { System.loadLibrary("control"); } public nativ.. 더보기
[jni]문자열 전달 인자 -자바에서 String은 16비트의 Unicode 문자 세트로 사용한다. -C에서는 일반적으로 8비트의 문자열을 표현한다. jstring의 잘못된 사용법 JNIEXPORT jstring JNICALL Java_Prompt_getLine(JNIEnv *env, jobject obj , jstring prompt) { printf("%s", prompt); ... } -자바의 String을 Native Method가 정상적으로 접근하고 조작하려면, 자바의 String을 Native Method가 인식 가능한 형태로 변환 시켜줘야 한다. JNI는 자바의 16비트 유니코드 문자열과 C언어의 8비트 문자열 사이의 변환을 위해 UTF-8 포맷을 사용한다. UTF-8 포맷은 자바가 사용하는 16비트 유니코드 중에서도.. 더보기
[jni] 숫자 인자와 변환값 -자바와 다른 언어간의 기본형 데이터 타입의 차이를 해결 하기 위해서,JNI는 아래 표와 같이 Native Method가 자바의 기본형 데이터에 접근할 수 있도록 미리 정의된 데이터 타입들을 제공 Java Type Native Type Size in bits Boolean jboolean 8, unsigned Byte jbyte 8 Char jchar 16, unsigned Short jshort 16 Int jint 32 Long jlong 64 Float jfloat 32 double jdouble 64 void void n/a 표 20-1 Native Method를 위해 제공되는 JNI에서 정의된 데이터 타입 Calculator.java(간단한 숫자계산을 위한 Native Method 선언) pub.. 더보기
[JNI] 단계별 설명 (기본) 1단계: 자바 클래스 생성 public native void printHelloWorld() - 키워드 native 선언 - 컴파일러에게 실제 이 메서드의 구현은 외부에 다른 언어로 구현 될 것이라는 것을 명시 System.loadLibray("helloworld") - 실제로 Native Method와 연결을 위해서는 자바가상머신이 실제 Native method를 찾아서 실행 해 줄 수 있도록 Native Method가 구현되어 있는 라이브러리를 가져오는 작업 - C언어의 helloworld.dll을 만들고 이것을 자바 클래스로 로딩 - 라이브러기 동적 로딩 - 주의: 라이브러리는 Native Method가 호출 되기전에 반드시 로딩 되어야 함 HelloWorld.java(라이브러리를 로딩할 자바 파일.. 더보기