d****i 发帖数: 4809 | 1 Sun当年设计Java的时候,最大的败笔是没有把JNI的接口好好设计,这样和跑在Native
层的native语言和script语言:C,C++,Python, Perl, PHP, Ruby, JS, 等等隔开了
一层避孕套,从JVM调用其他语言比较麻烦,使得凭空造出来所谓的JVM语言:scala,
clojure等等,反而像文革造反派一样威胁到Java的地位。其实JNI完全可以重新设计,
这样使得Java和其他Native层的语言的interoperatbility大大提高,有利于不同队伍
合作。 |
N******K 发帖数: 10202 | 2 jni看了看 貌似很复杂 没看懂
Native
【在 d****i 的大作中提到】 : Sun当年设计Java的时候,最大的败笔是没有把JNI的接口好好设计,这样和跑在Native : 层的native语言和script语言:C,C++,Python, Perl, PHP, Ruby, JS, 等等隔开了 : 一层避孕套,从JVM调用其他语言比较麻烦,使得凭空造出来所谓的JVM语言:scala, : clojure等等,反而像文革造反派一样威胁到Java的地位。其实JNI完全可以重新设计, : 这样使得Java和其他Native层的语言的interoperatbility大大提高,有利于不同队伍 : 合作。
|
w**z 发帖数: 8232 | 3 最好别用,有问题死的很难看。
【在 N******K 的大作中提到】 : jni看了看 貌似很复杂 没看懂 : : Native
|
z****e 发帖数: 54598 | 4 native会跟os绑定
垮平台feature被破坏
这个可是java当年最初的承诺之一
如果不能垮平台,java就不是java了
现在做script engine
对各种跨平台的script提供接口
可以了,jni就是要让他们麻烦
谁让你平台lockin的 |
z****e 发帖数: 54598 | 5 C,C++,Python, Perl, PHP, Ruby, JS,
这串列表里面,除了前两个,其它的scripe engine都支持
前两个没有必要搞了,定位很清晰,以后不会有什么大的前途 |
d********g 发帖数: 10550 | 6 当年MS做的那些破坏Java eco system的事也很阴险啊,还好扛住了
【在 z****e 的大作中提到】 : native会跟os绑定 : 垮平台feature被破坏 : 这个可是java当年最初的承诺之一 : 如果不能垮平台,java就不是java了 : 现在做script engine : 对各种跨平台的script提供接口 : 可以了,jni就是要让他们麻烦 : 谁让你平台lockin的
|
z****e 发帖数: 54598 | 7 嗯,就是打算从jni开始搞破坏,用jni来捆绑java到win平台
m$当年大门当家时候,还是很有威胁性的,找软肋找得比较准确
后来sb当家,基本上就是一无脑的肥猴子乱搞
【在 d********g 的大作中提到】 : 当年MS做的那些破坏Java eco system的事也很阴险啊,还好扛住了
|
k**********g 发帖数: 989 | 8
现在 2013 年, LLVM 才是一统江湖的王道。
G 家 PNaCl 也用 LLVM ,替代了上一个版本的 NaCl 。
【在 z****e 的大作中提到】 : 嗯,就是打算从jni开始搞破坏,用jni来捆绑java到win平台 : m$当年大门当家时候,还是很有威胁性的,找软肋找得比较准确 : 后来sb当家,基本上就是一无脑的肥猴子乱搞
|
d****i 发帖数: 4809 | 9 你只做web的当然不太需要搞前两个,做实体经济的还是要的。
【在 z****e 的大作中提到】 : C,C++,Python, Perl, PHP, Ruby, JS, : 这串列表里面,除了前两个,其它的scripe engine都支持 : 前两个没有必要搞了,定位很清晰,以后不会有什么大的前途
|
d****i 发帖数: 4809 | 10 客观的说,相比于JNI接口,微软的.NET平台还是搞的比较好一点,听说.NET上调用
unmanaged native code也是很方便的,请熟悉微软平台的来说说是如何达到的。
【在 z****e 的大作中提到】 : native会跟os绑定 : 垮平台feature被破坏 : 这个可是java当年最初的承诺之一 : 如果不能垮平台,java就不是java了 : 现在做script engine : 对各种跨平台的script提供接口 : 可以了,jni就是要让他们麻烦 : 谁让你平台lockin的
|
|
|
p*****2 发帖数: 21240 | 11
这个有什么难的?
【在 d****i 的大作中提到】 : 客观的说,相比于JNI接口,微软的.NET平台还是搞的比较好一点,听说.NET上调用 : unmanaged native code也是很方便的,请熟悉微软平台的来说说是如何达到的。
|
k**********g 发帖数: 989 | 12
不明觉厉,貌似很 JIT
.NET JIT is certainly "not afraid of" jitting the glue code for a .NET to
Native function call. This is known as the P/Invoke. 蝙蝠
http://www.pinvoke.net/
【在 d****i 的大作中提到】 : 客观的说,相比于JNI接口,微软的.NET平台还是搞的比较好一点,听说.NET上调用 : unmanaged native code也是很方便的,请熟悉微软平台的来说说是如何达到的。
|
d****i 发帖数: 4809 | 13 zkss, 是把.NET上的语言编译成bytecode后然后JIT,那么如何连接C/C++/assembly编
译成的machine code?
【在 k**********g 的大作中提到】 : : 不明觉厉,貌似很 JIT : .NET JIT is certainly "not afraid of" jitting the glue code for a .NET to : Native function call. This is known as the P/Invoke. 蝙蝠 : http://www.pinvoke.net/
|
k**********g 发帖数: 989 | 14
PInvoke stored as .NET Attributes (MSIL Metadata, see http://en.wikipedia.org/wiki/Metadata_(CLI) )
These attributes tell JIT how to generate the glue code. This aspect of code
-generating metadata cannot be easily encoded by bytecodes alone.
【在 d****i 的大作中提到】 : zkss, 是把.NET上的语言编译成bytecode后然后JIT,那么如何连接C/C++/assembly编 : 译成的machine code?
|
g*****g 发帖数: 34805 | 15 JNI是给JDK跨平台用的,懂了这个,就没啥好纠结了。
JNI本来就不是打算给你用的。 |
F****n 发帖数: 3271 | 16 中国人设计的。
Native
【在 d****i 的大作中提到】 : Sun当年设计Java的时候,最大的败笔是没有把JNI的接口好好设计,这样和跑在Native : 层的native语言和script语言:C,C++,Python, Perl, PHP, Ruby, JS, 等等隔开了 : 一层避孕套,从JVM调用其他语言比较麻烦,使得凭空造出来所谓的JVM语言:scala, : clojure等等,反而像文革造反派一样威胁到Java的地位。其实JNI完全可以重新设计, : 这样使得Java和其他Native层的语言的interoperatbility大大提高,有利于不同队伍 : 合作。
|
d****i 发帖数: 4809 | 17 真的是Sun的中国人设计的?呼唤oracle效仿.NET->Native的机制把JNI重新reengineer
。据说JDK 9有这个计划,把JNI重新设计,从而增加Java和其他native层上的语言的
interoperatbility
【在 F****n 的大作中提到】 : 中国人设计的。 : : Native
|
F****n 发帖数: 3271 | 18 JNI最大的问题是native code和Java交换数据overhead过大,其他还好
这个问题是Java的数据结构造成的,比如一个Java int array有他自己的内存结构,
传到native code只好copy。但大多数此类为题可以通过恰当的design解决,如果要用
native code计算array, matrix, 就应该一开始就用native 数据结构(可以用JNI wrap
), 而不是pass Java array。
reengineer
【在 d****i 的大作中提到】 : 真的是Sun的中国人设计的?呼唤oracle效仿.NET->Native的机制把JNI重新reengineer : 。据说JDK 9有这个计划,把JNI重新设计,从而增加Java和其他native层上的语言的 : interoperatbility
|