作者jserv (松鼠)
看板LinuxDev
标题Re: [问题] 有人用过GCC里面的GCJ开发embedded jav …
时间Tue Jul 1 21:19:59 2008
※ 引述《simonho (天下)》之铭言:
: 麻烦各位看看我的观念是否正确@_@
: 1.GCJ可以直接COMPILE java source 成NATIVE CODE
: 所以我们就不需在embedded linux里面放virtual machine当作执行环境
因为语言特性,gcj-compiled native 需要 runtime,也就是 libgcj,您的系统应该可
找到几个,比方说:
$ ls /usr/lib/libgcj*
/usr/lib/libgcj_bc.so.1 /usr/lib/libgcj-tools.so.70
/usr/lib/libgcj.so.70 /usr/lib/libgcj-tools.so.70.0.0
/usr/lib/libgcj.so.70.0.0 /usr/lib/libgcj-tools.so.71
/usr/lib/libgcj.so.71 /usr/lib/libgcj-tools.so.71.0.0
/usr/lib/libgcj.so.71.0.0 /usr/lib/libgcj-tools.so.81
/usr/lib/libgcj.so.81 /usr/lib/libgcj-tools.so.81.0.0
/usr/lib/libgcj.so.81.0.0 /usr/lib/libgcj-tools.so.90
/usr/lib/libgcj.so.90 /usr/lib/libgcj-tools.so.90.0.0
/usr/lib/libgcj.so.90.0.0
suffix 的数字 (70, 71, 80, 90) 就表示 libgcj runtime interface 的变迁,而 _bc
则表示 binary compatibility。这个状况有点类似 gcc 的 objective-C,因为语言的
特性使然,有 dynamic language 成份,必须允许 late binding 与 object invocation
的机制,无法仅是如 C/C++ 编译成单纯的 single executable。
但这些都还是 machine code,只是多包了 runtime。
: 2.如果COMPILE成 BYTECODE就必须 放一个virtual machine
就跟一般的 Java classfile 没有两样,开头会看到 0xCAFEBABE
: 3.当COMPILE成NATIVE CODE, CODE SIZE会比较大, 所以较不适合embedded environment
很难说,看具体空间而定。embedded environment 的重点是 "embedded",没有限制一定
要「很微小」。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.115.130.82