<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 9, comments - 4, trackbacks - 0, articles - 21

    編寫跨平臺Java程序的幾個要點

    Submitted by robertb9527 on 八月 8, 2004 - 12:50.

    用Java編寫程序最大的優(yōu)點在于“一次編譯,處處運行”,可是事實上,相當(dāng)一部分的Java程序不能在別的操作系統(tǒng)上正確運行,最后倒搞成了“一次編寫,處處調(diào)試”,那么如何才能編寫一個真正的跨平臺的Java程序呢?下面有幾個要點要注意:

      1.你的程序需要是100%純Java的。特別是使用第三方的類庫包時一定要注意這一點。

      2.無論你使用的是JDK或其他開發(fā)工具,在編譯時都要打開所有的警告選項,這樣編譯器可以盡可能多的發(fā)現(xiàn)平臺相關(guān)的語句,并給出警告。雖然不能保證沒有編譯時警告的程序一定是跨平臺的,但含有警告的程序卻很有可能是非平臺無關(guān)的。

      3.由于JDK是向下兼容的,因此可以使用過時的方法(Deprecated method),但調(diào)試時要打開-deprecation選項。

    4.退出Java程序時盡量不要使用java.lang.System的exit方法。Exit 方法可以終止JVM,從而終止程序,但如果同時運行了另一個Java程序,使用exit方法就會讓該程序也關(guān)閉,這顯然不是我們希望看到的情況。事實上要 退出Java程序,可以使用destory()退出一個獨立運行的線程。對于多線程程序,必須要關(guān)閉各個非守護線程。只有在程序非正常退出時,才使用 exit方法退出程序。

      5.避免使用本地方法和本地代碼,盡可能自己編寫具有相應(yīng)功能的Java類,改寫該方法。如果一定要使用該本地方法,可以編寫一個服務(wù)器程序調(diào)用該方法,然后將現(xiàn)在要編寫的程序作為該服務(wù)器程序的客戶程序,或者考慮CORBA(公共對象請求代理)程序結(jié)構(gòu)。

    6.Java中有一個類似于Delphi中的winexec的方法,java.lang.runtime類的exec方法,作為該方法本身是具有平臺無 關(guān)性的,但是給方法所調(diào)用的命令及命令參數(shù)卻是與平臺相關(guān)的,因此,在編寫程序時要避免使用,如果一定要調(diào)用其他的程序的話,必須要讓用戶自己來設(shè)置該命 令及其參數(shù)。比如說,在windows中可以調(diào)用notepad.exe程序,在linux 中就要調(diào)用vi程序了。

      7.注意并不是所有的操作系統(tǒng)都支持Unicode字符集,這對于跨平臺的Java中文軟件程序不能不說是一大噩耗。

    8.在程序中不要硬性編碼與平臺相關(guān)的任何常量,比如行分隔符,文件分隔符,路徑分隔符等等,這些常量在不同的平臺上是不同的,比如文件分隔符,在 UNIX和MAC中是“/”,在windows中是“"”,如果要使用這些常量,需要使用jdava.util.Properties類的 getProperty方法,如java.util.Properties.getProperty(“file.separator”)可以獲得文件分 隔符,getProperty (“line.separator”)返回行分隔符,getProperty(“path.separator”)返回路徑分隔符。

    9.在編寫跨平臺的網(wǎng)絡(luò)程序時,不要使用java.net.InetAddress類的getHostName方法得到主機名,因為不同的平臺的主機名 格式是不同的,最好使用getAddress得到格式相同的IP地址,另外,程序中所有的主機名都要換成IP地址,比如www.b9527.net就要換 成相應(yīng)的IP地址。

      10.涉及文件操作的程序需要注意:不要在程序中硬性編碼文件路徑,而且不同平臺對于文件名使用的字符及最大文件名長度的要求不同,編寫你的程序的時候要使用一般的ASCII碼字符作為文件的名字,而且不能與平臺中已存在的程序同名,否則會造成沖突。

      11.如果你寫的程序是GUI程序,在使用AWT組件時不要硬性設(shè)置組件的大小和位置而應(yīng)該使用Java的布局管理器來設(shè)置和管理可視組件的大小和位置,否則有可能造成布局混亂。

    12.由于不同的操作系統(tǒng),不同的機器,系統(tǒng)支持的顏色和屏幕的大小和分辨率都不同,如何獲得這些屬性呢?使用 java.awt.Systemcolor類可以獲得需要的顏色,如該類的inactiveCaption 就是窗口邊框中活動標(biāo)題的背景顏色,menu則是菜單的背景顏色。使用java.awt.Toolkit的getScreenResolution可以以 “像素每英寸”為單位顯示屏幕的分辨率。該類的getScreenSize可以得到屏幕大小(英寸),loadSystemColors可以列出所有的系 統(tǒng)顏色。

    主站蜘蛛池模板: 亚洲精品少妇30p| 免费一级毛片不卡在线播放| 中文字幕亚洲综合久久菠萝蜜 | 亚洲毛片免费视频| 国产成人久久AV免费| 日本亚洲欧洲免费天堂午夜看片女人员| 一本久久A久久免费精品不卡| 亚洲成AⅤ人影院在线观看 | 中文字幕免费播放| 亚洲精品乱码久久久久久按摩 | mm1313亚洲精品无码又大又粗| 亚洲av成人无码网站…| 俄罗斯极品美女毛片免费播放| 香蕉97碰碰视频免费| 久久精品国产精品亚洲人人| 91免费在线视频| 久久久亚洲欧洲日产国码aⅴ | 国产乱弄免费视频| 男人免费视频一区二区在线观看| 亚洲国产成人精品久久久国产成人一区二区三区综 | 色欲aⅴ亚洲情无码AV蜜桃| 国产精品酒店视频免费看| 老外毛片免费视频播放| 亚洲精品无码不卡在线播HE| 99久久久国产精品免费牛牛| 亚洲xxxx18| 亚洲精品无码专区久久同性男| 你懂的免费在线观看| 亚洲伊人久久大香线蕉啊| 国产精品四虎在线观看免费| 久久一区二区免费播放| 亚洲黄网在线观看| 性做久久久久免费看| 免费观看一区二区三区| 亚洲人成网网址在线看| 亚洲?V乱码久久精品蜜桃| 久久综合九色综合97免费下载| 亚洲中文字幕一二三四区苍井空| 一区国严二区亚洲三区| 91九色视频无限观看免费| aa午夜免费剧场|