Re: [問題] 有人用過GCC裡面的GCJ開發embedded jav …
※ 引述《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
LinuxDev 近期熱門文章
PTT數位生活區 即時熱門文章