作者sbrhsieh (偶尔想摆烂一下)
看板java
标题[闲聊] 魔法 JNI
时间Fri Apr 30 00:00:20 2010
这一篇不是要介绍 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)