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

编写跨平台Java程序注意事项,第1张

编写跨平台Java程序注意事项,第2张

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

用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的。比如Visual J++不是纯Java,Visual J++写的程序是平台无关的。

2.无论是使用JDK还是其他开发工具,编译时都要打开所有的警告选项,这样编译器就能找到尽可能多的平台相关语句并给出警告。虽然不能保证编译时没有警告错误的程序一定是跨平台的,但是有警告错误的程序很可能是平台无关的。

3.在程序中使用任何方法时,都要仔细检查文档,确保使用的方法不是文档中已经声明的过时方法,也不是文档中没有标记的隐式方法。

4.退出java程序时尽量不要使用java.lang.System的exit方法。Exit方法可以终止JVM,从而终止程序。但是,如果同时运行另一个Java程序,使用exit方法会使程序关闭,这显然不是我们希望看到的。事实上,要退出Java程序,可以使用destory()来退出一个独立的进程。对于多线程程序,必须关闭所有非守护进程线程。只有当程序异常退出时,才使用exit方法退出程序。

5.避免使用本地方法和本地代码,尽可能自己编写对应函数的Java类,重写这个方法。如果一定要用这个本地方法,可以写一个服务器程序调用这个方法,然后把现在要写的程序作为这个服务器程序的客户端程序,或者考虑CORBA(通用对象请求代理)程序结构。

6.Java中有一个类似于Delphi中winexec的方法,java.lang.runtime类的exec方法。因为该方法本身是平台无关的,但是调用该方法的命令和命令参数是平台相关的。所以写程序的时候要避免。如果必须调用其他程序,用户必须自己设置命令及其参数。比如notepad.exe程序可以在Windows中调用,vi程序会在Linux中调用。

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。

10.涉及文件操作的程序需要注意:不要在程序中硬编码文件路径。原因和8中一样,但这一点特别重要,所以单独提出。而且不同的平台对文件名使用的字符和文件名的长度都有不同的要求。写你的程序时,要用通用的ASCII字符作为文件名,不能和平台中已有的程序重名,否则会造成冲突。

11.如果你写的程序是GUI程序,在使用AWT组件时不能硬性设置组件的大小和位置,而应该使用Java layout manager来设置和管理可视化组件的大小和位置,否则可能会造成布局混乱。

12.由于不同的操作系统,不同的机器,支持的颜色和屏幕大小和分辨率是不同的,我们如何才能得到这些属性?您可以使用java.awt.Systemcolor类来获取所需的颜色。例如,该类的inactiveCaption是窗口边框中活动标题的背景色,menu是菜单的背景色。java.awt.Toolkit的GetScreenResolution可以显示屏幕的分辨率,单位为每英寸像素。这个类的getScreenSize可以获取屏幕大小(英寸),loadSystemColors可以列出所有的系统颜色。

这些笔记有的来自参考文献,有的来自我长期编写Java程序的经验。相信对你的编程会有帮助。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 编写跨平台Java程序注意事项

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情