当前位置:天才代写 > tutorial > JAVA 教程 > 跨平台Java措施设计的十二条法则

跨平台Java措施设计的十二条法则

2017-11-11 08:00 星期六 所属: JAVA 教程 浏览:379

利用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措施的履历所得,相信对你的措施设计会有所辅佐。

 

    关键字:

天才代写-代写联系方式