Java核心技术卷I基础知识2.5 构建并运行applet

2.5 构建并运行applet

本书给出的前两个程序是Java应用程序。它们与所有本地程序一样,是独立的程序。然而,正如第1章提到的,有关Java的大量宣传都在炫耀Java在浏览器中运行applet的能力。如果你对“过去的记忆”感兴趣,可以继续阅读下面的内容来了解如何构建和运行一个applet,以及如何在Web浏览器中显示;如果你不感兴趣,完全可以跳过这个例子,直接转到第3章。

首先,打开终端窗口并转到CoreJava/v1ch02/RoadApplet,然后,输入下面的命令:

 

图2-9显示了在applet查看器窗口中显示的内容。这个applet图示显示了司机随意减速可能导致交通拥堵的情况。1996年,applet是创建这种可视化显示的绝佳工具。

第一条命令是大家已经非常熟悉的调用Java编译器的命令。它将RoadApplet.java源文件编译成字节码文件RoadApplet.class。

不过这一次不要运行java程序。首先,使用jar工具将类文件打包到一个“JAR文件”。然后调用appletviewer程序,这是JDK自带的一个工具,可以用来快速测试applet。需要为这个程序指定一个HTML文件名,而不是一个Java类文件名。RoadApplet.html文件的内容如本节最后的程序清单2-3所示。

程序清单2-3 RoadApplet/RoadApplet.html

 

 

 

如果熟悉HTML,你会注意这里的标准HTML标记和applet标签,这会告诉applet查看器加载applet,其代码存储在RoadApplet.jar中。applet会忽略除applet标签外的所有HTML标签。

当然,applet要在浏览器中查看。遗憾的是,现在很多浏览器并不提供Java支持,或者启用Java很困难。对此,最好使用Firefox。

如果使用Windows或Mac OS X,Firefox会自动启用计算机上安装的Java。在Linux上,则需要用下面的命令启用这个插件:

 

作为检查,可以在地址栏键入about:plugins,查找Java插件。确保使用这个插件的Java
SE 8版本,为此要查找MIME类型application/x-java-applet;version=1.8。

接下来,将浏览器导航到http://horstmann.com/applets/RoadApplet/RoadApplet.html,对所有安全提示都选择接受,保证最后会显示applet。

遗憾的是,只是测试刚刚编译的applet还不够。horstmann.com服务器上的applet有数字签名。还必须再花一些工夫,让Java虚拟机信任的一个证书发行者信任我,为我提供一个证书,我再用这个证书为JAR文件签名。浏览器插件不再运行不信任的applet。与过去相比,这是一个很大的变化,原先在屏幕上绘制像素的简单applet会限制在“沙箱”中,即使没有签名也可以工作。可惜,即使是Oracle也不再相信沙箱的安全性了。

为了解决这个问题,可以临时将Java配置为信任本地文件系统的applet。首先,打开Java控制面板。

在Windows中,查看控制面板中的Programs(程序)部分。

在Mac上,打开System
Preferences(系统首选项)。

在Linux上,运行jcontrol。

然后点击Security(安全)标签页和Edit Site List(编辑网站列表)按钮。再点击Add(增加),并键入f?ile:///。点击OK,接受下一个安全提示,然后再次点击OK(见图2-10)。

现在应该可以在浏览器中加载文件corejava/v1ch02/RoadApplet/RoadApplet.html,applet将随周围的文本一同显示。结果如图2-11所示。

最后,在程序清单2-4中给出了这个applet类的代码。现在,只需要简单看一下。在第13章中,还会再来介绍applet的编写。

 

图2-10 配置Java信任本地applet

 

图2-11 在浏览器中运行RoadApplet

程序清单2-4 RoadApplet/RoadApplet.java

 

在本章中,我们学习了有关编译和运行Java程序的机制。现在可以转到第3章开始学习Java语言了。

 

时间: 2025-01-01 15:52:57

Java核心技术卷I基础知识2.5 构建并运行applet的相关文章

Java核心技术卷I基础知识2.1 安装Java开发工具包

第2章 Java程序设计环境 ▲ 安装Java开发工具包 ▲ 运行图形化应用程序 ▲ 使用命令行工具        ▲ 构建并运行applet ▲ 使用集成开发环境       本章主要介绍如何安装Java开发工具包(JDK)以及如何编译和运行不同类型的程序:控制台程序.图形化应用程序以及applet.运行JDK工具的方法是在终端窗口中键入命令.然而,很多程序员更喜欢使用集成开发环境.为此,将在稍后介绍如何使用免费的开发环境编译和运行Java程序.尽管学起来很容易,但集成开发环境需要吞噬大量资源

Java核心技术卷I基础知识1.3 Java applet与Internet

