[閒聊] 魔法 JNI
這一篇不是要介紹 JNI 的觀念。
我個人有搞一個 project,其目的是把 Python 與 Java 整合在一起,我採用的
approach 不同於 Jython/IronPython,主要是把 JVM emdedded 在 Python process
裡。(最原始不是為了整合 Python/Java)
搞得過程會需要摸到 JNI,也因為如此我觀察到一些事情,這些事情對 Java
programmer 而言有什麼重要性?對絕大多數而言,沒有。提出來只是因為這些
事情對 pure Java programmer 來說或許會大感意外。
有興趣的人可以把本文當作軼事看。
沒有興趣的人可以當作新聞看。
完全不懂 JNI,以後也完全不會/想用到 JNI 者,就可以離開不看。
**************************************************************************
package ptt.lang;
/**
* 沒有任何 runtime bytecode instrumentation/transformation,
* 在不變更/不 disable standard output 前提下。
*/
public class Magic {
public static Magic createInstance() {...}
public static void transform(String s) {...}
public static Integer wrap(int value) {...}
public final String name;
public Magic() {
name = "PTT";
System.out.println("initialize Magic instance.");
}
public static void main(String[] args) {
final Magic obj = createInstance();
System.out.println(obj.name);
// *有無可能輸出是 null?
// 有無可能全部輸出內容中沒有包含 "initialize Magic instance"?
final String s = "Java";
transform(s);
System.out.println(s);
// 有無可能輸出不是 "Java"?
final Integer value = wrap(87);
System.out.println(value == null);
System.out.println(value instanceof Integer);
// 有無可能兩個輸出皆是 false?
}
}
如果考慮 native method(JNI)進來,以上問題的答案皆是肯定的-有!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.173.134.91
※ 編輯: sbrhsieh 來自: 218.173.128.59 (04/30 00:28)
討論串 (同標題文章)
java 近期熱門文章
PTT數位生活區 即時熱門文章