田亮
(杭州師范大學錢江學院,浙江 杭州 310012)
平臺無關是指Java能運行于不同的平臺。Java引進虛擬機原理,并運行于虛擬機,實現不同平臺的Java接口之間。使用Java編寫的程序能在世界范圍內共享。Java的數據類型與機器無關,Java虛擬機(Java Virtual Machine)是建立在硬件和操作系統之上,實現Java二進制代碼的解釋執行功能,提供于不同平臺的接口的。
Java的編程類似C++,學習過C++的讀者將很快掌握Java的精髓。Java舍棄了C++的指針對存儲器地址的直接操作,程序運行時,內存由操作系統分配,這樣可以避免病毒通過指針侵入系統。Java對程序提供了安全管理器,防止程序的非法訪問。
Java吸取了C++面向對象的概念,將數據封裝于類中,利用類的優點,實現了程序的簡潔性和便于維護性。類的封裝性、繼承性等有關對象的特性,使程序代碼只需一次編譯,然后通過上述特性反復利用。
Java建立在擴展TCP/IP網絡平臺上。庫函數提供了用HTTP和FTP協議傳送和接受信息的方法。這使得程序員使用網絡上的文件和使用本機文件一樣容易。
Java致力于檢查程序在編譯和運行時的錯誤。類型檢查幫助檢查出許多開發出現的錯誤。Java自己操縱內存減少了內存出錯的可能性。Java還實現了真數組,避免了覆蓋數據的可能,這些功能特征大大提高了開發Java應用程序的周期。并且Java還提供了Null指針檢測、數組邊界檢測、異常出口、Byte code校驗等功能。
Java技術自1995年問世以來,在我國的應用和開發也得到了迅速普及,總體來看,這些應用主要集中于企業應用開發。據有關單位調查顯示,從開發領域的分布情況上看Web開發占了一半以上,為57.9%,JavaME移動或嵌入式應用占15%,C/S應用占11.7%,系統編程占15.4%。近30%的開發者用Java從事C/S應用或系統級應用的開發。在桌面應用上,盡管Java在桌面GUI方面尚有不盡如人意之處,但仍然有很多開發者用來開發運行在多種操作系統平臺上的桌面應用。具體應用在如下幾個領域。
由于 Sun、IBM、Oracle、BEA 等國際廠商相繼推出各種基于Java技術的應用服務器以及各種應用軟件,帶動了Java在金融、電信、制造等領域日益廣泛的應用。如清華大學計算機系利用Java、XML和Web技術研制開發了多個軟件平臺,東方科技的Tong Web、金碟的Apusic、中創的Inforweb等J2EE應用服務器及和佳ERP和寶信ERP等ERP產品,已在許多企業得到應用。
東方科技、金碟、中創等開發的J2EE應用服務器在電子政務及辦公自動化中也得到應用:如金碟的Apusic在民政部、廣東省市工商局應用;東軟電子政務架構EAP平臺在社會保險、公檢法、稅務系統得到應用;中創的Inforweb等Infor系列中間件產品在國家海事局、政府機關、銀行等金融系統應用;基于Java平臺開發的國產化集成辦公軟件"Office"也已在一些省市政府部門得到應用。
無線設備、通信終端、醫療設備、信息家電(如數字電視、機頂盒、電冰箱)、汽車電子設備等是今年以來比較熱門的Java應用領域。在這方面的應用有中國聯通CDMA 1X網絡中基于Java技術的無線數據增值服務。
在輔助教學方面,東南大學與中興通訊公司開發了遠程教學系統,用于本地網上教學、課后學習和異地遠程教育,清華大學用Java進行了"計算機軟件基礎課"教學改革,分析研究Java教學軟件的漢化方案,電子科技大學應用Java RMI技術進行遠程教育,西安電力高等專科學校采用Java技術,開發了交互式電站仿真系統,實現電站鍋爐仿真、鍋爐膛火焰仿真,為實現網上仿真進行有益探索。
3.1 政府主管部門要把Java技術及應用作為落實“十二五”軟件及信息產業發展規劃的重要環節,繼續支持開發有自主版權的軟件產品,支持建立Java技術產品評測中心,加強對相關產品的質量監管。
3.2 各行業主管部門及行業協會應積極組織軟件企業開發基于Java的行業應用軟件,有條件的可以建立行業軟件組件庫,這是防止低水平重復開發,加快國產軟件商品化、產業化的有效辦法。
3.3 通過學會、協會與有關企業合作,繼續組織各種類型的Java技術合作及科普活動。
3.4 建立Java社區及Java網站,采用多種途徑加強Java的宣傳教育培訓與人才培養。
4.1 速度。JAVA的執行速度在JDK1.4的時候達到了這樣一個水平,就是對于一個一般水平的開發者來說,C++程序已經不再比對等的JAVA程序跑得更快了。隨后的JDK 5.0和6.0進一步提高了執行性能,由不同的組織舉行的多項評測結果表明,JAVA與C語言的整體執行效率差距在一倍以內,也就是說,素以速度著稱、并且為了速度放棄了很多東西的C語言,現在比裝備齊全的JAVA只快不到一倍了。這還不算,如果考慮到新的計算環境,C語言的速度優勢有可能僅僅是一個錯覺。因為,世界上只有很少的人有能力在多CPU計算平臺上用C語言寫出又快又正確的大程序,在這些人中間,又只有很少的人有能力用C語言寫出一個在大型的、異構的網絡環境下能夠充分發揮各節點計算能力的大規模并行程序。
4.2 功能。C語言調試錯誤時間很長,特別是內存方面的錯誤。大部分用C寫的上規模的軟件都存在一些內存方面的錯誤,需要花費大量的時間把產品穩定下來。這還沒有把安全方面的缺陷考慮在內,現在大部分的開發者在代碼安全方面的知識都很薄弱,安全漏洞在代碼中相當普遍,而在C語言中,這一不足格外明顯。最大的挑戰或許得說是并發問題了,并發是一個很復雜的問題,需要在相當高的抽象層面上解決,而C語言的抽象機制過于簡單,提供不了高層的抽象,因此在開發者只能從一些"并發原語"出發去構造并發程序,這跟用鉛筆刀鋸大樹沒什么分別,直截了當地說,大部分C程序員根本沒有能力編寫高效無缺陷的并發程序。用C語言寫單機、單線程的,不會遭到外界攻擊的,在時間預算上沒有什么壓力,而且用戶能夠忍受一個很長的產品穩定期的應用程序方面非常有經驗。但是,市場環境和計算環境已經完全變化。面對更復雜的計算環境,用C語言來編寫高質量的大規模軟件,是只有真正的專家團隊才能完成的工作。相比之下,JAVA在抽象機制、基礎設施、安全和并發方面,與C語言對比,有優勢。
[1]林勝利,路宗強,王坤茹等.Java智能卡開發關鍵技術與實例[M].北京.中國鐵道出版社.2006.
[2]李卓玲.Java程序設計實用教程[M].大連:大連理工大學出版社,2003.