javascript

位置:IT落伍者 >> javascript >> 浏览文章

Java与JavaScript的通信lixiaolong3456


发布日期:2020年10月03日
 
Java与JavaScript的通信lixiaolong3456

lixiaolong(翻译)

文/ Jeremiah Talkar

信任

.  聊天演示程序内在的想法连同这篇文章一起都是我自己的我所见过的所有聊天程序不是完全基于JAVA就是HTML我的方法是这两种方法的一个很好的平衡

.  我通过在Netscape开发者站点阅读大量的文章后收集了在JAVA和JAVASCRIPT间通信的技术信息

.  我第一次在读Danny Goodman的文章时(The JavaScript Apostle on the Netscape site)偶然遇到术语不知名的applet(Faceless applet)因此出于对Danny的信任我使用了这个非常切题的术语

放弃

.  这篇文章中讨论的技术已经在Windows Professional机器上使用Internet Explorer 和 Netscape Navigator 测试过了在我所知道的最佳作品中这些技术应该在任一浏览器以上的版本上运行但我不能保证我这样做因为我没有时间用这些版本将它测试出来

.  因为JAVASCRIPT是唯一一种在两种主要浏览器都得到支持的语言所有的脚本代码使用这种语言我先前在上使用了一个可用的商业插件这个插件可以让Netscape Navigator支持VBScript但我去他们的站点核实这个信息的时候这个产品已经没有列出了

引言

我一直从事现代COM的工作两年了现在是我公司的e化商业产品团队的技术领导我明白好的界面设计和在不同环境像Visual C++ Visual Basic 还有脚本下都能很好执行程序的重要性基于界面的程序设计的能力在我的头脑中已经永远确立并且作为一个软件工程师我试着将它应用到我所涉及的每件事情中

在过去的一年里当ASP+脚本就要被当作这些对象的黏合剂使用的时候经验告诉我们的勤奋所有的商业逻辑应该被压缩在COM对象之内设计和开发典型的基础设施和商业对象要求一个更高的技术设备它用来比较什么是要求实际使用同一个事物的开发这些对象的首选环境(至少在我的团队中)是Visual C++ / ATL / STL微软也鼓励Visual Basic成为这些对象可选择的开发环境

这些对象被代表性的称为不知名的因为他们实现许多逻辑但用户界面除外它的表现层次(presentation tier)不是一个充足的客户就是一个不充足的客户(这个客户有从最终用户表达信息和聚集信息的逻辑)然后这样的一个客户用这些信息通过使用不知名的对象做一些有意义的事情这整个想法是当商业对象改变不频繁时表现层次会代表性的要求许多客户定制表现层次要求的改变也可以通过使用较少的经验程序来实现

应用这些相同的原理到浏览器环境当使用一种脚本语言处理表现方面时不知名的二进制模块中压缩高度发展的客户方的逻辑看起来是合乎逻辑的在Windows平台上这些模块的选项是Java applet和ActiveX 控件/服务器这篇文章的焦点是使用Java applet完成这个目标因为applet是独立于浏览器平台和处理器的(对大部分而言)

Applet的简短历史

SUN Microsystems年在嘹亮的号角声中引入了Java appletApplet立即博得WEB世界的欢心因为它们增加了在原来是一个静态HTML的世界的浏览器中动态地显示WEB内容的能力

在最初的日子里使用Java applet作为最好的一种在网页中增加动态内容的方式出现了最初Microsoft 试图使用他们的ActiveX Control技术反对SUN提供的Java applet但是在网页内部使用控件存在两个主要问题

●     二进制模块是处理器指定的因此不适合作为网页的一部分运行万维网(World Wide Web)如此成功的一个主要原因是使用WC标准HTML写出的大部分网页对浏览器和处理器是不可知的事实ActiveX控件正好不符合这个范例

●     安全是一个大问题因为控件编写者有足够的权利在客户机器上存取资源签了名的控件允许任何一个人查看网页并聪明地作出是否应该在他/她的机器上下载一个特定控件的决定但是所有他进行的是一个按钮意外的点击(或者是高兴地忽略)这样就留下了易受攻击的客户机这也正符合恶意控件编写者的意图

