明輝手游網(wǎng)中心:是一個免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

Java web應(yīng)用開發(fā)概覽(轉(zhuǎn)貼)

[摘要]Web開發(fā)(Web Development)是JBuilder Professional 和 Enterprise版權(quán)的特性. Applet 開發(fā)是 JBuilder所有版本開發(fā)的一個特性.本節(jié)介紹了web開發(fā)技術(shù)。包含了他們的異同點(diǎn)。討論了如何決定使用何種技術(shù)。我們首先介紹這些技術(shù)的概念。 We...
Web開發(fā)(Web Development)是JBuilder Professional 和 Enterprise版權(quán)的特性. Applet 開發(fā)是 JBuilder所有版本開發(fā)的一個特性.本節(jié)介紹了web開發(fā)技術(shù)。包含了他們的異同點(diǎn)。討論了如何決定使用何種技術(shù)。我們首先介紹這些技術(shù)的概念。

Web應(yīng)用程序技術(shù)

技術(shù)描述
Applets 
一種可以被瀏覽器下載并在瀏覽器上運(yùn)行的Java小應(yīng)用程序。

Servlets 
可以處理客戶請求的運(yùn)行在服務(wù)器端的Java應(yīng)用程序。

JavaServer Pages (JSP) 
一種擴(kuò)展的servlet技術(shù)。JSP重點(diǎn)在于提供一種簡單的開發(fā)servlet的方法。它們在開發(fā)時表現(xiàn)不同,但當(dāng)?shù)谝淮芜\(yùn)行后,JSP都被Web服務(wù)器編譯成servlet。

InternetBeans Express 
一種元件庫,用于提供簡化代表和操作數(shù)據(jù)庫中的數(shù)據(jù)。此技術(shù)用于聯(lián)接servlet和JSP技術(shù),并簡化數(shù)據(jù)敏感的servlet和JSP的開發(fā)。

本文簡介給出了這些技術(shù)的基本概念。但是如何使用這些技術(shù),它們的好處與缺點(diǎn)是什么?我們將在以下的部分給出解答。

Applets
當(dāng)Java語言首次可用時,applet造成了很大的紛亂。此時web技術(shù)尚未得到很大的發(fā)展。而applet那時解決了開發(fā)者面對的一些難題。實(shí)際上,applet變得如此流行以致今天開發(fā)applet是Java學(xué)習(xí)課程的一個基本內(nèi)容。結(jié)果是,一個通常的錯誤觀念是Java開發(fā)者過多地依賴于applet。Applet應(yīng)在特定的情況下使用,它并非解決所有Web開發(fā)問題的神奇解決方法。

使用applets的缺點(diǎn)在于:

*分發(fā)與測試是困難的. 
*依賴于客戶機(jī)的瀏覽器是否允許Java運(yùn)行。
*不同的瀏覽器版本支持不同版本的JDK, 并且一般不是最新的JDK版本。
*applet第一次啟動很慢。因?yàn)榭蛻魴C(jī)必須將它從服務(wù)器上下載. 
*以上的一些問題可以有其它的解決方案(此處不加預(yù)討論)。當(dāng)考慮使用applet時,應(yīng)首先考慮是否有其它的Java技術(shù)可以實(shí)現(xiàn)你的目的。

使用applets的優(yōu)點(diǎn)在于:

*Applets 可以提供比servlets 和 JSP更加復(fù)雜的界面。
*因?yàn)?applets 是從服務(wù)器上下載并運(yùn)行在客戶機(jī)上,web服務(wù)器不必支持Java.這一點(diǎn)很重要,尤其是當(dāng)你為一個站點(diǎn)寫一個web應(yīng)用,而無權(quán)控制web服務(wù)器時。如你的站點(diǎn)空間由一個外部的ISP提供時。
*Applet可以進(jìn)行本地校驗(yàn),而不必在遠(yuǎn)端的服務(wù)器上進(jìn)行校驗(yàn)。當(dāng)然你也可以是JavaScript 加上servlet 或 JSP來完成此功能. 
*在applet下載完成后,瀏覽器致電服務(wù)器的連接請求數(shù)目將會下降。因?yàn)榇罅康奶幚韺⒃诳蛻魹g覽器上完成. 


