본문 바로가기
[Java] JNI Tutorial - Additional JNI Features 안녕하세요 돼지왕 왕돼지입니다. 오늘은 JNI Tutorial 중 "Additional JNI Features" 에 대해 알아보도록 하겠습니다. 이 글은 http://java.sun.com/docs/books/jni/html/other.html#11202 내용을 요약 정리한 것입니다. JNI and Threads Constraints Multi thread 를 사용할 경우에는 다음과 같은 경우를 주의해야 합니다. - JNIEnv pointer 는 해당 thread 에서만 valid 합니다. 이 JNIEnv pointer 를 다른 thread 에 전달하거나, cache 하여 다른 thread 에서 사용해서는 안됩니다. JVM 에서 동일한 thread 에서의 연속적인 함수 호출에 대해서는 같은 JNIEnv .. 2012. 4. 5.
[Java] JNI Tutorial - Invocation Interface. 안녕하세요 돼지왕왕돼지입니다. 오늘은 JNI Tutorial 중 "Invocation Interface" 에 대해 알아보겠습니다. 이 글은 http://java.sun.com/docs/books/jni/html/invoke.html#11202 내용을 요약 정리한 내용입니다. Invocation Interface 이번 section 에서는 JVM 을 어떻게 native application 에 포함시킬지에 대해 알아봅니다. JVM 구현은 보통 native library 형태로 전달됩니다. native application 은 이 library 를 링크하고, invocation interface 를 통해 JVM 을 로드합니다. Creating the Java Virtual Machine #include #d.. 2012. 4. 5.
[Java] JNI Reference Document. 안녕하세요 돼지왕 왕돼지입니다. "C++ for Java Programmers" 글을 Frank Yoon 님이 한글로 번역하여 pdf 로 묶은 자료를 공유합니다. 번역도 잘 되어 있고, JNI 에 대한 기초를 잡는데 매우 좋은 자료라고 생각욉니다. ( CopyRight 에 문제가 있다면 Comment 에 남겨주세요. 바로 조치 취하겠습니다. ) 도움이 되셨다면 손가락 꾸욱~ 2012. 4. 5.
[C/C++] extern "C" 에 대해 알아봅니다. 안녕하세요 돼지왕왕돼지입니다. JNI 에 대해 학습하면서 extern "C" 라는 녀석을 보게 되었습니다. 그래서 오늘은 extern "C" 가 뭐하는 녀석인지에 대해 알아보겠습니다. extern "C" 넌 뭐 하는 녀석이냐? 컴파일러는 링커가 링킹작업을 하도록 합니다. 이 링킹에서는 함수들에 관련된 정보를 오브젝트 파일에 기록하여 상호 호출이 가능하도록 하며, 이러한 정보를 linkage 라고 합니다. 이 링킹작업은 C와 C++ 을 혼합하여 사용했을 때 문제가 생길 수 있습니다. C와 C++의 링킹방식이 다르기 때문입니다. 링킹작업을 할 때, 함수명, 변수명 등의 앞뒤에 _ 등의 추가적인 symbol 을 붙이거나, 추가정보를 덧붙여 표시하는데, 이런 추가작업의 방식이 다릅니다. C는 함수의 이름이 유일.. 2012. 4. 5.
[Android/안드로이드] Cygwin 을 통해 cpp로 작성된 JNI compile 시 나는 에러에 대한 대첵 ( make : *** 'obj/local/armeabi/objs/hellojni/HelloJNI.o'에서 필요로 하는 타겟 'jni/HelloJNI.c' 를 만들 규칙이 없습니다. 멈.. 안녕하세요 돼지왕 왕돼지입니다. Cygwin 을 통해서 cpp 로 작성된 JNI compile 시 계속 에러가 나더라구요. 어떤 에러냐? make : *** 'obj/local/armeabi/objs/hellojni/HelloJNI.o'에서 필요로 하는 타겟 'jni/HelloJNI.c' 를 만들 규칙이 없습니다. 멈춤.' 요런 녀석이었습니다. 스샷으로도 함 볼까요? 암만 구글링을 해봐도 소용이 없었지만, Android Developer 의 NDK section 에서 제공하는 OVERVIEW 문서를 보고 해결책을 알아내버렸습니다. 사실 처음부터 cpp 로 작성하여 compile 을 하면 에러가 나지 않을 것으로 예상됩니다. 하지만, 원래 c 로 사용하던 것을 cpp 로 바구거나, cpp로 사용하던 것을 .. 2012. 4. 4.
[Android/안드로이드] ListView 에서 CheckBox 나 Button 등 사용시 클릭문제. 안녕하세요 돼지왕왕돼지입니다. 다음과 같이 Custom ListView 를 사용하다 보면, CheckBox 나 Button 이 mouse event 를 먹어서 textview 가 클릭이 안 되는 현상이 발생합니다. 요런건 원인을 알면 아주 간단하게 해결할 수 있습니다. 원인은 저 CheckBox 나 Button 이 Focus 를 가질 수 있는 녀석이기 때문입니다. 그럼 어떻게 해결하느냐? xml로는 focusable 만 false 로 주시면 되겠습니다. 물론 코드로도 처리할 수 있습니다. checkbox.setFocusable( false ); 그럼 도움이 되셨길 바라며 이만 뿅~ 도움이 되셨다면 손가락 꾸욱~ 2012. 4. 3.
[Java] JNI Tutorial - Exceptions 안녕하세요 돼지왕 왕돼지입니다. 오늘은 JNI 의 Exception 에 대해 알아보겠습니다. 이 글은 http://java.sun.com/docs/books/jni/html/exceptions.html#11202 을 요약 정리한 글입니다. Exceptions Introduction. 우리는 지금까지 JNI call 후에 여러가지 error 상황들을 체크해왔습니다. 예제 코드에서 말이죠. 여기서는 어떻게 그런 error 를 detect 하고 recover 하는지를 다룹니다. JNI 의 system call 에서 발생하는 에러는 그저 문서에 기술된 처리만 해주면 됩니다. 하지만, Java API method callback 을 호출한 경우에는 여기서 소개하는 방법에 따라 exception 처리를 해야 합니다.. 2012. 3. 30.
[Java] JNI Tutorial - Local and Global References 안녕하세요 돼지왕 왕돼지입니다. 오늘은 JNI 중 Local Reference 와 Global Reference 에 대해 알아보겠습니다. 이 글은 http://java.sun.com/docs/books/jni/html/refs.html#27423 내용을 요약 정리한 내용입니다. Local and Global References JNI는 jobject, jclass, jstring, jarray 등을 지원을 하는데 그것들은 opaque reference 입니다. 그래서 이녀석들은 JNI 함수를 통해서 opaque reference 의 내용물들을 받아와야 합니다. 이 opaque reference 의 장점은 JVM 의 내부구현에 상관없이 native code 를 구현할 수 있다는 것입니다. 프로그래머는 JN.. 2012. 3. 30.
[Design Pattern/Java] 추상 클래스보다는 인터페이스를 사용하자. 안녕하세요 돼지왕 왕돼지입니다. 오늘은 "추상 클래스보다는 인터페이스를 사용하자" 라는 주제로 이야기를 해볼가 합니다. 이 글은 "Effective Java" 의 내용을 요약 정리한 것입니다. 추상 클래스와 인터페이스의 General 한 차이점 - 추상 클래스는 구현된 메소드( 메소드 몸체 코드가 있는.. ) 를 포함할 수 있는 반면, 인터페이스는 그렇지 못합니다. - 추상 클래스로 정의된 타입을 구현하는 클래스는 반드시 추상 클래스의 서브 클래스가 되어야 합니다. 반면 인터페이스를 구현하는 클래스의 경우는, 인터페이스에 정의된 모든 메소드를 구현하고 인터페이스 구현 계약을 지키면 됩니다. 즉 클래스 상속 계층과는 무관합니다. - 클래스 간의 상속은 단일상속만을 허용하므로, 추상 클래스로 타입을 정의할 .. 2012. 3. 29.
반응형