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

原创 2001年02月18日 21:33:00

欢迎光临娇娃虚拟社区    www.dukejava.com

---- 使用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. 在程序中使用任何一个方法的时候,要详细察看文档,确保你使用的方法不是在文档中已经申明为过时的方法(Deprecated method),也不是文档中未标明的隐含方法(Undocumented method)。

---- 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方法得到主机名,因为不同的平台的主机名格式是不同的,最好使用getAddress得到格式相同的IP地址,另外,程序中所有的主机名都要换成IP地址,比如www.263.net就要换成相应的IP地址。

---- 10. 涉及文件操作的程序需要注意:不要在程序中硬性编码文件路径,理由和8中一样,只是这一点特别重要,因此单独提出。而且,不同平台对于文件名使用的字符及最大文件名长度的要求不同,编写你的程序的时候要使用一般的ASCII码字符作为文件的名字,而且不能与平台中已存在的程序同名,否则会造成冲突。

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

---- 12. 由于不同的操作系统,不同的机器,系统支持的颜色和屏幕的大小和分辨率都不同,如何获得这些属性呢?使用java.awt.Systemcolor类可以获得需要的颜色,如该类的inactiveCaption 就是窗口边框中活动标题的背景颜色,menu则是菜单的背景颜色。使用java.awt.Toolkit的getScreenResolution可以以“象素每英寸”为单位显示屏幕的分辨率。该类的getScreenSize可以得到屏幕大小(英寸),loadSystemColors可以列出所有的系统颜色。

---- 这些注意事项有些是来自参考文献,有些是自己长期编写Java程序的经验所得,相信对你的程序设计会有所帮助。

Java 开发中的那些注意事项

1、 关于if、else、for 如果我们的代码中出现以下if、else情况 If( “a”.equal(str)) { If(“”){ for(){ } } else { If (“”...
  • thl331860203
  • thl331860203
  • 2016年06月06日 11:58
  • 1452

java代码编写注意事项

去掉程序中没用到的jar包,js文件等。 将css放在html页面的顶部,而把js放在html页面的底部 1.尽量指定类的final修饰符 带有final修饰符的类是不可派生的。在Java核心AP...
  • honey_Claire
  • honey_Claire
  • 2014年04月15日 10:40
  • 4221

编写软件测试用例需注意哪些?

话说作为一个测试人员,测试用例的设计与编写是一项必须掌握的能力,若想写出有效的测试用例则需要多方面的技术知识。平时工作遇到功能测试较多,但过多是敏捷型的,涉及少。我认为认真仔细的写好测试用例是有必要的...
  • yuhuijun_1
  • yuhuijun_1
  • 2013年02月25日 17:25
  • 3187

写代码时注意事项

有些是专门针对web前端,有些则都适用.这些注意事项不写,可能不会影响你想表达的效果.但是,你若想在这方面深入了解,甚至从事这一行业的话,那么这一定是硬性要求,既方便自己检查,也方便别人查看, 1...
  • u012967952
  • u012967952
  • 2013年11月28日 23:50
  • 755

Socket编程服务端原理简单介绍

socket中文翻译是套接字,但是这样并不好理解,还是把它比喻为多人通话好一点. socket中的服务器:如果只有两人通话的时候,其实不能叫做服务器,直接叫对讲机好了,就是我们互相连接,然后你发信息...
  • qq_18297675
  • qq_18297675
  • 2016年04月03日 20:25
  • 658

java编程的注意事项

1.在继承关系中子类方法的保护等级不能高于父类。 2.foreach 循环在用于输出时是没有角标和计数器的,而是直接抛出对应数组元素。 3.在循环中输入比较条件是要使用比较运算符=...
  • eclipse_yin
  • eclipse_yin
  • 2016年04月05日 20:08
  • 428

汇编语言编程中应当注意的几大规范

1.压栈弹栈操作必须在同一个程序段中完成。同一个程序段的意思是:要么弹栈压栈都在主程序段,要么在某一个特定的子程序段。绝对不可以在主程序段压栈,在某个子程序段弹栈,看着好像这样可以在主程序与子程序段之...
  • zisishen4200
  • zisishen4200
  • 2016年11月27日 19:21
  • 341

接口开发注意事项

第一:接口开发的流程问题。   接口开发的大致流程: 1.和第三方讨论需要实现哪些接口。 重点是要确定每个接口的具体功能。接口参数在开发过程中常常会有变动,所以讨论中一般不会明确定义。...
  • u010854543
  • u010854543
  • 2013年11月01日 23:35
  • 2604

编写C语言的注意事项

看看一些C语言的知识要点及注意事项。   1、 Switch   先来看一个简单的实例   Switch(cmd){   Case 1:func1();break; ...
  • qq_36955347
  • qq_36955347
  • 2017年05月10日 22:26
  • 107

编写 hpp文件注意事项

原文地址 http://blog.csdn.net/liuzhanchen1987/article/details/7270005  hpp,其实质就是将.cpp的实现代码混入.h头文件当中,定义与实...
  • zkl99999
  • zkl99999
  • 2015年04月22日 10:38
  • 571
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:编写跨平台Java程序注意事项
举报原因:
原因补充:

(最多只允许输入30个字)