`
cloud21
  • 浏览: 397347 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

划时代的Adobe Alchemy

    博客分类:
  • C
 
阅读更多
怕地址失效,贴出来再说:

        Adobe 自从2007年中推出了AS3支持了面向对象的开发方 式之后, 可谓动作不断. 去年又将AVM2的核心虚拟机tamarin 捐赠给了ECMA4 , 又将FlexBuild2直接升级到FlexBuild3, 这不,在08年末,又蹦出一个 Adobe Alchemy, 这在战略上具有极为重要意义. 而FLASH 从一个简单的动画客户端,一跃升级成一个未来富媒体应用程序的平台. 从这一系列战略步骤,不难看出ADOBE想成为WEB乃至桌面开发霸主的野心! 微软你要小心了.
       那么你可能要问了, 为什么Alchemy这么重要呢?  作为FLASH实践者, 效率问题是众所周知的. 因为, FLASH中运行的代码是 ACTIONSCRIPT, 它是一个脚本语言 .而这个语言是运行在FLASH内部的AVM2虚拟机 上的. 所以它的一些功能都需要经过, 语言解释成AVM2虚拟机字节码 ,然后AVM2运行字节码,最后由本地NATIVE语言 ,也就是本机2进制程序执行.虽然这解决了平台无关的问题,但是带 来一个副作用,就是比较慢,这就是为什么FLASH上一直没有杀手级应用的主要原因.
       从本质上来说, 这是一个构架上的问题. 而Alchemy 的出现,从构架上,改进了这个问题,你可以使用C/C++编写核心,快速的算法,让AS3进行调用, 达到加速的目标 . 这在过去,你只能使用ADOVE提供给你的内置native 程序. 现在,你可以自己干这件事情了. 既解决了平台无关的问题,又解决了效率的问题,甚至可以利用FLASH本身几十亿现有的客户端的优势,解决了渠道问题.可以这样说, Alchemy 打开了一个前所未有的时代!
        让我们看看 Alchemy 到底做什么. 从ADOBE的说明文档上可以看到, Alchemy 是一个 运行在低层的虚拟机 (Low Level Virtual Machine) ,他运行在AVM2之下. 那你又要问了.既然有了一个虚拟AVM2了,为什么还要一个LLVM?  其实, LLVM 将C/C++代码进行编译, 并且生成RISC-LIKE指令的字节码, 存储在缓冲区之中, 在FLASH运行开始的时候, 实时翻译成机器相关的本地代码 . 需要调用的时候是调用翻译之后的2进制本地代码.以此来提高整体速度.这就是LLVM的关键技术, 而运行时译 (Runtime-Compile) 这种技术有点像 .NET . 而这种LLVM和AVM2的区别是, AVM2实时解释运行脚本代码,LLVM 预编译本地运行 .可以这样认为 AVM2 是 JAVA虚拟机, LLVM是 .NET虚拟机.他们在构架上处于不同的层次,满足不同需求对速度的要求.   
        当生成编译完成后,字节码需要保存在一个缓冲区之内. 由于在框架之内需要和AVM2兼容,所以这个缓冲区,将以 AVM2能识别的BYTEARRAY 形式保存在内存之中. 即使使用反编译工具,反编译这个SWF文件,也看不到任何代码. 并且, alchemy自动生成一个 AS3的接口文件,以方便AS3程序进行调用 . 值得注意的是, 所有C/C++编译之后的数据,都以 SWC 函数库 的形式生成 , 用户可以在自己的工程里 IMPORT.经过使用后发现,由 Alchemy 生成的SWC文件是比较大, 比 C/C++源文件大的多.即使一个只有几十来行的纯C 功能,生成SWC后都会有100多KB. 参考ADOBE的文档上说, 编译C/C++的代码,会将C/C++所需要的所有库,比如C标准库 统统放到一个SWC里去,并且严格遵循POSIX标准. (可移植操作系统接口) 由于这种机制的存在, 我们甚至可以在C/C++里嵌入线程的支持, 来运行同步或者异步的功能. 从而弥补了FLASH是单线程这一不足! 这将是一件美妙的事情! 而本人认为,由于C/C++代码是公用一个C标准库的,所以只要SWC中的功能越多,那么从空间效率上就越是划算. 并且在目前的宽带之下,多个100来KB问题不是太大.
        当然,安全问题,也是alchemy的重头戏, 我们知道, FLASH 对安全问题是有一套非常严格的措施的,比如访问本地资源后,就不能访问远程资源,访问这个域的资源后,就不能访问其他域的资源.如果你要访问,就要在另外 一个域上安装一个沙箱(SecurityBox)文件,才能顺利访问. 而alchemy将C/C++带入FLASH之中,而C/C++ 是否能坏了这个规矩,让应用程序出轨呢? 答案当然是否定的,一旦这个程序被调用之后,其C/C++程序被严格的运行在一LLVM上,LLVM作为一个代理机构,向上,提供了对C/C++的平台支 持,比如独立的内存空间,独立的堆栈空间,独立的线程管理机构,等等. 向下将2进制程序输送到 本机CPU进行执行 . 所以安全问题上是非常到位的, 所以对C/C++来说,只要LLVM环境没有提供的,它将永远访问不到.
        Adobe已经对 alchemy 进行了比较深度的优化,并且我相信以后将继续下去.就从用户来说,由于有了alchemy 的出现,一些对速度要求较高的算法,都可以使用C/C++来代替 . 由于接口上都是AS3的接口,所以移植现有的程序将会非常轻松.比如目前游戏开发中广泛使用的那个BitmapData.CopyPixel 如果用C纯代码进行改写,那么速度将提高几十倍之多 .
        总结.  Alchemy 的出现,开启了一个全新的时代, 未来你将会发现网业上不再是简单画面,而是充满动态的不同的效果,给于用户全新的体验.随着LLVM提供的功能加多,比如将显卡硬件的功能作为一个抽象接口提供给C/C++调用,那么将来UNREAL3出现在网页上,你千万不要惊奇.甚至WOW出现在网页上,你也不要惊奇. 因为新时代的门已经打开!
分享到:
评论

相关推荐

    Flash页游未来新技术:Adobe Alchemy

    ### Flash页游未来新技术:Adobe Alchemy #### Adobe Alchemy 的推出目的与背景 Adobe Alchemy 是一项由 Adobe 公司推出的创新技术,旨在解决网页游戏开发者面临的性能瓶颈问题,并帮助他们利用现有的 C/C++ 代码...

    Alchemy3D——Flash3D引擎

    Alchemy3D是一款强大的Flash3D引擎,它为开发者提供了在Adobe Flash平台上构建高度交互性和视觉效果丰富的3D应用的能力。这款引擎的出现,极大地扩展了Flash的潜力,使其不仅仅局限于2D动画和游戏,而是能够涉足更为...

    Laravel开发-alchemy-api

    本文将深入探讨如何在Laravel项目中整合Alchemy API,这是一款强大的自然语言处理(NLP)服务,由IBM开发,主要用于文本分析、情感分析、实体识别等任务。 **Laravel开发** Laravel以其简洁的语法、模块化的结构和...

    Alchemy简单入门教程

    Alchemy 是 Adobe 开发的一款工具,可以将 C/C++ 的代码转换为 AS3 可以调用的格式,从而提高 AS3 的效率。Alchemy 可以将复杂的计算量大的代码转换为高效的 AS3 代码,解决了 AS3 在计算方面的不足。 Alchemy 的...

    flash alchemy api 翻译

    ### Adobe Alchemy API中文翻译与知识点详解 #### 标题:Flash Alchemy API翻译 **Adobe Alchemy** 是Adobe实验室推出的一个工具集,其主要功能是将C/C++代码转换为ActionScript 3 (AS3) 代码,使得开发者可以在...

    马尔科夫逻辑网系统alchemy

    华盛顿大学开发的Alchemy工具包是实现MLN的重要软件之一,因其易用性和高效性而受到广泛赞誉。 MLN的基础是第一阶逻辑公式,这些公式可以用来表达各种复杂的事实和规则。每个公式都与一个权重相关联,权重反映了该...

    马尔可夫逻辑网络工具包alchemy

    Alchemy是针对马尔可夫逻辑网络的一个开源工具包,它为研究者和开发者提供了一套强大的框架来构建、学习和推理基于MLN的系统。 首先,我们来详细了解一下马尔可夫逻辑网络。马尔可夫逻辑网络是Richard Fikes和Niles...

    全图alchemy安装说明

    Alchemy,源自Adobe的实验项目,旨在将C和C++的源代码编译成可在Adobe Actionscript VM2虚拟机上运行的程序,为开发者提供了利用大量现有C、C++代码资源的可能性。本文将详细介绍在Windows环境下,通过Cygwin进行...

    alchemy-annotations-1.4.zip

    《炼金术注解库:alchemy-annotations-1.4深度解析》 Alchemy-annotations,作为炼金术(Alchemy)框架的一部分,是一个开源项目,它提供了丰富的编程注解,旨在帮助开发者更高效、更优雅地编写Java代码。在这个...

    Alchemy Eye PRO v11.5.zip

    Alchemy Eye是一个专门设计用来监控从您电脑连线的网络上其它主机状况的软件,网管人员可以藉由这个简单实用的工具随时监控远端的主机是否仍然正常的运作,而不用亲自坐在主机面前操作,这项功能不仅可以有效的取代...

    alchemy一键安装版本

    玩炼金技术人有福气了,一键安装就可以直接使用的 alchemy 环境。

    lua-alchemy:使用Alchemy的ActionScript的Lua编程语言的端口(不再受支持)

    如您所知,Lua Alchemy基于旧的Adobe Alchemy技术,而Adobe不再支持该技术。 如果您需要浏览器中的Lua支持,请查看 , , 和其他基于JS的实现。 他们是未来。 如果确实需要在Adobe Flash中使用Lua,则可能需要找人...

    shineMP3_alchemy

    编辑-》首选参数-》actionscript-》actionscript 3.0设置-》库路径-》浏览到swc文件,然后选择那个shineMP3_alchemy.swc 另外,在“发布设置”的flash选项里,也要勾选“发布swc” 不需要通过后台或者fms,直接在...

    手机游戏 alchemy380全攻略

    ### 手机游戏 Alchemy380 全攻略 #### 游戏介绍 《Alchemy380》是一款基于原版360版本进行扩展的益智合成类游戏,增加了20种新元素,使得游戏更加丰富多彩。玩家通过合成不同的元素来解锁新的物品,体验创造的乐趣...

    RMI_Alchemy_Processors_AutoBoot_Boot_Loader_User's_Guide

    # RMI Alchemy Processors AutoBoot Boot Loader User's Guide ## 一、简介与背景 ### 1.1 概述 《RMI Alchemy Processors AutoBoot Boot Loader User's Guide》是关于如何安装、使用及定制适用于RMI Alchemy系列...

    基于Alchemy Au1200的多媒体导航系统设计

    《基于Alchemy Au1200的多媒体导航系统设计》 多媒体导航系统,作为一种融合了多媒体播放和GPS导航功能的智能设备,近年来受到广泛关注。本文主要探讨了一种特别针对车载和便携式应用的多媒体导航系统设计方案,该...

    小炼金术-Little-Alchemy 1.1.1

    软件名称:小炼金术:Little Alchemy APK名称:com.sometimeswefly.littlealchemy 最新版本:1.1.1 支持ROM:4.0及更高版本 界面语言:英文软件 软件大小:3.99 M 开发者:Recloak 小炼金术 Little Alchemy是一款...

    Alchemy

    DOS时代的经典图像格式转换软件,命令提示符方式运行,适合批处理。特别收藏!

    Alchemy Cygwin 最新版 1/2

    [1/2]共包含2个部分,此为第1部分 ...包含使用Alchemy所需的: Perl zip gcc / g++ 版本 setup-version: 2.697 如需下载其他内容,下载镜像请选择: http://ftp.jaist.ac.jp 会自动生成目录,已下载的内容会跳过: ...

    Alchemy教程教你将c转成swc由flash as3调用

    Alchemy 是 Adobe 推出的一个工具,它允许开发者将 C 或 C++ 代码转换为 ActionScript 3 可以调用的格式,以提高 Flash 平台的性能。在本教程中,我们将学习如何使用 Alchemy 将 C 代码转换为 SWC 文件,以便在 ...

Global site tag (gtag.js) - Google Analytics