background image

编写跨平台 Java 程序要注意的事项

下面是在编写跨平台的 Java 程序是需要注意的一些事情:
  1.编写 Java 跨平台应用程序时,你可以选择 JDK1.0,1.1,1.2 或支持它们的 GUI
开发工具如:Jbuilder,VisualAgeforJava 等等,但是必须注意你的 Java 程序只能使用
Java 核心 API 包,如果要使用第三方的类库包,则该类库包也要由 Java 核心包开发完
成,否则在发布你的程序的时候还得将支持该 Java 类库包的 JVM 发布出去。也就是说,
你的程序需要是 100%纯 Java 的。举一个例子, VisualJ++就不是纯 Java 的,由
VisualJ++编写的程序也就不具有平台无关性。
  2.无论你使用的是 JDK 或其他开发工具,在编译时都要打开所有的警告选项,这样
编译器可以尽可能多的发现平台相关的语句,并给出警告。虽然不能保证没有编译时警告
错误的程序一定是跨平台的,但含有警告错误的程序却很有可能是非平台无关的。
  3.在程序中使用任何一个方法的时候,要详细察看文档,确保你使用的方法不是在
文档中已经申明为过时的方法(Deprecatedmethod),也不是文档中未标明的隐含方法
(Undocumentedmethod)。
  4.退出 Java 程序时尽量不要使用 java.lang.System 的 exit 方法。Exit 方法可以终
止 JVM,从而终止程序,但如果同时运行了另一个 Java 程序,使用 exit 方法就会让该
程序也关闭,这显然不是我们希望看到的情况。事实上要退出 Java 程序,可以使用
destory()退出一个独立运行的过程。对于多线程程序,必须要关闭各个非守护线程。只有
在程序非正常退出时,才使用 exit 方法退出程序。
  5.避免使用本地方法和本地代码,尽可能自己编写具有相应功能的 Java 类,改写该
方法。如果一定要使用该本地方法,可以编写一个服务器程序调用该方法,然后将现在要
编写的程序作为该服务器程序的客户程序,或者考虑 CORBA(公共对象请求代理)程序结
构。
  6.Java 中有一个类似于 Delphi 中的 winexec 的方法,java.lang.runtime 类的
exec 方法,作为该方法本身是具有平台无关性的,但是给方法所调用的命令及命令参数
却是与平台相关的,因此,在编写程序时要避免使用,如果一定要调用其他的程序的话 ,
必 须 要 让 用 户 自 己 来 设 置 该 命 令 及 其 参 数 。 比 如 说 , 在 windows 中 可 以 调 用
notepad.exe 程序,在 linux 中就要调用 vi 程序了。
  7.程序设计中的所有的信息都要使用 ASCII 码字符集,因为并不是所有的操作系统
都支持 Unicode 字符集,这对于跨平台的 Java 中文软件程序不能不说是一大噩耗。
  8.在程序中不要硬性编码与平台相关的任何常量,比如行分隔符,文件分隔符,路
径分隔符等等,这些常量在不同的平台上是不同的,比如文件分隔符,在 UNIX 和 MAC

中是 /”,在 windows

中是 \”,如果要使用这些常量,需要使用 jdava.util.Properties

类的 getProperty 方法,如 java.util.Properties.getProperty(“file.separator”)可以
获 得 文 件 分 隔 符 , getProperty(“line.separator”) 返 回 行 分 隔 符 ,
getProperty(“path.separator”)返回路径分隔符。
    9. 在 编 写 跨 平 台 的 网 络 程 序 时 , 不 要 使 用 java.net.InetAddress 类 的
getHostName 方法得到主机名,因为不同的平台的主机名格式是不同的,最好使用