当动态HTML终于开始成型时事情彻底地改变了文档对象模型(Document Object Model )作为可以设计的组件它们用它们自己的属性和方法揭露了网页元素即使Internet Explorer和Netscape Navigator浏览器执行动态HTML有许多不同但使用脚本代码程序化的改变显示页内容本身的根本主题就是是一个巨大的成功Applet突然开始看起来是又旧又粗糙的WC对动态HTML的认可最终对高度发展的动态网页的新种类调整了语气

在浏览器内是使用Java applet有以下列出的几种优点

●     Applet(对大多数Applet而言)可以在多浏览器平台和处理器上工作

●     JAVA语言是典型的一种强大的概念性语言

●     JDK有许多典型的且只在高层类库中创建的有用的类

●     技术中已经构思了安全applet只能用默认值在方框中运行如果它们要打破方框的限制则Applet必须是已经签了名的

●     Applet可以就发回用户化信息上传/下载文件等而与网页服务器取得联系签了名的applet可以与任何一个服务器联系而不仅仅是一个它们的主机

●     通过查看源文件选项不能看到applet代码因此保护了知识产权

●     JAVA的class文件非常小结果是下载非常快

使用Java apple的缺点

●     在一次浏览器对话中下载applet不是网页使用它们的第一时间显示就是网页随后刷新后显示Applet在浏览器对话中不长驻客户机事实上在大多数场合下这可以作为一种优势考虑

●     Applet要花很长时间初始化

●     因为JAVA的class文件是被JAVA虚拟机(Java virtual machine JVM)解释的字节代码所以applet运行比本地代码慢

●     一个applet只是浏览器上真正状态的一部分它不会无缝完好地出现在网页内容中层叠样式单(Cascading style sheets CSS)也不会直接影响applet占有的矩形区域

●     Netscape Navigator x有十个活动applet的限制我不知道Internet Explorer +有任何一种这样的限制

使用Java applets的快速回顾

Java applets通过使用用applet标签被包含进一个HTML网页中WC 站点上HTML 说明书的节详细地说明了这个标记它也提到赞成而不赞成使用这个标记

一个简单地包含applet的HTML网页如下所示

Calculator

上例中用到的属性解释如下

Id

Applet实例的标识符客户方脚本代码能知道使用这个id的applet

Width

这个属性指定了applet显示域的初始宽度(不包括applet创建的窗口或者对话框)即使我经成功使用了宽度放弃一节中提到的浏览器还是推荐使用值作为最小的可能宽度

Height

这个属性指定了applet显示域的初始高度(不包括applet创建的窗口或者对话框)就像用宽度属性一样推荐使用值作为最小的可能宽度

Code

这个属性指定了任一类文件(包含applet编译的applet子类或者能够得到类的路径包括类文件自身)的名字它在谈到applet的codebase时会作出解释

Codebase

这个属性指定applet的基本URI 如果这个属性没有指定那么它默认最近的文档为同一个基本URI

只有code width和height 属性是必须的

Param标记包含一对名字的值它允许applet第一次运行时安装自己

在上面的applet调用一个方法的JAVASCRIPT函数如下它非常简单

劳动力的分工

在这篇文章的引言部分我暗示当通过JavaScript代码处理表现形式时高度发展的浏览器方正处理的一个方法是被压缩进不知名的Java applets中的这个方法要求在Java和JavaScript间双向通信下面几章会研究可用的选项

通过JAVASCRIPT代码存取Java applet暴露的成员和函数是直截了当的像上一节中的SetCalculatorMode()函数说明的一样文档内的applet不是通过使用它的Id / Name就是使用applet收集的索引来查询

例如

documentCalculatorSetCalculatorMode(Mode);// or documentapplets[]SetCalculatorMode(Mode);

使用netscapejavascriptJSObject类和netscapejavascriptJSException类完成了其它方向(Java to JavaScript)的通信为了找到这些类在什么位置我在我的硬盘驱动器上寻找所有包含字符串JSObject的文件令我吃惊的是这些文件在许多不同的程序中得到广泛地使用包括是Visual Interdev工程一部分的库

如果Netscape Navigat               

上一篇:下拉菜单全攻略之Javascript篇

下一篇:创建通过 WDO访问数据的 JSF 应用程序(2)