Servlets

Servlets 是與web服務(wù)器集成的Java程序,它運(yùn)行在服務(wù)器端處理來自客戶機(jī)的請求。它們需要支持JavaServer技術(shù)的web服務(wù)器。如與Jbuilder一起發(fā)行的Tomcat 服務(wù)器 (Tomcat 同樣可與不支持JavaServer技術(shù)的web服務(wù)器進(jìn)行集成,如Micro$oft IIS)。 Java 的servlets可以用于代替Common Gateway Interface (CGI) 程序,或用于以前采用CGI的相同的情形。

采用servlet比 CGI的好處在于:
*減少內(nèi)存開銷
*平臺無關(guān)
*協(xié)議無關(guān)
*你可以使用任何開發(fā)語言編寫的客戶程序來向servlet發(fā)送請求?蛻艨梢允呛唵蔚紿TML頁。你也可以使用applet作為客戶,或用非java語言編寫的程序。在服務(wù)器端,servlet處理請求,并生成動態(tài)的輸出,發(fā)送給客戶。Servlet一般沒有用戶界面。但你可在客戶端可選地提供用戶界面。

采用servlet的好處在于:
*你不必?fù)?dān)心客戶瀏覽器是否在運(yùn)行 JDK . Java 甚至可以在客戶瀏覽器中被屏障。所有的Java元素者都在服務(wù)器端執(zhí)行.這使得服務(wù)器管理者具有更多的控制能力。
*當(dāng)servlet 啟動后,來自客戶瀏覽器的請求簡單的調(diào)用運(yùn)行著的servlet的service()方法. 這意味著客戶不會象applet一樣花費(fèi)大量的下載時間而導(dǎo)致性能下降。
*在web服務(wù)器上發(fā)布servlet是要一樣的技巧的,當(dāng)然也并非不可能的。JBuilder提供了一些工具使得發(fā)布變得更加容易。


JavaServer Pages (JSP)
JavaServer Pages (JSP) 是servlet 技術(shù)的擴(kuò)展。.這是一種著重于servlet編寫的簡化方法,更著重于應(yīng)用程序的表述方面。

servlet與JSP之間最主要的區(qū)別在于: 對于servlets技術(shù),程序的邏輯是保存在 Java 文件中,與作為表現(xiàn)層的 HTML完全分開。 而對于JSP技術(shù), Java 與HTML 被合并在一個后綴為 .jsp 的文件中。

當(dāng)web服務(wù)器處理JSP文件時,首先生成一個servlet,但當(dāng)你在開發(fā)JSP時,你不會看到這個生成的servlet。 實(shí)際上,當(dāng)你在JBuilder的IDE環(huán)境中編譯并運(yùn)行JSP時,你會看到生成的servlet所報告的異常與處理信息。這會有一個混亂,因?yàn)檫@些信息不能準(zhǔn)確地定位錯誤或異常發(fā)生在JSP的哪行代碼,實(shí)際上它們只是已生成代碼的信息。

與servlet相比,JSP的好處在于:
*寫更少的代碼。
*易于和已存在的Java beans合并。 
*發(fā)布更多簡單。更多的發(fā)布問題已經(jīng)自動為你完成。因?yàn)镴SPs映射到 web服務(wù)器的方法與 HTML文件相同。 
*不必在JSP生成的servlet中嵌入java代碼。相反,是在HTML中離散地嵌入Java代碼。如果有足夠仔細(xì)的計(jì)劃,這些java代碼塊從HTML文件中完整地分離出來,使得JSP更具有可讀性。

使用 JSP的缺點(diǎn)在于:
*不可見的、生成的servlet代碼可能導(dǎo)致混淆,如前所述。
*由于 HTML 與 Java are 混合在一個文件中, Java開發(fā)者與web設(shè)計(jì)者一起工作時必須足夠仔細(xì),以免覆蓋另一方的更新。
*合并的java與HTML會導(dǎo)致可讀性差,如果你不仔細(xì)地遵守統(tǒng)一的編程規(guī)范的話,這個缺點(diǎn)將尤其明顯。
*JSP與ASP(Active Server Pages)非常相似。最主要的區(qū)別在于JSP操作的對象是JavaBeans,具有平臺無關(guān)性。而ASP操縱的對象是COM對象,只能在Micro$0ft平臺上使用。


