(1)避免手动使用垃圾回收功能,避免是程序的功能依托于设置的线程的优先级。
首先对于垃圾回收功能,JVM规范之中,只规定了增加去创建一个对象,而没有规定怎样去销毁一个对象,所以,垃圾回收机制是各个JVM平台自己定义的策略,在JAVA API中,Object类有一个方法是finalize(),用于对该对象进行强制的垃圾回收,但是jvm是不是真的会立刻进行垃圾回收,则有待商榷。
其次对于JVM中的线程的优先级问题,在thread类中现在一共定义了三个表示优先级的常量,分别为MIN_PRORITY=1,NORMAL_PRORITY=5,MAX_PRORITY=10这三个优先级,但是其实你可以设置10个优先级。但是,在JVM中设置的优先级并不代表在底层的操作系统的优先级,比如,在LINUX机器中,所有的JAVA线程都是同一个优先级的,但是在window系统中,可能多个JAVA优先级共享同一个window线程的优先级这样一来,线程优先级就完全失去了作用。
(2)对于自己的程序所需要运行的平台的集合有一个认识,JVM和API有很多的版本,选择这样一个版本,是他们能够在所有的底层平台上面都能够运行,在这个java平台上面开发出的java程序,就可以说是对于你自己的平台无关的。
(3)避免使用本地方法(native method),在JAVA 的API中有许多class类是有本地方法的,为的是能够与本地的资源和系统进行交互。在自己写JAVA程序的时候,如果使用了native method,就意味着这个类与平台相关了,当移植到其他平台的时候,将无法运行。所以如果需要对底层操作系统的资源进行交互的时候,尽量使用标准的API。
(4)不要使用非标准库,有的JAVA API开发商会对特殊的情况开发出特殊的一套API以供使用,如果要做到平台的无关性,则不能够使用这样的非标准库的API。
如果能够做到以上的几点,就能够使得写出的JAVA程序是平台无关性的。