一、Applet

Applet 是一种 Java 程序。它一般运行在支持 Java 的 Web 浏览器内。因为它有完整的 Java API支持,所以Applet 是一个全功能的 Java 应用程序。

如下所示是独立的 Java 应用程序和 applet 程序之间重要的不同:

  • Java 中 Applet 类继承了 java.applet.Applet 类。
  • Applet 类没有定义 main(),所以一个 Applet 程序不会调用 main() 方法。
  • Applet 被设计为嵌入在一个 HTML 页面。
  • 当用户浏览包含 Applet 的 HTML 页面,Applet 的代码就被下载到用户的机器上。
  • 要查看一个 Applet 需要 JVM。 JVM 可以是 Web 浏览器的一个插件,或一个独立的运行时环境。
  • 用户机器上的 JVM 创建一个 Applet 类的实例,并调用 Applet 生命周期过程中的各种方法。
  • Applet 有 Web 浏览器强制执行的严格的安全规则,Applet 的安全机制被称为沙箱安全。
  • Applet 需要的其他类可以用 Java 归档(JAR)文件的形式下载下来。

    Applet的生命周期

    Applet 类中的四个方法给你提供了一个框架,你可以再该框架上开发小程序:

    • init: 该方法的目的是为你的 Applet 提供所需的任何初始化。在 Applet 标记内的 param 标签被处理后调用该方法。
    • start: 浏览器调用 init 方法后,该方法被自动调用。每当用户从其他页面返回到包含 Applet 的页面时,则调用该方法。
    • stop: 当用户从包含 Applet 的页面移除的时候,该方法自动被调用。因此,可以在相同的 Applet 中反复调用该方法。
    • destroy: 此方法仅当浏览器正常关闭时调用。因为 Applet 只有在 HTML 网页上有效,所以你不应该在用户离开包含 Applet 的页面后遗漏任何资源。
      • paint: 该方法在 start() 方法之后立即被调用,或者在 Applet 需要重绘在浏览器的时候调用。paint() 方法实际上继承于 java.awt。

          Applet 类

        每一个 Applet 都是 java.applet.Applet 类的子类,基础的 Applet 类提供了供衍生类调用的方法,以此来得到浏览器上下文的信息和服务。

        这些方法做了如下事情:

        • 得到 Applet 的参数
        • 得到包含 Applet 的 HTML 文件的网络位置
        • 得到 Applet 类目录的网络位置
        • 打印浏览器的状态信息
        • 获取一张图片
        • 获取一个音频片段
        • 播放一个音频片段
        • 调整此 Applet 的大小

        除此之外,Applet 类还提供了一个接口,该接口供 Viewer 或浏览器来获取 Applet 的信息,并且来控制 Applet 的执行。

        Viewer 可能是:

        • 请求 Applet 作者、版本和版权的信息
        • 请求 Applet 识别的参数的描述
        • 初始化 Applet
        • 销毁 Applet
        • 开始执行 Applet
        • 结束执行 Applet

        Applet 类提供了对这些方法的默认实现,这些方法可以在需要的时候重写。

        "Hello,World"applet 都是按标准编写的。唯一被重写的方法是 paint 方法。

        Applet 的调用

        Applet 是一种 Java 程序。它一般运行在支持 Java 的 Web 浏览器内。因为它有完整的 Java API 支持,所以 Applet 是一个全功能的 Java 应用程序。

        <applet> 标签是在HTML文件中嵌入 Applet 的基础。以下是一个调用"Hello World"applet的例子;

        示例HTML 代码:

        <html>
        <title>The Hello, World Applet</title>
        <hr> <applet code="HelloWorldApplet.class" width="320" height="120">
        If your browser was Java-enabled, a "Hello, World"
        message would appear here.
        </applet>
        <hr>
        </html>

    二、Ajax

    Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术。
    Ajax = 异步 JavaScript 和 XML(标准通用标记语言的子集)。
    Ajax 是一种用于创建快速动态网页的技术。
    Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。[1]
    通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
    传统的网页(不使用 Ajax)如果需要更新内容,必须重载整个网页页面。

    1.工作原理

    Ajax的工作原理相当于在用户和服务器之间加了—个中间层(AJAX引擎),使用户操作与服务器响应异步化。并不是所有的用户请求都提交给服务器,像—些数据验证和数据处理等都交给Ajax引擎自己来做, 只有确定需要从服务器读取新数据时再由Ajax引擎代为向服务器提交请求。

    2.与传统web应用比较

    传统的Web应用交互由用户触发一个HTTP请求到服务器,服务器对其进行处理后再返回一个新的HTHL页到客户端, 每当服务器处理客户端提交的请求时,客户都只能空闲等待,并且哪怕只是一次很小的交互、只需从服务器端得到很简单的一个数据,都要返回一个完整的HTML页,而用户每次都要浪费时间和带宽去重新读取整个页面。这个做法浪费了许多带宽,由于每次应用的交互都需要向服务器发送请求,应用的响应时间就依赖于服务器的响应时间。这导致了用户界面的响应比本地应用慢得多。与此不同,AJAX应用可以仅向服务器发送并取回必需的数据,它使用SOAP或其它一些基于XML的Web Service接口,并在客户端采用JavaScript处理来自服务器的响应。因为在服务器和浏览器之间交换的数据大量减少,结果我们就能看到响应更快的应用。同时很多的处理工作可以在发出请求的客户端机器上完成,所以Web服务器的处理时间也减少了。

    3.优缺点

    (1).AJAX的优点
    <1>.无刷新更新数据。
    AJAX最大优点就是能在不刷新整个页面的前提下与服务器通信维护数据。这使得Web应用程序更为迅捷地响应用户交互,并避免了在网络上发送那些没有改变的信息,减少用户等待时间,带来非常好的用户体验。
    <2>.异步与服务器通信。
    AJAX使用异步方式与服务器通信,不需要打断用户的操作,具有更加迅速的响应能力。优化了Browser和Server之间的沟通,减少不必要的数据传输、时间及降低网络上数据流量。
    <3>.前端和后端负载平衡。
    AJAX可以把以前一些服务器负担的工作转嫁到客户端,利用客户端闲置的能力来处理,减轻服务器和带宽的负担,节约空间和宽带租用成本。并且减轻服务器的负担,AJAX的原则是“按需取数据”,可以最大程度的减少冗余请求和响应对服务器造成的负担,提升站点性能。
    <4>.基于标准被广泛支持。
    AJAX基于标准化的并被广泛支持的技术,不需要下载浏览器插件或者小程序,但需要客户允许JavaScript在浏览器上执行。随着Ajax的成熟,一些简化Ajax使用方法的程序库也相继问世。同样,也出现了另一种辅助程序设计的技术,为那些不支持JavaScript的用户提供替代功能。
    <5>.界面与应用分离。
    Ajax使WEB中的界面与应用分离(也可以说是数据与呈现分离),有利于分工合作、减少非技术人员对页面的修改造成的WEB应用程序错误、提高效率、也更加适用于现在的发布系统。

    (2).AJAX的缺点
    <1>.AJAX干掉了Back和History功能,即对浏览器机制的破坏。
    在动态更新页面的情况下,用户无法回到前一个页面状态,因为浏览器仅能记忆历史记录中的静态页面。一个被完整读入的页面与一个已经被动态修改过的页面之间的差别非常微妙;用户通常会希望单击后退按钮能够取消他们的前一次操作,但是在Ajax应用程序中,这将无法实现。
    后退按钮是一个标准的web站点的重要功能,但是它没法和js进行很好的合作。这是Ajax所带来的一个比较严重的问题,因为用户往往是希望能够通过后退来取消前一次操作的。那么对于这个问题有没有办法?答案是肯定的,用过Gmail的知道,Gmail下面采用的Ajax技术解决了这个问题,在Gmail下面是可以后退的,但是,它也并不能改变Ajax的机制,它只是采用的一个比较笨但是有效的办法,即用户单击后退按钮访问历史记录时,通过创建或使用一个隐藏的IFRAME来重现页面上的变更。(例如,当用户在Google Maps中单击后退时,它在一个隐藏的IFRAME中进行搜索,然后将搜索结果反映到Ajax元素上,以便将应用程序状态恢复到当时的状态。)
    但是,虽然说这个问题是可以解决的,但是它所带来的开发成本是非常高的,并与Ajax框架所要求的快速开发是相背离的。这是Ajax所带来的一个非常严重的问题。
    一个相关的观点认为,使用动态页面更新使得用户难于将某个特定的状态保存到收藏夹中。该问题的解决方案也已出现,大部分都使用URL片断标识符(通常被称为锚点,即URL中#后面的部分)来保持跟踪,允许用户回到指定的某个应用程序状态。(许多浏览器允许JavaScript动态更新锚点,这使得Ajax应用程序能够在更新显示内容的同时更新锚点。)这些解决方案也同时解决了许多关于不支持后退按钮的争论。
    <2>.AJAX的安全问题。
    AJAX技术给用户带来很好的用户体验的同时也对IT企业带来了新的安全威胁,Ajax技术就如同对企业数据建立了一个直接通道。这使得开发者在不经意间会暴露比以前更多的数据和服务器逻辑。Ajax的逻辑可以对客户端的安全扫描技术隐藏起来,允许黑客从远端服务器上建立新的攻击。还有Ajax也难以避免一些已知的安全弱点,诸如跨站点脚步攻击、SQL注入攻击和基于Credentials的安全漏洞等等。
    <3>.对搜索引擎支持较弱。
    对搜索引擎的支持比较弱。如果使用不当,AJAX会增大网络数据的流量,从而降低整个系统的性能。
    <4>.破坏程序的异常处理机制。
    至少从目前看来,像Ajax.dll,Ajaxpro.dll这些Ajax框架是会破坏程序的异常机制的。关于这个问题,曾在开发过程中遇到过,但是查了一下网上几乎没有相关的介绍。后来做了一次试验,分别采用Ajax和传统的form提交的模式来删除一条数据……给我们的调试带来了很大的困难。
    <5>.违背URL和资源定位的初衷。
    例如,我给你一个URL地址,如果采用了Ajax技术,也许你在该URL地址下面看到的和我在这个URL地址下看到的内容是不同的。这个和资源定位的初衷是相背离的。
    <6>.AJAX不能很好支持移动设备。
    一些手持设备(如手机、PDA等)现在还不能很好的支持Ajax,比如说我们在手机的浏览器上打开采用Ajax技术的网站时,它目前是不支持的。
    <7>.客户端过肥,太多客户端代码造成开发上的成本。
    编写复杂、容易出错 ;冗余代码比较多(层层包含js文件是AJAX的通病,再加上以往的很多服务端代码现在放到了客户端);破坏了Web的原有标准。

转载于:https://www.cnblogs.com/mjl4396/p/8758707.html

Java EE(五)相关推荐

  1. java怎么监听多个组件,java web(五):java web三大组件之另外两个和八大监听器

    java的三大组件指Servlet.Filter.Listener.八大监听器指八个接口.前面介绍了Servlet,现在介绍一下Filter拦截器以及拦截地址的设置, Listener监听那些事件. ...

  2. Day 17: 使用 JBoss Forge 和 OpenShift 构建部署 JAVA EE 6 应用

    今天的"30天学习30种新技术"挑战,我决定学习一下JBoss Forge.JBoss Forge是一个创建基于Maven的Java应用的开发工具,它可以帮助Java开发者快速地开 ...

  3. JSP简介及入门(含Eclipse for Java EE及Tomcat的配置)

    文章来源:http://www.cnblogs.com/smyhvae/p/4046862.html [前言] JSP本身是JavaWeb中的知识,但是在学习Android网络时,必然要涉及到与服务器 ...

  4. java ee 8 api_Java EE 8安全性API:概述

    java ee 8 api 新的安全性API Java EE 8中添加的最重要的一项新功能可能就是新的安全性API. 此新API的主要动机是简化,标准化和现代化跨容器和实现处理安全性问题的方式. 他们 ...

  5. 黑马ee在职进阶视频_进阶– Java EE 7前端5强

    黑马ee在职进阶视频 系列继续. 在初步概述和Arjan关于最重要的后端功能的文章之后 ,我现在非常高兴让Ed Burns( @edburns )使用他最喜欢的Java EE 7前端功能完成本系列. ...

  6. java与java ee_RxJava + Java8 + Java EE 7 + Arquillian =幸福

    java与java ee 微服务是一种体系结构样式,其中每个服务都实现为一个独立的系统. 他们可以使用自己的持久性系统(尽管不是强制性的),部署,语言等. 由于系统由一个以上的服务组成,因此每个服务将 ...

  7. java与java ee_CapeDwarf – Java EE上的Google App Engine

    java与java ee 我有很多爱好. 从早期的Java EE规范一路走来,并用Java EE 7进行了"云"之旅,我很好奇看到新宣布的CapeDwarf项目有什么库存,可以在内 ...

  8. Java EE 8安全性API:概述

    新的安全性API 可能,添加到Java EE 8中最重要的一项新功能就是新的安全性API. 此新API的主要动机是简化,标准化和现代化跨容器和实现处理安全性问题的方式. 他们做得很好. 由于三个新的注 ...

  9. xaas_从XaaS到Java EE – 2012年哪款该死的云最适合我?

    xaas 您是否曾经想过要使Java EE正常运行需要什么? 是的 多年. 从托管我自己的主机开始,转到一些托管产品 ,最后偶然发现了PaaS运动. 老实说,我并没有太认真. 我只是想把我的东西放到某 ...

  10. Java EE 8,当前状态是什么:自2015年底以来已完成工作的案例研究

    对于那些密切关注Java EE的人来说,在过去的六个月中已经很清楚,活动有所减少,尤其是在Oracle保持领先的JSR中. 这是怎么回事? 最近,在这方面,Java EE社区进行了很多讨论,我认为给开 ...

最新文章

  1. C 语言中的 switch 语句 case 后面是否需要加大括号
  2. oracle中的存在函数吗,Oracle判断表是否存在的函数
  3. 教你读懂Ajax的工作原理
  4. RocketMQ在Windows环境下部署(亲测有效)
  5. VB.NET 读写HTML 文件,VB.NET 简单介绍文件的读写----流类
  6. python解析http数据包_python 3 处理HTTP 请求的包
  7. 临床试验中edc录入_一文了解EDC临床试验数据采集系统
  8. Hive | 用sort_array函数解决collet_list列表排序混乱问题
  9. AndroidTV开发教程(1)
  10. 【论文】论文中的参考文献:国标GB/T 7714-2015文献类型与格式
  11. UWB通信中TOF技术详解
  12. 记录matlab符号方程符号解求法
  13. marshmallow库的简单学习
  14. RC-delay 反相器的应用(菜鸟学习)
  15. 一条sql语句在mysql中如何执行的
  16. 使用vue+golang+mysql写一个即时聊天、多人视频的项目
  17. android 显示图片和文字,android TextView显示文字和图片
  18. miix4 装linux,联想MIIX 4重装win7系统教程
  19. canvas+vue实现图片的缩放、拖拽
  20. ETL工具之Kettle开发教程第一节-入门

热门文章

  1. 玩转以太坊(Ethereum)的测试网络
  2. mybaits二十七:spring, spring mvc,mybatis(ssm) 整合
  3. python三十七:xml模块
  4. 二十年后的回眸(5)——一部单车闯天下
  5. [设计模式]原型模式
  6. shell字符串截取总结
  7. 磁盘 I/O 的概念
  8. Syntax error , insert “EnumBody” to complete EnumDeclaration
  9. 一个IO的传奇一生(8) -- elevator子系统
  10. 高性能的MySQL(1)锁和MVCC