欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

[转]Flex的一些基本概念和原理 博客分类: Flex flex概念原理 

程序员文章站 2024-03-17 08:40:04
...
  • 一些概念
  • 按我的理解,Flex的一些概念可以这样和Java的一些概念对应起来。
    1. Java是一个大概念,它可以表示一种编程语言,和一个程序运行的平台(包括基本类库和虚拟机);Flash也是这样的一个大概念,它可以表示一种编程语言(ActionScript),和一个程序运行的平台(必须运行在浏览器中的Flash Player和可以独立运行的Flash Air);
    2. Swing是用Java语言开发的一个开发包,可以帮助我们开发在浏览器中运行的程序(Applet),也可以开发桌面程序,Flex是ActionScript语言的一个开发包,可以帮助我们开发在浏览器中和在桌面运行的Flash程序;
    3. Java源程序.java,编译为字节码文件.class;Flex源程序.as,编译为字节码文件.swf。

    • Flash Player的基本结构

    Flash Player包含4个主要部分:

    1. 媒体播放器

    媒体播放器负责渲染和绘画矢量图形、生成文本并处理文本布局、播放和处理音频和视频。

    2. 虚拟机

    ActionScript生成的二进制SWF代码,通过虚拟机执行,并置入Flash的显示列表(Display List)中,进行渲染和显示。

    3. 网络通讯层

    Flash Player通过网络通讯组件实现基于HTTP和HTTPS的网络数据通讯和SOCKET通讯。

    4. 平台基础层

    大多数情况下,Flash Player作为插件被内嵌于浏览器中(如下图),平台基础层保证Flash Player能够集成于宿主环境,处理类似授权、网络代理等与宿主平台相关的事情。


    [转]Flex的一些基本概念和原理
            
    
    博客分类: Flex flex概念原理 

    • Flash 虚拟机

    JRE(Java Runtime Environment)是编译和运行Java程序所必须的环境的集合,包含Java虚拟机、Java平台核心类和支持文件。CLR(Common Language Runtime)是微软.NET框架的虚拟机,用于编译并执行C#等语言代码。

    Flex世界,ActionScript虚拟机(简称AVM)扮演着JRE和CLR的角色。

    Flash Player 9包含了两个AVM:向下兼容的AVM1和新的、高度优化的AVM2。

    AVM1负责执行旧版 ActionScript(ActionScript 1和ActionScript 2),以便保持与现有内容的向后兼容。

    AVM2针对下一代 ActionScript 3.0的应用从头开始设计,可提供满足丰富互联网应用程序开发人员需要的性能和功能。

    AVM2是从Flash Player 9开始内置其中的全新ActionScript 3.0语言引擎,是最新的ActionScript虚拟机。针对新一代的ActionScript 3.0语言,Adobe重写了ActionScript虚拟机。新的虚拟机为RIA应用的开发者提供了更好的性能和更丰富的特性。AVM2 支持运行时错误报告、内置的调试和二进制套接字支持,使开发人员能够扩展Flash Player,与任何二进制协议一起使用。

    同AVM1完全不同的是,AVM2提供了即时编译器JIT(Just-in-time compiler)。通过将ActionScript字节码编译成机器码,最大化提升了应用执行速度。与此对比,AVM1是解释程序,通过将ActionScript源代码(不是字节码)翻译成机器码执行,是对ActionScript代码的解释执行。

    解释器是能够执行用其他计算机语言编写的程序的系统软件,它是一种翻译程序。它的执行方式是一边翻译一边执行,因此其执行效率一般偏低,但是解释器的实现较为简单,而且编写源程序的高级语言可以使用更加灵活和富于表现力的语法。AVM1是解释器。

    JIT(just-in-time compilation),即时编译,也被成为动态翻译,是一种通过在运行时将字节码编译为机器码,从而改善字节码编译语言性能的技术。AVM2内置JIT。

     

    • Flash 如何在浏览器中工作

     

    用户通过HTML页面访问Flash(即SWF文件)。Web服务器将发送的多媒体数据的类型通知给浏览器,而通知手段就是通过声明该多媒体数据的MIME类型,这样就可以让浏览器知道所接收信息的类型,并依此调用该类型信息所需的对应插件。

    SWF文件在HTML页面中以"application/x-shockwave-flash"的MIME类型存在。

    当浏览器读取到"application/x-shockwave-flash"这种信息类型时,会自动调用插件Flash Player来运行SWF文件。Flash Player对SWF进行渲染并显示,内嵌的AVM会执行ActionScript二进制编码。

    浏览器可以执行HTML中的JavaScript脚本程序,同时能够通过JavaScript脚本与Flash Player进行交互。反之,Flash Player中的AVM也能够通过外部接口同JavaScript进行通讯。

    通过Flash Player的网络通讯层,Flash Player也能够基于HTTP(s)或Socket实现与服务器端的通讯,例如与后端的Flash流媒体服务器FMS、服务器端Java程序甚至数据库之间进行网络数据通讯。