InternetBeans Express
InternetBeans Express 技術(shù)集成了 servlet 與 JSP 技術(shù),為你的應(yīng)用程序增加了價值,并簡化了servlet 與 JSP 的開發(fā)任務(wù)。InternetBeans Express 是一個元件集合、一個生成與響應(yīng)web應(yīng)用的表示層JSP標(biāo)簽庫。 它使用靜態(tài)的模板頁,從活動的數(shù)據(jù)模型中插入動態(tài)內(nèi)容,并把它們發(fā)送給客戶。然后它將客戶的改變改寫到數(shù)據(jù)模型中。這使得創(chuàng)建數(shù)據(jù)敏感的servlet和JSP更加容易。

InternetBeans Express 含有內(nèi)建的 DataExpress DataSets 和 DataModules支持。它還可以來通用的數(shù)據(jù)模型及EJB一起使用。





決定在web應(yīng)用中使用何種技術(shù):
現(xiàn)在你已經(jīng)概覽了相當(dāng)?shù)膚eb技術(shù),你如何決定在web 應(yīng)用中使用何種技術(shù)?下面是一些技巧也許會有所幫助:

*你是否需要一個復(fù)雜的用戶界面?如果你的界面比數(shù)據(jù)錄入元素(文本域,無線按鈕,組合框,列表框,發(fā)送按鈕,等等)、圖象更加復(fù)雜,你可能使用applet。
*如果你要完成大量的服務(wù)器端的處理,應(yīng)選用servlet 或 JSP。
*如果你要避免用戶下載大量的代碼來加整應(yīng)用的啟動,應(yīng)選用servlet 或 JSP。
*如果你想控制應(yīng)用的JDK版本,或你關(guān)心不允許Java在瀏覽器中使用的用戶,應(yīng)選用servlet 或 JSP。
*如果你在查找CGI的替代器,使用更少的內(nèi)存開銷,應(yīng)選用servlet 或 JSP。
*如果你需要與ASP相似的實(shí)現(xiàn),并要求實(shí)現(xiàn)平臺無關(guān)性,應(yīng)選用JSP。
*如果你需要復(fù)雜的用戶界面,但你還要一些servlet或JSP的特性,考慮聯(lián)合applet和servlet,可以在客戶瀏覽器中使用applet,而在服務(wù)器端使用servlet。
*如果你使用servlet或JSP,并想要使之?dāng)?shù)據(jù)敏感,應(yīng)選用 InternetBeans Express。
*Servlet與JSP十分相似,其選用的原則很大部分在于個人的愛好。

記。汉芏鄔eb應(yīng)用會聯(lián)合使用兩種或多種這些技術(shù)。





基本的web應(yīng)用的開發(fā)過程
不論選用何種web技術(shù),開發(fā)web應(yīng)用及使之在web服務(wù)器上運(yùn)行的基本步驟如下:

*設(shè)計(jì)應(yīng)用程序
決定你的應(yīng)用程序的結(jié)構(gòu)及采用的技術(shù)。決定應(yīng)用程序的功能、外觀。這一階段,你可能想創(chuàng)建一個WebApp. 

*在JBuilder IDE中配置你的web服務(wù)器 
你可以可選地在JBuilder IDE中設(shè)置你的web服務(wù)器,這樣你才能編譯、運(yùn)行、調(diào)試你的應(yīng)用程序,并以后發(fā)布到相同的web服務(wù)器的環(huán)境中。如果你跳過此步驟,JBuilder會自動使用捆綁發(fā)行的Tomcat,進(jìn)行編譯、運(yùn)行和調(diào)試。

*開發(fā)應(yīng)用程序
編寫應(yīng)用程序的代碼,不論你的應(yīng)用程序由applets, servlets, 或 JavaServer Pages構(gòu)成,使用 JBuilder的工具可以簡化開發(fā)的任務(wù)。

