JVM定制改进 @ 淘宝
淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011。
该内容已经被标记书签!
标记书签错误,请重试!
作者 张龙 发布于 2009年10月26日
在不久前召开的Adobe MAX 2009大会上,Adobe向与会者展示了如何通过Flash Professional CS5预览版为iPhone和iPod touch开发应用与游戏。现在读者已经可以从Apple App Store上下载这些应用了。感兴趣的用户现在可以注册以便在Flash Professional CS5正式发布后的第一时间内获得通知。
Apple iPhone是世界上最畅销的消费类电子产品。目前已经有85,000多个iPhone应用在卖了,这吸引了世界上众多消费者和开发者关注的目光。近日 Adobe Labs发布了万众期待的iPhone开发主页。对此,社区先锋Serge Jespers说到:”今年底Adobe将发布Flash Professional CS5公共beta版,开发者可以凭借该版本使用其最擅长的Flash平台工具和技术为iPhone开发应用了,而这一直是众多的Flash迷们梦寐以求的事情。“Adobe专家Mark Doerthy对此说到:
没错,我们已经将Flash平台引入到了iPhone OS上。事实上,我们已经在Apple App Store上发布了不少应用。一开始,我们还对此事采取了保密措施,但现在事实已经证明Flash能够高效运行在iPhone上而无需做任何修改。大家可以从Apple App Store上下载这些应用尝鲜:Just Letters、Red Hood、Chroma Circuit、FickleBlox、That Roach Game、Trading Stuff及South Park Avatar Creator。要想在iPhone上运行Flash可不是件容易事,结果总是会有这样或那样的限制,但很多人都向我们明确表示这可是Adobe在移动业务上的头等大事,所以我们加足马力干了一年多来实现这个需求。
Flash Professional为广大的开发者提供了新式工具,这些工具将包含在今年底发布的Flash Professional CS5公共beta版中。现在大家就可以通过Flash Player 10或是Adobe AIR 2.0 API开发移动项目了。
目前还有很多典型的iPhone特性尚未得到支持,他们是:
- 从文件系统中选择照片
- 从地址薄中选择联系人
- 照相机
- 剪切/复制/粘贴
- 附件支持
- 应用中的购买支持
- 端到端支持
- 地图
- iPod库访问支持
- 指南针
- 发布通知
- 音频/视频录制
由于工作量巨大,同时缺少对Apple公共API访问的支持,不少Flash特性被放弃了,它们是:
- 嵌入式的HTML
- RTMPE
- H.264视频
- 动态装载SWF
- PixelBender
那Flex又如何呢?在Adobe MAX 2009上,Adobe专家专门围绕着Adobe Flex Mobile Framework(叫做”Slider“)进行了探讨。他们希望能在iPhone上高效运行该框架。届时,大家可以使用熟悉的工具、API以及核心框架进行开发了。尽管在iPhone上使用Flex没有什么技术上的难题,但目前的问题是,一旦运行你就会发现巨大的性能问题,到时候只能针对移动设备的交互重写组件了。
来自Adobe的技术专家Aditya Bansod说到:
无数的Flash开发者向我们哭诉他们是多么渴望为App Store创建应用,因此我们必须夜以继日地工作,就是为了将他们的才华和创造力带到iPhone上。在详细了解Apple的软件声明、许可等内容后,我们觉得最好的方式就是为开发者社区提供一个编译器以将SWF内容打包成为本地的iPhone应用(当然了,我们确信这么做并没有违背Apple的法律声明)。
接下来,Aditya Bansod向我们介绍了通过Flash开发iPhone应用的方式:
我们是通过Low Level Virtual Machine(LLVM)编译设备让这一切成为可能的。LLVM是个模块化、灵活的编译系统,在很多项目中都得到了广泛的应用。之所以选择LLVM的主要原因就是看中了其在iPhone开发中所表现出的灵活性和适应性。我们创建了一个新的编译器前端,这样LLVM就能够理解ActionScript 3并通过其现有的ARM后端输出本地的ARM汇编代码,这个过程称之为预先编译(AOT),它与Adobe Flash Player和桌面上的Adobe AIR功能所使用的即时编译(JIT)正好相反。既然可以预先将ActionScript编译到ARM中,那么应用就能够获得JIT所提供的所有性能方面的优势,而最后的应用也无需运行时了。
由于我们自己实现了整个编译过程,这样开发者就可以凭借Flash技术和ActionScript 3创建应用了。在这个过程中,我们还公开了开发者所熟知的API,因此他们不仅可以使用ActionScript,还可以按照自己习惯的方式来构建应用。在为iPhone创建应用时,最终的二进制代码将不会包含解释代码和运行时。你所创建的应用就是一个完完全全的本地iPhone应用。
那么该如何为iPhone构建应用呢?其实很简单。即将发布的Adobe Flash Professional CS5 beta版包含了创建iPhone应用所需的一切。开发者可以访问几乎所有的AIR 2.0和Flash Player 10.1 API。比如可以使用RTMP、Remote Shared Objects、AMF API以及SQLite并访问文件系统。大家可以查看Adobe Labs上的开发者须知进一步了解相关信息。
首先在桌面上创建符合iPhone屏幕大小的应用。iPhone的显示大小(很多智能手机都是如此)是320 × 480。如果应用没有处在全屏模式下,那么状态栏还要占据20个像素,因此在构建应用时需要考虑到这些因素。然后要记住,手指就是定点设备。可以使用鼠标事件(以及触摸事件)来跟踪用户的意图,但请牢记手指并非精准的定点设备。有时手指在屏幕的一边滑下来却在另一边又滑了上去。在桌面开发中经常会利用的某些行为并不一定适合于iPhone。
第三点也是最为重要的一点就是在构建应用时一定要考虑性能问题!iPhone并非桌面计算机,虽然有强大和复杂的硬件设备,但不同的设备之间还是存在着巨大的差异性的,比如内存容量以及处理能力等等。
如果具有使用Adobe Flash Lite或其他移动平台开发应用的经验,那么就可以利用其中的很多技术和技巧,比如缓存位图、限制显示列表的深度等等。为了简化高性能应用的开发,iPhone应用还可以使用增强的渲染管道(利用到了OpenGL ES),它增强了Flash渲染模型以让开发者充分利用iPhone上的GPU。通过这种渲染方式,开发者就可以修改显示对象并将其放到硬件上面。选择这种渲染方式有利也有弊,具体信息请查看Adobe Labs上的开发者须知。
一旦构建好应用就可以将其部署到iPhone或是iPod touch上进行测试了。如果对自己的应用很满意,那就签上你的证书上传到iTunes Connect上吧。就是这些了,以上就是采用Flash开发iPhone应用的整个过程。
请大家持续关注InfoQ中文站对该主题的后续报道。另外,也请抽出一点时间参加InfoQ中文站的小调查。
张龙 热衷于编程,乐于分享,对新技术有强烈的探索欲,对Java轻量级框架有一定研究。
淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011。
2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。
12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011。
篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011。
本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。
随着JDK 7的发布,字节码指令集终于迎来了第一位新成员——invokedynamic指令。这条��增加的指令是JDK 7实现“动态类型语言(Dynamically Typed Language)”支持而进行的改进之一,也是为JDK 8可以顺利实现Lambda表达式做技术准备。在这篇文章中,我们将去了解JDK 7这项新特性的出现前因后果和它的意义。
随着互联网应用的发展,Java分布式远程服务技术受到越来越多的关注,本文将对各种相关实现以示例的形式逐一介绍,并总结其中的优缺点,使读者能够在技术选型时有所准备。这是文章的下篇。
没有回复
关注此讨论 回复