1.3 Java applet与Internet 这里的想法很简单:用户从Internet下载Java字节码,并在自己的机器上运行.在网页中运行的Java程序称为applet.要使用applet,需要启用Java的Web浏览器执行字节码.不需要安装任何软件.任何时候只要访问包含applet的网页都会得到程序的最新版本.最重要的是,要感谢虚拟机的安全性,它让我们不必再担心来自恶意代码的攻击. 在网页中插入一个applet就如同在网页中嵌入一幅图片.applet会成为页面的一部分.文本环绕着appl

Java核心技术卷I基础知识1.5 关于Java的常见误解

1.5 关于Java的常见误解 在结束本章之前,我们列出了一些关于Java的常见误解,同时给出了解释. 1.?Java是HTML的扩展 Java是一种程序设计语言:HTML是一种描述网页结构的方式.除了用于在网页上放置Java applet的HTML扩展之外,两者没有任何共同之处. 2.?使用XML,所以不需要Java Java是一种程序设计语言:XML是一种描述数据的方式.可以使用任何一种程序设计语言处理XML数据,而Java API对XML处理提供了很好的支持.此外,许多重要的第三方XML工

Java核心技术卷I基础知识3.1 一个简单的Java应用程序

第3章 Java的基本程序设计结构 ▲  一个简单的Java应用程序     ▲  字符串 ▲  注释                      ▲  输入输出 ▲  数据类型               ▲  控制流 ▲  变量                      ▲  大数值 ▲  运算符                  ▲  数组   现在,假定已经成功地安装了JDK,并且能够运行第2章中给出的示例程序.我们从现在开始将介绍Java应用程序设计.本章主要介绍程序设计的基本概念(如数

Java核心技术卷I基础知识1.2.1 简单性

1.2.1 简单性 人们希望构建一个无须深奥的专业训练就可以进行编程的系统,并且要符合当今的标准惯例.因此,尽管人们发现C++不太适用,但在设计Java的时候还是尽可能地接近C++,以便系统更易于理解.Java剔除了C++中许多很少使用.难以理解.易混淆的特性.在目前看来,这些特性带来的麻烦远远多于其带来的好处. 的确,Java语法是C++语法的一个"纯净"版本.这里没有头文件.指针运算(甚至指针语法).结构.联合.操作符重载.虚基类等(请参阅本书各个章节给出的C++注释,其中比较详细

Java核心技术卷I基础知识3.7.2 格式化输出

3.7.2 格式化输出 可以使用System.out.print(x)将数值x输出到控制台上.这条命令将以x对应的数据类型所允许的最大非0数字位数打印输出x.例如:   打印   如果希望显示美元.美分等符号,则有可能会出现问题. 在早期的Java版本中,格式化数值曾引起过一些争议.庆幸的是,Java SE 5.0沿用了C语言库函数中的printf方法.例如,调用   可以用8个字符的宽度和小数点后两个字符的精度打印x.也就是说,打印输出一个空格和7个字符,如下所示:   在printf中,可以

Java核心技术卷I基础知识3.7.3 文件输入与输出

3.7.3 文件输入与输出 要想对文件进行读取,就需要一个用File对象构造一个Scanner对象,如下所示:   如果文件名中包含反斜杠符号,就要记住在每个反斜杠之前再加一个额外的反斜杠: "c:\\mydirectory\\myf?ile.txt".       注释:在这里指定了UTF-8字符编码,这对于互联网上的文件很常见(不过并不是普遍适用).读取一个文本文件时,要知道它的字符编码--更多信息参见卷Ⅱ第2章.如果省略字符编码,则会使用运行这个Java程序的机器的"默

Java核心技术卷I基础知识3.8.5 多重选择:switch语句

3.8.5 多重选择:switch语句 在处理多个选项时,使用if/else结构显得有些笨拙.Java有一个与C/C++完全一样的switch语句. 例如,如果建立一个如图3-13所示的包含4个选项的菜单系统,可以使用下列代码:   switch语句将从与选项值相匹配的case标签处开始执行直到遇到break语句,或者执行到switch语句的结束处为止.如果没有相匹配的case标签,而有default子句,就执行这个子句.       警告:有可能触发多个case分支.如果在case分支语句的末

Java核心技术卷I基础知识3.6.6 码点与代码单元

3.6.6 码点与代码单元 Java字符串由char值序列组成.从3.3.3节"char类型"已经看到,char数据类型是一个采用UTF-16编码表示Unicode码点的代码单元.大多数的常用Unicode字符使用一个代码单元就可以表示,而辅助字符需要一对代码单元表示. length方法将返回采用UTF-16编码表示的给定字符串所需要的代码单元数量.例如:   要想得到实际的长度,即码点数量,可以调用:   调用s.charAt(n)将返回位置n的代码单元,n介于0-s.length(