摘要:在預(yù)設(shè)的Java架構(gòu)下,調(diào)用特有的本地程序。與此同時,調(diào)用的那個程序,與被調(diào)用的那個程序,要實現(xiàn)特有的數(shù)據(jù)互通。調(diào)研數(shù)值表明:數(shù)據(jù)通信路徑下的這種方式,是帶有可行性的;它替換了慣用的JNI,JNI架構(gòu)下的程序調(diào)用,也可以被省略。
關(guān)鍵詞:Java 應(yīng)用程序 數(shù)據(jù)通信
1 概要的新穎通信
比對慣用的語言,Java這一新穎語言,創(chuàng)設(shè)了一次編程路徑下的多處執(zhí)行,實現(xiàn)了特有的跨平臺。若安設(shè)了Java架構(gòu)下的編譯程序,則可以銜接起各類處理器、現(xiàn)有的不同平臺。然而,Java雖帶有可移植這一優(yōu)勢,卻也增添了原初的調(diào)用麻煩。這是因為,C++架構(gòu)下的語言,若調(diào)用慣常的本地程序,只要明晰頭文件固有的包含即可;然而,Java架構(gòu)下的調(diào)用,就要依循JNI特有的約定指標,予以進行。
最近幾年,CORBA這一新穎技術(shù),逐漸替換掉了原初的JNI。某些情形下,JNI特有的本地調(diào)用,是應(yīng)被接納的。例如:若要選用偏舊的數(shù)據(jù)庫,或者銜接硬件驅(qū)動,或者銜接預(yù)設(shè)的操作平臺,就要接納JNI。再如:為了延展原初的程序性能,便利接續(xù)的交互,也要安設(shè)JNI。然而,若要依循設(shè)定好的標準,去接納數(shù)據(jù)或互通結(jié)果,就不能安設(shè)這樣的JNI,應(yīng)當安設(shè)更便捷的、可用的流程。非源代碼架構(gòu)下的程序調(diào)用,可以調(diào)用預(yù)設(shè)的編譯程序,并創(chuàng)設(shè)互通的路徑。
2 調(diào)用既有的本地程序
若要調(diào)用既有的本地程序,則要接納可用的對象。通過設(shè)定好的這個對象,原初的應(yīng)用程序,就能在創(chuàng)設(shè)的環(huán)境下,實現(xiàn)互通關(guān)聯(lián)。這一對象能供應(yīng)的路徑,是靜態(tài)工廠的新穎方法。調(diào)用這一方法,可以獲取關(guān)涉對象的、唯一的那個實例??捎玫倪@個對象,就是創(chuàng)設(shè)出來的runtime。對象涵蓋了偏多的可用路徑,這樣的路徑,能執(zhí)行特有的外部命令、搜集現(xiàn)有的運行垃圾、返回原初的內(nèi)存、安設(shè)最優(yōu)的動態(tài)庫。例如:可以安設(shè)這樣的對象,調(diào)用平臺架構(gòu)下的記事本這個程序,以便互通和運行。
調(diào)用既有的exec,能產(chǎn)生出可用的本地進程;與此同時,還能返回特有的子類實例。獲取到的這一實例,可以管控關(guān)涉的進程,以便明晰關(guān)涉的進程信息。Exec架構(gòu)下的多樣方法,創(chuàng)設(shè)出來的子進程,都沒能銜接原初的終端,或者原初的控制臺。為此,子進程固有的IO,都要經(jīng)由初始路徑,重設(shè)可用的定向,以便傳送給固有的父進程。因此,用戶若要執(zhí)行,就很難明晰Is這一命令特有的返回數(shù)值。用戶若要接納這一返回結(jié)果,則要調(diào)動起其他流程,以便輸出原初的子進程。在這以后,把獲取到的數(shù)值,在預(yù)設(shè)的主進程架構(gòu)下,予以輸出。
3 數(shù)據(jù)運送的路徑
創(chuàng)設(shè)進程的那些輸出及輸入,都要被預(yù)設(shè)的父進程管控。利用這一狀態(tài),可在現(xiàn)有的父子進程架構(gòu)內(nèi),妥善傳遞數(shù)值。返回的特有數(shù)值,會銜接起子進程原初的輸入。把這一范疇的output,劃歸到現(xiàn)有的子進程,當成輸入范疇內(nèi)的讀入數(shù)值。這樣的數(shù)據(jù)流,帶有緩沖的特性。子進程在預(yù)設(shè)的輸出端,若要寫下數(shù)值,則可從預(yù)設(shè)的數(shù)據(jù)流,來讀取數(shù)值。例如:父進程接納了這一程序:把rt看成原初的對象,把xxv1看成原初的子進程。S這一字符,被看成特有的啟動命令;接納的字符串,被劃歸進ch以內(nèi)。最后,把接納的多樣數(shù)據(jù),妥善予以顯示。
Java特有的通信支持,涵蓋了TCP范疇的新穎通信、數(shù)據(jù)報范疇的通信。在這之中,數(shù)據(jù)報特有的通信,要依循設(shè)定好的UDP,當成原初的協(xié)議。這一通信路徑的速率很快,為此,這樣的路徑,也帶有多樣用途。網(wǎng)絡(luò)游戲多安設(shè)了UDP范疇內(nèi)的通信協(xié)議,這是因為,網(wǎng)絡(luò)通信既有的速率大小,會關(guān)涉游戲流程應(yīng)有的順暢性。Java這一語言特有的通信中,發(fā)送和接納的數(shù)值,都被存留在預(yù)設(shè)的數(shù)據(jù)包??蛻翥暯拥姆?wù)器以內(nèi),可以安設(shè)關(guān)涉的這種對象,然后經(jīng)由接收路徑,接納數(shù)據(jù)包,再經(jīng)由send范疇的發(fā)送路徑,去發(fā)出這一數(shù)據(jù)包。
Java這一語言以內(nèi),表征數(shù)據(jù)包的特有對象,涵蓋了packet。數(shù)據(jù)報通信銜接的數(shù)據(jù)包,都要明晰自身的走向。例如:特有的構(gòu)造函數(shù),可以創(chuàng)設(shè)原初的類對象。它創(chuàng)設(shè)了可用的數(shù)據(jù)報,并銜接起主機固有的某一端口。若數(shù)據(jù)報沒能被妥善創(chuàng)設(shè),或者沒能妥善銜接固有的端口,則顯示特有的異常狀態(tài)。返回路徑下,數(shù)據(jù)包存留了被接納的數(shù)值,要慎重查驗IO這樣的誤差。
4 結(jié)束語
實際上,數(shù)據(jù)傳遞慣常的路徑,可以分出多種,例如:選取可用的管道、可用的流文件,都能傳遞既有的數(shù)據(jù)。本文描畫出來的傳遞路徑,仍舊停留在慣常的靜態(tài)傳遞;若能更替原初的代碼,還能夠創(chuàng)設(shè)動態(tài)架構(gòu)下的數(shù)據(jù)更新。Java這一路徑下的方法,要求接納輸入數(shù)值,以及特有的輸出數(shù)值;若沒能接納這樣的數(shù)值,就很難去傳遞??梢赃x取預(yù)設(shè)的環(huán)境變量,來化解掉這樣的依賴性,以便順暢傳遞。
參考文獻:
[1]王皖陵.在Java中應(yīng)用程序間數(shù)據(jù)通信的一種方法[J].安徽工業(yè)大學(xué)學(xué)報(自然科學(xué)版),2005(01).
[2]周亦敏,張生.Java中Excel操作類的設(shè)計與實現(xiàn)[D].上海理工大學(xué)學(xué)報,2007(02).
[3]趙紅宇,黎茂鋒,劉志勤.Java/COM集成技術(shù)研究[J].西南科技大學(xué)學(xué)報,2004(02).
作者簡介:
晁永蘭(1980-),女,青海海東人,長安大學(xué)本科,講師,研究方向:計算機應(yīng)用。