閱讀以下關(guān)于數(shù)據(jù)通信方面的敘述,回答問題1和問題2。
數(shù)據(jù)通迅是當前十分活躍與熱門的計算機與信息技術(shù)的應(yīng)用領(lǐng)域。某大型通信公司開發(fā)了其業(yè)務(wù)的主要支撐平臺(也叫做“通信信息服務(wù)平臺”)用于在全國與全球開展數(shù)據(jù)業(yè)務(wù)的需要。該平臺是一個典型的Java技術(shù)應(yīng)用于Internet的項目。馬工程師提出在全系統(tǒng)中強以這樣來用的Java構(gòu)架系統(tǒng):
(1)該系統(tǒng)可分為4層,分別是Browser、表示層、中間件層和數(shù)據(jù)層。
(2)表示層用Java中的JavaScript來實現(xiàn)頁面輸出。
(3)中間件層用Java來實現(xiàn)CORBA,即實現(xiàn)Component(構(gòu)件),主要實現(xiàn)業(yè)務(wù)邏輯的封裝與復(fù)用。
(4)數(shù)據(jù)層主要是數(shù)據(jù)庫和存儲過程的實現(xiàn)。
在應(yīng)用Java技術(shù)時,馬工程師所采用的技術(shù)和策略可大致上歸納為以下5個方面:
(1)使JavaScript盡量簡單,因為JavaScript在系統(tǒng)中是放在服務(wù)器端執(zhí)行的,該語言是通過一個解釋執(zhí)行的,相對速度很慢,采用了兩臺HP前置機來運行JavaScript,但是其運行速度還是不理想,所以在設(shè)計中把JavaScript僅用來顯示從中間件層所得到的數(shù)據(jù),生成動態(tài)頁面。在最初的設(shè)計中表示層(JavaScript)曾承擔(dān)了一些業(yè)務(wù)邏輯處理操作,導(dǎo)致效率不理想,因此,不得不盡量地減少JavaScript的程序量。
(2)用Java實現(xiàn)CORBA時,應(yīng)盡量考慮共享和復(fù)用。在本系統(tǒng)中,最初的設(shè)計是讓Java在實現(xiàn)Component時,只是執(zhí)行一些數(shù)據(jù)庫表的操作,導(dǎo)致表示層的負載較大。后來重新設(shè)計時,總結(jié)歸納了所有的UseCase,找出了其中可供共享和復(fù)用的接口,把相同的業(yè)務(wù)邏輯操作封裝到一個接口中去。因為Java的執(zhí)行效率比JavaScript要高,因此提高了系統(tǒng)效率。
(3)由于在別的項目中,該公司曾大量地使用過Java中的JSP技術(shù)和Servlet技術(shù),為了得到系統(tǒng)的一些執(zhí)行速率的數(shù)據(jù),采用了一個著名的壓力測試軟件—LoadRunner來測試這兩種技術(shù)的差別。測試表明:用JSP和Servlet完成同樣的一個操作,并且保證是在相同的測試環(huán)境中(相同服務(wù)器、壓力測試工作站與數(shù)據(jù)庫環(huán)境),得到的測試數(shù)據(jù)卻有著很大差別,JSP完成一個操作的平均執(zhí)行時間在致會是Servlet程序的兩倍,在一個企業(yè)級應(yīng)用項目中,這可能是一個很關(guān)鍵的瓶頸。因此,我們得出的結(jié)論是:在可能的條件下,盡量地多使用Servlet。當然,與Servlet相比,JSP編程快速,修改方便,在訪問量不是很大的應(yīng)用場合下也是可以接受的。
(4)使用Java作為整體解決方案時,應(yīng)盡量使用相同版本的JDK。在用Java作為編程語言的項目中,幾乎大多要遇到“漢字”問題,即Java在沒有經(jīng)過轉(zhuǎn)換的情況下,在輸出漢字時,很可能會出現(xiàn)亂碼。采用不同版本的JDK,解決的方案是不一樣的,比如V1.2.2版本的JDK和V1.3版本的JDK解決方法就會有一些不一樣,把V1.2.2的Java程序放在V1.3的JDK中,就不能順利輸出漢字了.其根本原因在于Java使用了Unicode編碼,和中國的國標編碼不一樣.所以在這個意義上一些人竭力鼓吹的”一次編寫,到處運行”似乎不一定能在所有的場合都行得通.
(5)使用Java時,應(yīng)盡量遵從軟件規(guī)范.在Java中有一個JVM的概念,即在Java虛擬機中使用了一個垃圾收集器,專門用來回收內(nèi)存。但是該垃圾收集器在給編程人員帶來方便的同時,也隱埋下了隱患。在程序設(shè)計中,并不能強制執(zhí)行垃圾收集器,因此我們要求:在Try,Catch之后必須明確要求回收內(nèi)存(當然,也只能是通知垃圾收集器來回收垃圾),這樣可以有效地提高系統(tǒng)穩(wěn)定性。
但是在使用Java作為解決方案時,也遇到很多頭疼的問題,這些問題導(dǎo)致同時執(zhí)行的并發(fā)性比較差,系統(tǒng)速度慢等等。歸納起來看,曾遇到過的主要具體的問題有:
(1)用Java來實現(xiàn)CORBA中的Component,有時效率會比較低。
(2)用Java來建立數(shù)據(jù)庫連接往往會比較慢。
(3)用JSP編程時容易導(dǎo)致系統(tǒng)信息的擴散。比如,如果有黑客攻擊一臺運行JSP程序的服務(wù)器,他可以故意地輸入一些非法字符或異常信息給JSP程序,于是程序執(zhí)行將出現(xiàn)異常。這時,就會在頁面上打印出相應(yīng)的錯誤信息。很不幸的是,這些信息極有可能暴露出這臺服務(wù)器的JDK的版本號與路徑信息等內(nèi)容。這往往容易讓黑客們有機可乘,在可能去抓住系統(tǒng)的漏洞。
【問題1】
試提出馬工程師遇見的3個問題的解決方案,并各用80字以內(nèi)文字說明理由。
【問題2】
Java語言作為一種快捷、穩(wěn)定的計算機語言,開發(fā)基于因特網(wǎng)應(yīng)用的項目大多是相當穩(wěn)定和比較適用的。試用200字描述Java的應(yīng)用前景。
參考答案:
【問題1】
(1)盡量減少Component所執(zhí)行的業(yè)務(wù)邏輯量。爭取把能夠放在存儲過程中實現(xiàn)的操作,盡可能在存儲過程中加以實現(xiàn)。數(shù)據(jù)庫的存儲過程操作比起在Java程序中執(zhí)行數(shù)據(jù)庫操作要快得多。
(2)既然用Java建立數(shù)據(jù)庫連接比較慢,就可以把數(shù)據(jù)庫連接封裝成連接池(Connnect Pool),從而能非常有效地提高系統(tǒng)效率。
(3)可以不從程序入手,而從Web Server著手,把Apache配置成為使這類異常信息不再打印出來,而是使之僅出現(xiàn)一個通用的異常說明的頁面。
【問題2】
(1)在因特網(wǎng)上將會有更加廣泛的應(yīng)用。
(2)在嵌入式設(shè)備中,Java也大有用武之地。比如,在最新推出的Java技術(shù)中,Java已經(jīng)進入了手機領(lǐng)域。
(3)Java程序大多以線程運行,占用資源少,會逐步代替ASP與CGI程序。根據(jù)第三方測試表明,JSP程序比ASP程序要快2倍以上。用JSP代替ASP應(yīng)是大勢所趨。
(4)Java在無線互聯(lián)網(wǎng)中的應(yīng)用將會更加廣泛。Java支持WAP,可以方便地用Java開發(fā)WAP程序,實現(xiàn)WAP應(yīng)用。
(5)Java與XML的無縫連接使Java在數(shù)據(jù)傳輸和異構(gòu)網(wǎng)絡(luò)通信方面有著很大的優(yōu)勢。
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |