Java跨平臺(tái)程序設(shè)計(jì)規(guī)則
不是說(shuō)所有的Java程序都具有Java跨平臺(tái)的特性,事實(shí)上,相當(dāng)一部分的Java程序是不能在別的操作系統(tǒng)上正確運(yùn)行的,那么如何才能編寫一個(gè)真正的跨平臺(tái)的Java程序呢?下面是在編寫跨平臺(tái)的Java程序是需要注意的一些事情。
跨平臺(tái)Java程序設(shè)計(jì)的規(guī)則
使用Java語(yǔ)言編寫應(yīng)用程序***的優(yōu)點(diǎn)在于“一次編譯,處處運(yùn)行”,然而這并不是說(shuō)所有的Java程序都具有Java跨平臺(tái)的特性,事實(shí)上,相當(dāng)一部分的Java程序是不能在別的操作系統(tǒng)上正確運(yùn)行的,那么如何才能編寫一個(gè)真正的跨平臺(tái)的Java程序呢?下面是在編寫跨平臺(tái)的Java程序是需要注意的一些事情:
◆1.編寫Java跨平臺(tái)應(yīng)用程序時(shí),你可以選擇JDK1.0,1.1,1.2或支持它們的GUI開(kāi)發(fā)工具如:Jbuilder,VisualAgeforJava等等,但是必須注意你的Java程序只能使用Java核心API包,如果要使用第三方的類庫(kù)包,則該類庫(kù)包也要由Java核心包開(kāi)發(fā)完成,否則在發(fā)布你的程序的時(shí)候還得將支持該Java類庫(kù)包的JVM發(fā)布出去。也就是說(shuō),你的程序需要是100%純Java的。舉一個(gè)例子,VisualJ++就不是純Java的,由VisualJ++編寫的程序也就不具有平臺(tái)無(wú)關(guān)性。
◆2.無(wú)論你使用的是JDK或其他開(kāi)發(fā)工具,在編譯時(shí)都要打開(kāi)所有的警告選項(xiàng),這樣編譯器可以盡可能多的發(fā)現(xiàn)平臺(tái)相關(guān)的語(yǔ)句,并給出警告。雖然不能保證沒(méi)有編譯時(shí)警告錯(cuò)誤的程序一定是跨平臺(tái)的,但含有警告錯(cuò)誤的程序卻很有可能是非平臺(tái)無(wú)關(guān)的。
◆3.在程序中使用任何一個(gè)方法的時(shí)候,要詳細(xì)察看文檔,確保你使用的方法不是在文檔中已經(jīng)申明為過(guò)時(shí)的方法(Deprecatedmethod),也不是文檔中未標(biāo)明的隱含方法(Undocumentedmethod)。
◆4.退出跨平臺(tái)Java程序時(shí)盡量不要使用java.lang.System的exit方法。Exit方法可以終止JVM,從而終止程序,但如果同時(shí)運(yùn)行了另一個(gè)Java程序,使用exit方法就會(huì)讓該程序也關(guān)閉,這顯然不是我們希望看到的情況。事實(shí)上要退出Java程序,可以使用destory()退出一個(gè)獨(dú)立運(yùn)行的過(guò)程。對(duì)于多線程程序,必須要關(guān)閉各個(gè)非守護(hù)線程。只有在程序非正常退出時(shí),才使用exit方法退出程序。
◆5.避免使用本地方法和本地代碼,盡可能自己編寫具有相應(yīng)功能的Java類,改寫該方法。如果一定要使用該本地方法,可以編寫一個(gè)服務(wù)器程序調(diào)用該方法,然后將現(xiàn)在要編寫的程序作為該服務(wù)器程序的客戶程序,或者考慮CORBA(公共對(duì)象請(qǐng)求代理)程序結(jié)構(gòu)。
◆6.Java中有一個(gè)類似于Delphi中的winexec的方法,java.lang.runtime類的exec方法,作為該方法本身是具有平臺(tái)無(wú)關(guān)性的,但是給方法所調(diào)用的命令及命令參數(shù)卻是與平臺(tái)相關(guān)的,因此,在編寫程序時(shí)要避免使用,如果一定要調(diào)用其他的程序的話,必須要讓用戶自己來(lái)設(shè)置該命令及其參數(shù)。比如說(shuō),在windows中可以調(diào)用notepad.exe程序,在linux中就要調(diào)用vi程序了。
【編輯推薦】