您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關怎樣用Jbuilder 2005開發Java Applet應用,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
一、JBuilder 2005的新特性
JBuilder 2005加速企業JavaBeans,WEB服務器,XML,移動產品和數據庫應用程序開發,雙向可視化設計工具和迅速調用J2EE應用服務器,這些應用服務器包括BEA WebLogic,IBM WebSphere,Sybase EAServer, JBoss和 integrated Borland Enterprise Server。擁有創新強大的JavaServer Faces,Struts和 Web服務設計工具,支持J2SE 5.0 (即JDK 1.5),UML代碼可視化,分布式因子分解,代碼審核,企業單位測試,多語控制系統等。
二、圖解JBuilder 2005開發Applet程序
從簡單的Applet程序開始我們一步一步的領略JBuilder 2005的強大功能。為了提高讀者的感性認識,在每個一步驟中我都提供了明確的圖形。
三、在JBuilder 2005中測試Applet程序
Borland在JBuilder 2005內內置了兩種Applet的測試工具:AppletTestBed和Applet Viewer。
本文僅僅介紹了JBuilder 2005在開發Applet程序上的便利,但這只是JBuilder2005的優秀性能的冰山一角,我的目的只是希望讀者朋友能通過本文對JBuilder 2005有個初步的認識,我將在以后的文章繼續向大家介紹JBuilder 2005在開發EJB、Web服務以及與UML集成方面的應用。
一、JBuilder 2005的新特性
JBuilder 2005加速企業JavaBeans,WEB服務器,XML,移動產品和數據庫應用開發,雙向可視化設計工具和迅速調用J2EE應用服務器,這些應用服務器包括BEA WebLogic,IBM WebSphere,Sybase EAServer, JBoss和 integrated Borland Enterprise Server。擁有創新強大的JavaServer Faces,Struts和 Web服務設計工具,支持J2SE 5.0 (即JDK1.5), UML代碼可視化,分布式因子分解,代碼審核,企業單位測試,支持多語控制系統。
JBuilder 2005的新特性有:
1、支持最新標準,快速開發各類型 Java 應用程序
Borland JBuilder 2005 Enterprise 版支持各類型 Java 應用程序開發,包含 JSF、JavaServer Page (JSP)、Servlets、Enterprise JavaBean (EJB)、Web Services、Struts、XML、Swing、數據庫應用程序、行動式設備應用程序等,JBuilder 協助開發人員了解最新J2SE 5.0 (JDK 1.5) 語言新功能所能帶來之幫助,并針對 J2SE 5.0提供程序代碼重構 (Refactoring) 與除錯能力, JBuilder 2005 亦內建符合 J2EE 1.4 規格之 Tomcat 5.0 Web 服務器。
2、開發企業級J2EE 平臺應用程序,部署于主要應用程序服務器
運用雙向可視化的EJB設計工具,可快速建立能夠重復使用之Enterprise JavaBean。可視化雙向之部署描述編輯器(Deployment Descriptor Editor),幫您管理部署結構( structure )、交易(transaction )、策略(policies)、權限角色( security role)與其它組合與部署 EJB 所需之屬性與信息,并且涵蓋標準部署描述(Deployment Descriptor)與特定服務器專屬之部署描述。JBuilder 緊密整合多重業界領先之J2EE應用服務器,包括Borland Enterprise Server、BEA WebLogic Server、JBoss、IBM WebSphere 與 Sybase EAServer。
3、簡化 JavaServer Faces 與 Struts 應用程序開發
運用 JBuilder 所提供之多項工具與精靈,使得運用 JSF、Struts、Servlets、JavaServer Page 與 JSP表達式語言(Expression Language) 開發動態 Web 應用程序變得更為容易,運用流程設計工具可將現有 Web 應用程序建立 JSF 所需之檔案,組合而成全功能之應用程序。Struts 設計工具將開發以 Struts 為基礎之應用程序所需之工具緊密結合。此外, TagInsight 精靈能夠針對 JSP、HTML與 XML 檔案自動提示標簽(Tag),并可將 JSP 表達式語言(Expression Language) 關鍵詞以不同色彩標示,提升程序代碼撰寫速度并減少錯誤發生之機會。
4、運交高質量、高效能之應用程序
JBuilder 2005 Enterprise 版是市場上唯一完全整合效能調校工具之Java 整合開發環境,內建包含剖析工具(profiler ) 、執行緒除錯器( thread debugger ) 與程序代碼涵蓋分析工具(Code Coverage),協助開發人員找出與修正效能相關問題。JBuilder 2005 Enterprise 版中增添了J2EE 效能剖析工具 Borland Optimizeit Request Analyzer協助您分析 J2EE 架構中跨越不同層級 ( tiers ) 程序代碼之執行效率。
此外, JBuilder 2005 中所內建之程序代碼稽核 ( code audit ) 工具能夠自動發現常見之錯誤寫碼方式,進而協助開發團隊建立高質量、高效能之應用系統。
二、使用JBuilder 2005開發Applet應用
為了協助我們開發、測試與部署Applet應用程序,JBuilder2005提供下列工具:
Applet Wizard:可快速建立Applet基本結構與相對應的HTML文件。
AppletTestBed:JBuilder提供的Applet執行與測試工具,我們可以利用它來查看Applet執行結果。
Applet Viewer:Sun Microsystems公司提供的Applet執行與測試工具。
(一)使用Applet Wizard
JBuilder 2005提供的Applet Wizard可協助我們建立Applet的基本程序代碼。啟動Applet Wizard的方式如下:
● 選取File | New,打開“Object Gallery”對話框。
● 在Web窗格內,選取Applet圖標后按下[OK]按鈕。(如下圖1)
圖1(點擊放大)
以下是Applet Wizard的各項步驟:
在步驟一中我們要在name欄中輸入HelloApplet,directory欄中修改路徑為c: jbprojectHelloApplet,并勾選[Generate standard method)選項。按下[Next]按鈕前往步驟二。(如下圖2)
圖2(點擊放大)
在步驟二中有JDK版本、Output path、Backup path、working directory以及選擇的default path和test path,在這里我們都選默認值,按下[Next]按鈕前往步驟三。(如下圖3)
圖3(點擊放大)
在步驟三中我們修改class Javadoc fields中的Title、Description、Copyright、Company、author和version字段的值,其他項采用默認值,按下[Finish]按鈕。(如下圖4)
圖4(點擊放大)
接下來開始下面的Applet Wizard四個步驟操作:(如下圖5)
圖5(點擊放大)
● Package字段:Applet隸屬的套件名稱,默認為目前工程名稱。
● Class name字段:Applet類名稱。
● Base class字段:Applet所繼承的基礎類,分為java.applet.Applet與javax.swing.JApplet兩種;前者為AWT套件,后者則是使用Swing套件。
此步驟還包含下列三個選項:
● Generate header comments:在Applet類文件內加上標頭注解信息(設置于“Project Properties”對話框的General窗格)。
● Can run standalone:在Applet類內加入一個main()方法(主要用途是方便測試), 我們不需要另外撰寫一個HTML文件就可以測試Applet。
● Generate standard methods:建立標準的Applet方法,例如:start()、stop()、destroy()、getAppletlnfo()與getParameterlnfo()方法。
選擇[Next] 按鈕進入下一步:(如下圖6)
圖6(點擊放大)
現在我們可以設置欲傳入Applet的參數了。Applet Wizard會在HTML文件的<applet>標簽內產生<param>標簽,并在Applet類文件內加入必要的程序代碼。點擊[Add Parameter]按鈕將產生一筆新數據,其Name字段值默認為param0。
選擇[Next] 按鈕進入下一步:(如下圖7)
圖7(點擊放大)
在這一步中,如果我們勾選了[Generate HTML Page)選項,Applet Wizard將會建立一個HTML文件:其中包含調用Applet所需要的<applet>標簽。此外,我們可以通過Name、Codebase、Width、Height等字段來設置<applet>標簽的各項屬性。
選擇[Next] 按鈕進入下一步:(如下圖8)
圖8(點擊放大)
在這一步中,我們可以定義Applet的“運行時期配置”(runtime configuration)。如果我們的工程內并未定義任何“運行時期配置”,[Create a runtime configuration)默認會被勾選,請在Name字段內指定“運行時期配置”的名稱。按下[Finish]按鈕,離開Applet Wizard。回到“工程窗格”中,我們將發現Applet Wizard產生了兩個文件:HelloApplet.java與 HelloApplet.html。
(二)編譯并執行HelloApplet
雖然HelloApplet尚未具備任何功能,但是它已經是一個不折不扣的Applet了,讓我們先看看它的執行結果。請在AppBrowser主菜單內選取Run | Run Proiect,執行結果如圖9所示。
圖9(點擊放大)
當我們按下[Exit]按鈕離開,接下來將設計Applet的用戶界面。
(三)設計Applet用戶界面
在此步驟中,我們將利用JBuilder 2005的設計工具為HelloApplet添加較豐富的用戶界面,步驟如下。
1、在“工程窗格”中,以鼠標左鍵雙擊HelloApplet.java文件,將它打開于JBuilder編輯器中。
2、選取編輯器下方的Design頁簽。
3、如圖10所示,先在“結構窗格”的組件樹中選取this節點,然后在查看器內將this節點的Layout屬性更改為BorderLayout(原來為<defaultlayout>)。
圖10(點擊放大)
4、依照下列步驟在Applet內加入兩個Panel容器對象
點擊“組件托盤”的AWT頁簽,在AWT頁簽內選取java.awt.Panel組件,然后以鼠標左鍵點擊“結構窗格”的this節點。新的Panel對象將會出現在this節點下方,名稱為panel1。請在查看器中將panel1的Constraints屬性設置為North。仿照上一步驟加入第二個Panel對象,將它的Constraints屬性設置為Center。
5、更改Panel對象的名稱與屬性
在panel1上點擊鼠標右鍵,選取[Rename],將其名稱更改為UpperPanel。接著在查看器內將background屬性更改為Light Gray。
在panel2上點擊鼠標右鍵,選取[Rename],將其名稱更改為LowerPanel。接著在查看器內將background屬性更改為White(我們也可以依照自己的喜好來設置背景顏色)。
6、在LowerPanel加入兩個Panel對象
將LowerPanel的layout屬性設置為CardLayout,在“組件托盤”內選取AWT頁簽的java.awt.Panel組件,然后點擊“結構窗格”的LowerPanel節點,這個動作將加入一個Panel對象。新加入的Panel對象會出現在LowerPanel節點下方(名稱為panel1)。依此要領加入第二個Panel對象(名稱為panel2)。
將panel1與panel2的Layout屬性設置為BorderLayout,將panel1與panel2的background屬性分別設置為White與Pink。
完成上述所有步驟后,請先保存我們的工程。 現在我們已經完成Applet用戶界面的基本雛形,接下來要加入某些UI組件。
(四)設計UpperPanel容器對象
依照下列步驟在UpperPanel內加入兩個UI組件(Label與Choice):
1、在“組件托盤”的AWT頁簽內選取,java.awt.Choice組件,然后點擊“結構窗格”的UpperPanel節點。新的Choice組件將會出現在UpperPanel節點下方。
2、在“組件托盤”的AWT頁簽內選取java.awt.Label組件,然后點擊“結構窗格”的UpperPanel節點,這個動作將會加入新的Label組件。新的Label組件將出現在UpperPanel節點下方。
3、更改lable1對象的屬性:
在“結構窗格”內點擊label1對象,將Text屬性更改為“Select a language:"。點擊font屬性的按鈕打開Font對話框,在Size字段里輸入20。 將foreground屬性設置為Blue,“Select a Language:”字符串將以藍色顯示。
4、在panel1與panel2對象內分別加入一個Label組件。首先在“組件托盤”內選取AWT頁簽的java.awt.Label組件,然后點擊LowerPanel節點下的panel1節點。新加入的Label對象將會出現在panel1節點下方(名稱為label2)。依此要領,在panel2內加入另一個Label組件(名稱為label3)。
5、依照下列方式設置label2的屬性
將text屬性設置為“Good Movning!”,constraints屬性設置為Center, alignment屬性設置為CENTER。點擊font屬性的按鈕,在Font對話框內將Size設置為24。
6、依照下列方式設置label3的屬性
將text屬性設置為“早上好”,constraints屬性設置為Center,alignment屬性設定為CENTER。點擊font屬性的按鈕,在Font對話框內將Size設置為24。
完成上述步驟就會出現如下圖11所示:
圖11(點擊放大)
(五)設計Choice對象
在此步驟中,我們將在Choice對象內加入兩個選項,并加入必要的程序代碼。
1、點擊編輯器下方的Source頁簽,切換到源代碼編輯畫面。
2、點擊“結構窗格”的init()方法,JBuilder 2005會自動將光標移到init()方法的聲明位置。
3、在init()方法內加入下列兩行程序代碼,用藍顏色標識的(位于try/catch區塊上方):(如下圖12所示)
圖12(點擊放大)
---------------------------------------------------
choice1.addItem("English");
choice1.addItem("Chinese");
--------------------------------------------------
說明:additem()方法可以為Choice對象加入一個選項。
4、點擊Design頁簽回到UI設計工具。
5、在“結構窗格”內點擊choice1節點,然后選取“查看器”的Event頁簽。
6、以鼠標左鍵雙擊itemStateChaoged事件,JBuilder會在HelloApplet.java內新增一個choice1_itemStateChanged()方法,并將光標移到該方法所在位置。
7、參考下列范例撰寫choice1_itemstateChanged()方法的內容,用藍顏色標識的(如下圖13所示)。
------------------------------------------------------------------------------------
public void choice1_itemStateChanged(ItemEvent e) {
if ("English".equals(choice1.getSelectedItem())){
cardLayout1.show(LowerPanel,"panel1");
}
else if ("Chinese".equals(choice1.getSelectedItem())){
cardLayout1.show(LowerPanel,"panel2");
}
}
-------------------------------------------------------------------------------------
圖13
當HellloApplet被執行時,如果Choice選項為“English”,LowerPanel對象內將顯示“Good Movning!”字符串(包含于panel1容器);如果Choice選項為“Chinese”,LowerPanel對象內將顯示“早上好”字符串(包含于panel2容器)。
8、保存JBuilder工程,編譯并執行HelloApplet,執行結果如圖14所示。
圖14
9、將[Select a language]旁邊的下拉式菜單(Choice對象)切換至“Chinese”,我們將發現下方的信息更改為“早上好”。如圖15所示。
圖15
Applet1.java源代碼如下:
package helloapplet;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
/**
* <p>Title: Study</p>
*
* <p>Description: This is a Stendent</p>
*
* <p>Copyright: Copyright (c) 2004</p>
*
* <p>Company: </p>
*
* @author ghq
* @version 1.0
*/
public class Applet1 extends Applet {
boolean isStandalone = false;
BorderLayout borderLayout1 = new BorderLayout();
BorderLayout borderLayout2 = new BorderLayout();
Panel UpperPanel = new Panel();
Panel LowerPanel = new Panel();
CardLayout cardLayout1 = new CardLayout();
Panel panel1 = new Panel();
BorderLayout borderLayout3 = new BorderLayout();
Panel panel2 = new Panel();
BorderLayout borderLayout4 = new BorderLayout();
Choice choice1 = new Choice();
Label label1 = new Label();
Label label2 = new Label();
Label label3 = new Label();
//Get a parameter value
public String getParameter(String key, String def) {
return isStandalone ? System.getProperty(key, def) :
(getParameter(key) != null ? getParameter(key) : def);
}
//Construct the applet
public Applet1() {}
//Initialize the applet
public void init() {
choice1.addItem("English");
choice1.addItem("Chinese");
try {
jbInit();
} catch (Exception e) {
e.printStackTrace();
}
}
//Component initialization
private void jbInit() throws Exception {
this.setLayout(borderLayout2);
UpperPanel.setForeground(Color.lightGray);
LowerPanel.setForeground(Color.white);
LowerPanel.setLayout(cardLayout1);
panel1.setLayout(borderLayout3);
panel2.setForeground(Color.pink);
panel2.setLayout(borderLayout4);
panel1.setForeground(Color.white);
label1.setFont(new java.awt.Font("Dialog", Font.PLAIN, 20));
label1.setForeground(Color.blue);
label1.setText(""Select a Language:"");
label2.setAlignment(Label.CENTER);
label2.setFont(new java.awt.Font("Dialog", Font.PLAIN, 24));
label2.setText(""Good Movning!"");
label3.setAlignment(Label.CENTER);
label3.setFont(new java.awt.Font("Dialog", Font.PLAIN, 24));
label3.setText(""早上好"");
choice1.addItemListener(new Applet1_choice1_itemAdapter(this));
this.add(UpperPanel, java.awt.BorderLayout.NORTH);
UpperPanel.add(label1);
UpperPanel.add(choice1);
this.add(LowerPanel, java.awt.BorderLayout.CENTER);
LowerPanel.add(panel1, "panel1");
LowerPanel.add(panel2, "panel2");
panel1.add(label2, java.awt.BorderLayout.CENTER);
panel2.add(label3, java.awt.BorderLayout.CENTER);
}
//Get Applet information
public String getAppletInfo() {
return "Applet Information";
}
//Get parameter info
public String[][] getParameterInfo() {
return null;
}
public void choice1_itemStateChanged(ItemEvent e) {
if ("English".equals(choice1.getSelectedItem())){
cardLayout1.show(LowerPanel,"panel1");
}
else if ("Chinese".equals(choice1.getSelectedItem())){
cardLayout1.show(LowerPanel,"panel2");
}
}
}
class Applet1_choice1_itemAdapter implements ItemListener {
private Applet1 adaptee;
Applet1_choice1_itemAdapter(Applet1 adaptee) {
this.adaptee = adaptee;
}
public void itemStateChanged(ItemEvent e) {
adaptee.choice1_itemStateChanged(e);
}
}
三、在JBuilder 2005中測試Applet程序
當Applet開發完畢后,我們可以直接在JBuilder 2005內測試Applet的執行結果是否正確,方式有下列兩種:
● 利用JBuilder 2005的AppletTestBed。
● 利用Sun Microsystems的Applet Viewer。
1、使用JBuilder 2005的AppletTestBed
AppletTestBed是JBuilder 2005提供的Applet執行環境,當我們選取Run | Run Project時將會啟動AppletTestBed,并執行JBuilder工程的“主要類”(main class)。我們可以依照下列方式將Applet設置為該工程的“主要類”:
1)選取Project | Project Properties,打開“Project Properties”對話框。
2)切換至Run窗格,按下[New]按鈕建立新的“運行時期配置”;或是按下[Edit]按鈕編輯既有的“運行時期配置”。
3)打開“New Runtime Configuration”對話框之后,我們可以在Main class字段內定義“主要類”是什么。
利用AppletTestBed執行Applet的結果,上方包含四個按鈕:
Info:顯示Applet的參數; Start:執行Applet; Stop:停止Applet; Exit:離開AppletTestBed。
2、使用Sun Microsystems的Applet Viewer
在JBuilder 2005內欲使用Applet Viewer執行Applet時,必須通過一個包含<applet>標簽的HTML文件。只要在該HTML文件上點擊鼠標右鍵,選取(Run using“運行時期配置名稱”)即可啟動Applet Viewer。
3、開發Applet時應注意的事項
Applet的主要執行環境為Web瀏覽器。為了讓Applet能夠正確執行于客戶端瀏覽器,請確定客戶端瀏覽器是否提供JDK的支持。此外,JDK版本也應該和Applet一致,否則Applet執行結果可能和預期的不同。
在開發Applet過程中,或許我們碰到過一些問題,明明Applet都可以順利編譯,但是卻無法正確顯示于HTML頁面。問題發生的原因通常是<applet>標簽的屬性定義錯誤,例如:
1)忽略Java語言必須區分大小寫
定義<applet>標簽的code或archive屬性時,其名稱與大小寫必須和服務器上的文件名稱完全相同,否則Applet類文件將無法載入。
2)code屬性并未指定完整的類名稱
code屬性所定義的Applet類文件必須包含套件(與子套件)名稱。
3)codebase屬性設置有誤
如果Applet參照其他類文件或JAR文件,就必須將其路徑定義在codebase屬性。
4)遺漏archive屬性
常見的Applet部署方式是將相關文件包裝成JAR或ZIP文件,此時我們必須在 <applet>標簽內定義archive屬性。
如果以JBuilder 2005的Applet Wizard來開發Applet,我們可以選擇是否由JBuilder自動產生此類型HTML文件。
以下兩點是我們在開發Applet必須要考慮的要點:
1、瀏覽器所支持的JDK版本
隨著Java技術的演進,光是JDK就分為好幾個版本。某些開發人員偏好以較新的JDK來開發程序,但是他們往往忽略了一點:在一般情況下,用戶通常不會自行更新瀏覽器的版本。
因此經常會發生某些人可以正常執行Applet,但是其他人卻無法執行的窘境。針對上述問題,我們應該從兩個地方著手:
1)要求或協助公司內所有員工的Web瀏覽器必須更新。
2)如果Applet應用程序可通過Intemet存取,不妨在網頁內加上警告信息,例如“為達到最佳執行效果,請確定我們的瀏覽器版本為XXX以上”。
如果我們遭遇到瀏覽器JDK版本不合的問題,可參考下列幾個解決方案:
1)使用Java外掛程序(plug-in):
大部分的JDK不相容問題都可以經由“Java外掛程序”來解決。舉例來說,如果我們的Applet使用了Swing程序庫,但是客戶端瀏覽器的JDK版本太舊,無法支持Swing。
我們可以要求客戶端更新瀏覽器版本,或是前往http://java.sun.com/products/plugin/尋找適當的外掛程序。
2)開發時期所使用的JDK版本盡量與客戶端一致。
3)使用Java Web Start。
Java Web Start是Sun Microsystem公司所研發的一項新技術。用戶可以在網頁內點擊某個鏈接,由此啟動Applet或其他應用程序。這項技術能夠有效解決JDK版本不合的問題,只要客戶端瀏覽器事先安裝Java Web Start外掛程序,就可以正確無誤地執行Applet。
2、安全性議題
通過網絡將應用程序傳送到客戶端執行----這點是Applet最為人詬病的地方。由于網絡是一個開放式環境,任何在網絡上傳送的事物都有可能被人攔截、竊取甚至更改。因此,在開發Applet時必須格外重視應用程序的安全性。我們也必須有所了解,某些操作在一般的Java應用程序可以執行,但在Applet內卻是不允許的。
為了避免Applet執行時因為不明原因(有可能是程序代碼遭到篡改)破壞或竊取客戶端電腦數據,所有Applet都會被放在一個安全環境下執行,我們稱之為Sandbox。這個安全機制可以確保用戶電腦不會遭受危險程序的影響。目前Applet能夠安全地在網絡上傳輸與使用,Sandbox機制居功甚偉!在此機制的保護下,Applet不能刪除或更改主機內的文件名稱、不能建立文件,也無法檢查文件與目錄名稱。Java解釋器也會嚴格檢查Applet是否執行任何不合法的操作,一旦發生將立刻中斷程序執行。此外,Applet只能和原來的Web服務器進行數據交換,無法將數據傳送到其他電腦。這些特性都是在開發Applet時必須特別注意的。有了這些嚴密的保護措施,就可以將用戶可能面臨的安全性問題降到最低。
以下是與Applet安全性有關的開發技巧:
1)對Applet加上標記式
這個做法可以確保Applet在傳送過程的完整性,然而它會有些缺點。以現階段而言,還沒有一套針對Applet制作標記式的標準。如果我們想獲取更進一步的信息,請前往http://www.suitable.com/docs/signing.html。
2)考慮以其他技術來克服Applet的安全性限制
Applet的某些安全性限制可能導致特定動作無法執行,此時我們可以搭配其他Java技術來完成。舉例來說,如果我們希望將數據回寫至Web服務器,不妨利用Servlet來完成(因為Servlet是在服務器端執行的應用程序,不像Applet需要傳送到客戶端才執行,不會有程序代碼遭到篡改的疑慮)。
看完上述內容,你們對怎樣用Jbuilder 2005開發Java Applet應用有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。