冀 瀟,李 楊
(中國電子科學研究院,北京 100041)
隨著科技的發(fā)展和網絡技術的普及,互聯網早已進入千家萬戶,成為人們日常生活中必不可少的一部分。JavaScript和Java作為Web應用程序設計開發(fā)中的兩種主流編程語言,雖然名字看上去相似,但他們是由不同公司開發(fā)的兩種程序語言,他們之間既有一些聯系,也有很多區(qū)別。
每當用戶打開一個網頁提交信息時,總會伴隨有一些頁面驗證的操作,如:密碼長度是否符合要求等;同時互聯網也會根據用戶的要求進行一系列的后臺操作,獲取他們需要的信息和想要完成的任務。這就是JavaScript和Java在Web開發(fā)中分別起到的至關重要的作用。
JavaScript是Net-scape公司推出的一種基于對象和事件驅動的解釋性編程語言,其代碼在發(fā)送到客戶端執(zhí)行之前不需要經過編譯,而是直接將文本格式的代碼直接發(fā)送給客戶端再由瀏覽器解釋執(zhí)行[1]。JavaScript作為一種腳本語言,其代碼直接嵌寫在html文檔中,且格式較為松散和自由,變量在使用前無需嚴格進行聲明。它被大量使用在客戶端,主要解決的是客戶端的交互問題,成為網頁設計的一項重要技術[2]。
Java是Sun公司推出的一款面向對象的程序語言,其代碼在發(fā)送到客戶端執(zhí)行之前必須經過編譯,所以客戶端必須安裝有對應的仿真器或解釋器[3]。Java作為一種高級計算機程序語言,其代碼以字節(jié)代碼以.class的格式被保存為獨立文件,是和 html文檔分開的獨立文檔,且格式嚴謹,變量在使用前必須加以聲明。它既可以被用在客戶端,也能夠被用在服務器端實現更加強大的功能,成為當今計算機界不可忽視的力量[4]。
下面將以圖1、圖2所示的某計算服務平臺中的登錄頁面為例,展示了在用戶登錄操作被執(zhí)行時,JavaScript對表單的驗證和 Java對后臺數據的處理過程,進而說明JavaScript和Java語言如何在Web開發(fā)中應用,以及他們的區(qū)別。
圖1 某計算服務平臺登錄界面
圖2 登錄界面放大
當登錄操作發(fā)生時,數據發(fā)送到服務器端之前,JavaScript首先在客戶端進行表單驗證;表單驗證通過后,將數據發(fā)送到服務器端,Java對其進行后臺操作,處理成功則允許用戶登錄系統,進行下一步操作。具體流程如圖3所示。
圖3 某計算服務平臺的登錄流程處理
如今的JavaScript能夠處理復雜的計算和交互,擁有了閉包、匿名函數,甚至元編程等特性[5],成為一門功能全面的編程語言。但是數據驗證作為JavaScript最常用也最基本的功能被大量應用于本示例所開發(fā)的系統中,它在表單數據發(fā)送到服務器之前,在客戶端直接與瀏覽器交互、驗證數據信息,從而減少了服務器端的處理任務,提高了用戶的操作效率。在本示例的登錄操作發(fā)生時,JavaScript在客戶端的驗證流程如圖4所示。
圖4 JavaScript在客戶端的表單驗證流程
在login.jsp中對用戶名稱進行驗證的JavaScript代碼實現了以下功能:對用戶所輸入的用戶名和密碼進行格式檢驗[6],如果輸入格式不符合要求,如:輸入為空,或者密碼長度不夠,則會彈出警告框,要求用戶重新輸入相關信息。具體代碼如下:
如果輸入的用戶名為空,則會彈出圖 5、圖 6所示的提示框要求用戶重新輸入用戶名。對密碼格式的驗證的代碼將不再贅述。
圖5 彈出提示輸入工程名的提示框
圖6 提示框放大
Java可以根據組成和環(huán)境的不同分為兩類:Java Application和Java Applet。Java Application作為非嵌入式的完整程序,需要獨立的解釋器來運行;而Java Applet是嵌在HTML編寫的Web頁面中的非獨立程序,需要瀏覽器內部的Java解釋器來才能運行[7]。在本示例的登錄界面例子中,Java的對前臺頁面?zhèn)魅氲臄祿M行后臺邏輯操作處理就是一個 Java Application程序,它的操作處理流程如圖7所示。
圖7 Java在服務器端的數據處理流程
通過checkLogin方法實現以下功能:該方法實現的功能為將用戶在界面輸入的用戶名和密碼信息與數據庫中存儲的信息作比較,如果有相符合的信息存在則返回 true,如果沒有相符合的信息存在則返回false。具體代碼如下:
在上述checkLogin方法被調用之前,Java會先將提交的用戶名數據與服務器端已存在的用戶名數據相比較,判斷該用戶名是否已經在其他計算機上登錄,如果已經登錄,則不可再次重復登錄;當checkLogin方法被調用后,Java會繼續(xù)進行后續(xù)邏輯處理,判斷該用戶輸入的用戶名和密碼是否正確,如果不正確則需要重新輸入用戶名和密碼。具體代碼不再贅述。
通過這個例子可以看出JavaScript是一種基于對象和事件驅動的客戶端腳本編程語言,也是一種解釋性解釋語言[8],其源代碼在發(fā)往客戶端前不需要經過編譯。在Web開發(fā)中主要用來給html頁面添加動態(tài)效果功能,增強與用戶的交互作用,如:響應用戶的各種操作等,交互方式也較為簡單,無需通過后臺服務器,直接在前臺客戶端與瀏覽器交互。而 Java是一種真正面向對象的分布式程序設計語言,擁有一套龐大并且完善的類庫,由于它的可移植性、易用性和與 html的緊密結合,再加上完善的Web[9]應用體系結構,使Java成為開發(fā)Web應用的首選編程語言[10]。作為一個分布式、解釋型的程序語言[11],Java也具有一些本例中未體現出來的強大功能,如:支持Internet應用的開發(fā),提供了包括 URL、Socket等用于網絡應用編程的類庫,可以通過編譯器或解釋器實現獨立于某個特定的編譯代碼等[12]。
綜上所述,通過一個基本的用戶登錄界面示例的展示與分析,可以看出JavaScript和Java雖然都能夠應用于Web設計開發(fā)中,完成程序的編寫并實現一定的功能,但這兩種語言本質上有著很大的區(qū)別,JavaScript被大量用于解決客戶端的交互問題,從而減少了服務器端的負擔,提高了工作效率;而Java作為一種高級程序語言,具有高擴展性和可靠性,被廣泛應用于服務器端的業(yè)務邏輯實現,他們在Web[13]開發(fā)中發(fā)揮著各自不同的作用。
[1]MONCUR M.Javascript入門經典[M].王軍,譯.北京:人民郵電出版社,2008.
[2]張彥芳,謝虹.基于Javascript的客戶端表單驗證[J].生產一線,2009(01):177.
[3]??藸?Java編程思想[M].陳昊鵬,譯.北京:機械工業(yè)出版社,2007.
[4]郎波.Java語言程序設計[M].北京:清華大學出版社,2005.
[5]ZAKAS C N. Javascript高級程序設計[M].李松峰,曹力,譯.北京:人民郵電出版社,2012.
[6]李永明,古麗拉.阿東別克.基于B/S的用戶名和密碼認證防護[J].通信技術,2007,40(05):55-56.
[7]印旻,王行言. Java語言與面向對象程序設計[M].北京:清華大學出版社,2010.
[8]周愛民.JavaScript語言精髓與編程實踐[M].北京:電子工業(yè)出版社,2012.
[9]武裝,李洪奇.基于Web服務的企業(yè)應用集成研究[J].通信技術,2009,42(08):154-158.
[10]孫衛(wèi)琴.Tomcat與 Java Web開發(fā)技術詳解[M].北京:電子工業(yè)出版社,2012.
[11]管銘,趙朋.Java應用程序安全分析研究[J].信息安全與通信保密,2007(05):141-142,145.
[12]梁勇.Java語言程序設計基礎篇[M].李娜,譯.北京:機械工業(yè)出版社,2011.
[13]張利榮,蔣誠,顧艷.基于XML的Web Service安全模型研究與實現[J].信息安全與通信保密,2007(09):105-107.