小弟以前没接触个JAVA,现在应研究需要需要对JAVA平台进行移植,遇到点问题想不明白,请各位大侠赐教:
本人选用JamVM,在ARM平台上进行移植。经过一番苦战,终于将JamVM ClassPath 编译通过(有些版本通不过,具体原因没研究)
将相关文件拷贝到开发板上,进行相关的运行环境,环境变量配置后,运行一个Helloworld程序,虽然慢了点,总算还是跑起来了。
但是运行一些复杂点的程序,在AWT,还有网络等方面都出现了问题。 本人的想法是,Java API中可能会调用一些平台相关的本地方法来保证Java应用程序的平台无关性,我可能在Java API和操作系
统之间的接口上出现问题。对JAVA平台进行移植时在API方面是否也要进行相关的移植工作?也许是其它方面的原因,请大家帮忙分析,
十分感谢!
本人选用JamVM,在ARM平台上进行移植。经过一番苦战,终于将JamVM ClassPath 编译通过(有些版本通不过,具体原因没研究)
将相关文件拷贝到开发板上,进行相关的运行环境,环境变量配置后,运行一个Helloworld程序,虽然慢了点,总算还是跑起来了。
但是运行一些复杂点的程序,在AWT,还有网络等方面都出现了问题。 本人的想法是,Java API中可能会调用一些平台相关的本地方法来保证Java应用程序的平台无关性,我可能在Java API和操作系
统之间的接口上出现问题。对JAVA平台进行移植时在API方面是否也要进行相关的移植工作?也许是其它方面的原因,请大家帮忙分析,
十分感谢!
1)JAVA平台的可移植性,JVM起了大作用。针对每一个平台都有相应的JVM。楼主的JamVM平台是针对ARM平台上的一种JVM。因此:通常不会在Java API和操作系统之间的接口上出现问题。问题不在这里。
2)对JAVA平台进行移植时在API方面是否也要进行相关的移植工作?问题的核心是:JamVM是一个很小的VM,它是基于GNU Classpath,它不能支持J2SE的所有的API,而是JAVA中必须的很小的一个API子集。(如:网络API是J2SE网络API的微缩版,AWT的API也变化了)。
3)因此:你必须针对该微缩版API进行JAVA程序设计(不能:)直接拿来一个基于全部J2SE的API的JAVA程序直接运行。通常要进行整个JAVA程序基于微缩版API进行新的调整。
以上仅供你参考
还有个相关问题想请教,就是java 类库里面好像都是.class文件(我在j2se 平台里的jre/lib/rt.jar里看的,不知合不合理)
java API在访问操作系统资源时应该还要调用本地函数的,这些本地库我都找不到。在API源代码里面也找不到从哪里调用本地函数的
(我想API可能也是通过System.loadlibrary()加载本地库,但是在源代码里基本艘不到它)