*編譯應(yīng)用程序
在JBuilder IDE中編譯應(yīng)用程序. 

*運(yùn)行應(yīng)用程序
在JBuilder IDE中運(yùn)行應(yīng)用程序.不必分發(fā),此時你可以預(yù)覽應(yīng)用程序。在此階段,你可以作應(yīng)用程序的本地測試。

*發(fā)布應(yīng)用程序
發(fā)布應(yīng)用程序到web服務(wù)器.發(fā)布的特定步驟與你所選用的 web 服務(wù)器緊密相關(guān)。

*測試應(yīng)用程序
測試運(yùn)行在web服務(wù)器上的應(yīng)用程序。這會幫助你發(fā)現(xiàn)應(yīng)用程序的發(fā)布問題、或應(yīng)用程序本身的問題。你應(yīng)該使用與web服務(wù)器不同的機(jī)器上的客戶瀏覽器進(jìn)行測試。你可以嘗不同的類型的瀏覽器,因?yàn)閼?yīng)用程序在不同的瀏覽器中的表現(xiàn)可能會有細(xì)微的不同。





Web應(yīng)用 vs. 分布式應(yīng)用
你可能會考慮選用分布式應(yīng)用而不是Web應(yīng)用。這兩者都是client/server編程。此處給出這兩種技術(shù)的區(qū)別之處:
*一般而言,分布式應(yīng)用從已有的系統(tǒng)中管理和檢索數(shù)據(jù),已有的系統(tǒng)可能存在于運(yùn)行不同操作系統(tǒng)的大量的計(jì)算機(jī)中。分布式應(yīng)用使用應(yīng)用服務(wù)器,如Borland Applicatoin Server,來進(jìn)行應(yīng)用程序管理。分布式應(yīng)用程序不必基于java,實(shí)際上,分布式應(yīng)用程序可以包含不同的程序,而與其實(shí)現(xiàn)的語言無關(guān)。

*分布式應(yīng)用經(jīng)常配置在一個公司的內(nèi)部網(wǎng)中。你可以使得客戶可以通過Internet訪問你的分布式應(yīng)用,但是你必須聯(lián)合使用分布式應(yīng)用和web應(yīng)用。

在分布式應(yīng)用中使用的技術(shù)有Common Object Request Broker Architecture (CORBA)和 Remote Method Invocation (RMI):

CORBA的主要好處是客戶機(jī)與服務(wù)器可以用不同的程序開發(fā)評議編寫。這種可能性的由來在于對象是由Interface Definition Language (IDL)定義的, 并且對象、客戶、和服務(wù)器之間的通訊處理是由Object Request Brokers (ORBs)來實(shí)現(xiàn)的.

Remote Method Invocation (RMI) 使得你可以創(chuàng)造 Java-Java 的分布式應(yīng)用程序。這種技術(shù)下,遠(yuǎn)程的java對象可以直接調(diào)另一個JVM(可能在另一臺機(jī)器上)上的java對象。


Web應(yīng)用可以使得有權(quán)使用Internet的人訪問它。你可以將它放在防火墻后,并使它只能在你的公司內(nèi)部網(wǎng)中起作用。

Web應(yīng)用需要在客戶機(jī)端擁有游覽器,而服務(wù)器端擁有web服務(wù)器。例如,applet下載到多個客戶平臺并在客戶瀏覽器提供的JVM平臺上運(yùn)行。Servlet和JSP運(yùn)行在Java允許的可以提供JSP/Servlet特性的web服務(wù)器上。

web應(yīng)用可以是大型的分布式應(yīng)用的一個部分。而分布式應(yīng)用也可以是企業(yè)級的、或者說J2EE應(yīng)用的一個部分。關(guān)于J2EE應(yīng)用示例和支持文檔,參見在 http://java.sun.com/j2ee/blueprints/中的 Java 2 Platform, Enterprise Edition Blueprints . 特定的章節(jié)名為 "The Client Tier" 和 "The Web Tier."