今天,我将和大家谈谈如何用Jbuilder 2005开发Java Applet应用程序。很多人可能不太了解。为了让大家更好的了解,边肖为大家总结了以下内容。希望你能从这篇文章中有所收获。
一、JBuilder 2005的新特性
JBuilder 2005加速了企业JavaBeans、WEB服务器、XML、移动产品和数据库应用、双向可视化设计工具和J2EE应用服务器快速调用的开发,其中包括BEA WebLogic、IBM WebSphere、Sybase EAServer、JBoss和Integrated Borland企业服务器。凭借创新强大的JavaServer Faces、Struts和Web服务设计工具,支持J2SE 5.0 (JDK 1.5)、UML代码可视化、分布式因子分解、代码审计、企业单元测试、多语言控制系统等。
其次,举例说明JBuilder 2005开发的Applet程序。
从简单的Applet程序开始,我们可以一步一步领略到JBuilder 2005的强大功能。为了提高读者的感性认识,我每一步都提供了清晰的图形。
第三,在JBuilder 2005中测试Applet程序
Borland在JBuilder 2005中构建了两种小程序测试工具:小程序测试床和小程序查看器。
本文只介绍了JBuilder2005在开发Applet程序时的便利性,但这只是JBuilder 2005出色性能的冰山一角。我的目的只是希望读者朋友们能够通过这篇文章对JBuilder 2005有一个初步的了解。我将在以后的文章中继续介绍JBuilder 2005在开发EJB、Web服务和与UML集成中的应用。
一、JBuilder 2005的新特性
JBuilder 2005加速了企业JavaBeans、WEB服务器、XML、移动产品和数据库应用、双向可视化设计工具和J2EE应用服务器快速调用的开发,其中包括BEA WebLogic、IBM WebSphere、Sybase EAServer、JBoss和Integrated Borland企业服务器。凭借创新强大的JavaServer Faces、Struts和Web服务设计工具,支持J2SE 5.0 (JDK1.5)、UML代码可视化、分布式因子分解、代码审计、企业单元测试和多语言控制系统。
JBuilder 2005的新特性是:
1.支持最新标准,快速开发各种Java应用。
Borland JBuilder 2005企业版支持各种Java应用开发,包括JSF、JavaServer Page (JSP)、Servlets、企业JavaBean (EJB)、Web Services、Struts、XML、Swing、数据库应用、移动设备应用等。JBuilder帮助开发人员理解最新的J2SE 5.0 (JDK 1.5)语言的新功能带来的帮助,并为J2SE 5.0提供重构和调试功能。JBuilder 2005也有一个满足J2EE 1.4规范的Tomcat 5.0 Web服务器。
2.开发企业J2EE平台应用程序,并将其部署在主要应用程序服务器中。
可以重用的企业JavaBean可以通过使用双向可视化EJB设计工具快速建立。可视化双向部署描述符编辑器可帮助您管理部署结构、事务、策略、安全角色以及EJB组合和部署所需的其他属性和信息,并涵盖特定于特定服务器的标准部署描述符和部署描述。JBuilder紧密集成了多个行业领先的J2EE应用服务器,包括Borland Enterprise Server、BEA WebLogic Server、JBoss、IBM WebSphere和Sybase EAServer。
3.简化JavaServer Faces和Struts应用程序开发
通过JBuilder提供的许多工具和向导,使用JSF、Struts、Servlets、JavaServer Page和JSP表达式语言开发动态Web应用程序变得更加容易。在流程设计工具的帮助下,JSF所需的文件可以与现有的Web应用程序相结合,形成功能齐全的应用程序。Struts设计工具紧密结合了开发基于Struts的应用程序所需的工具。此外,TagInsight向导可以自动为JSP、HTML和XML文件提示标签,并可以用不同的颜色标记JSP Expression Language关键字,从而提高程序代码的编写速度,减少出错的机会。
4.交付高质量和高性能的应用程序。
p> 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应用有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注行业资讯频道,感谢大家的支持。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/131703.html