首页 > 图灵资讯 > 技术篇>正文

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

2024-02-21 10:21:44

  ---- 使用Java语言编写应用程序的最大优势是“一次编译,到处运行”。然而,这并不意味着所有的Java程序都具有跨平台的特点。事实上,相当一部分Java程序无法在其他操作系统中正确运行,那么如何编写真正的跨平台Java程序呢?

  以下是编写跨平台Java程序时需要注意的一些事情:

  ---- 1. 在编写Java跨平台应用程序时,您可以选择JDK1.0、1.1、1.2或支持它们的GUI开发工具,如:Jbuilder,Visual Age for Java 等等,但必须注意的是,您的Java程序只能使用Java核心API包,如果要使用第三方库包,也要由Java核心包开发,否则支持Java库包的JVM必须在发布程序时发布。换句话说,你的程序需要100%纯Java。也就是说,你的程序需要100%纯Java。例如,Visual J++ 不是纯Java,而是Visual J++编写的程序与平台无关。

  ---- 2. 无论您使用JDK或其他开发工具,编译时都应打开所有警告选项,以便编译器能够找到平台上尽可能多的相关陈述并给出警告。虽然不能保证编译时警告错误的程序必须跨平台,但包含警告错误的程序很可能与非平台无关。

  ---- 3. 在程序中使用任何方法时,请详细查看文档,以确保您使用的方法在文档中没有被声明为过时的方法(Deprecated method),文档中没有注明的隐含方法也不是(Undocumented method)。

  ---- 4. 退出Java程序时尽量不要使用Java.lang.Systemexit方法。Exit 该方法可以终止JVM以终止程序,但如果另一个Java程序同时运行,exit方法将关闭程序,这显然不是我们想看到的。事实上,如果你想退出Java程序,你可以使用destory()退出一个独立运行的过程。对于多线程序,必须关闭每个非防护线程。exit退出程序只有在程序异常退出时才能使用。

  ---- 5. 尽量编写具有相应功能的Java类别,并改写该方法,避免使用本地方法和本地代码。如果您必须使用本地方法,您可以编写一个服务器程序来调用该方法,然后将目前要编写的程序作为服务器程序的客户程序,或考虑CORBA(公共对象请求代理)程序结构。

  ---- 6. Java中有一种类似Delphi中winexec的方法,java.lang.runtimeeexec方法本身与平台无关,但方法调用的命令和命令参数与平台有关。因此,在编写程序时应避免使用,如果必须调用其他程序,用户必须自行设置命令及其参数。例如,notepad可以在windows中调用.exe程序,linuxe, vi程序将在中间调用。例如,notepad可以在windows中调用。.exe程序,linuxe, 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方法获取主机名,因为不同平台的主机名格式不同,最好使用getaddress获取相同格式的IP地址,此外,程序中的所有主机名都应更改为IP地址,比如www.263.net将被相应的IP地址所取代。 ---- 10. 涉及文件操作的程序要注意:程序中不要硬性编码文件路径,原因和8中一样,但这一点特别重要,所以单独提出。此外,不同的平台对文件名中使用的字符和最大文件名的长度有不同的要求。编写程序时,应使用一般ASCII码字符作为文件名,不得与平台中现有的程序同名,否则会发生冲突。

  ---- 11. 如果您编写的程序是GUI程序,则在使用AWT组件时,应使用Java布局管理器,而不是硬性设置组件的大小和位置(layout manager)设置和管理视觉组件的大小和位置,否则可能会造成布局混乱。 ---- 12. 由于不同的操作系统,不同的机器,系统支持不同的颜色和屏幕的大小和分辨率,如何获得这些属性?

  ---- 12. 由于操作系统不同,机器不同,系统支持不同的颜色、屏幕大小和分辨率,如何获得这些属性?使用java.awt.Systemcolor类可以获得所需的颜色,如inactivecaption 是窗框中活动标题的背景颜色,menu是菜单的背景颜色。使用java.awt.toolkit的getscrenresolution可以“象素每英寸”作为单位显示屏幕的分辨率。这种getscrensize可以获得屏幕大小(英寸),loadsystemcolors可以列出所有系统颜色。 ---- 这些注意事项有的来自参考文献,有的来自长期编写Java程序的经验,相信会对你的程序设计有所帮助。

上一篇 Java代码编写的一般性指导
下一篇 Java 的可移植性

文章素材均来源于网络,如有侵权,请联系管理员删除。