本月微软的架构师David Chou将会在JavaOne的大会上做一个演讲,主题是在微软的Azure云平台上部署Java应用。考虑到Azure是典型的基于.Net应用的微软技术平台,InfoQ与Chou先生探讨了Java能在Azure上做什么,不能做什么。 首先,David Chou鼓励开发人员把Azure看作“另一个基于Windows服务器的开发环境,你可以往上部署代码...其模型可以理解为一个巨大的zip文件。如果你能把应用放入一个闪存驱动器,而且还能从驱动器中启动应用,那么就可以在Azure上运行你的应用了”。理论上这意味着只要Java开发人员为自己的应用绑定完整的JRE,然后写个小的C#引导程序就可以在Azure上运行Java了。 但实际上,一个典型的Java程序必须克服一些障碍才能运行。据Chou先生所言,依赖Java的NIO功能或使用了内部网络通信(例如Jboss集群)的应用是不能在Azure的网络沙箱内运行的。 为了说明这些限制,Chou先生描述了他是如何让一个基于Jetty的应用程序运行在Azure上的: 1. 使用Visual Studio创建Azure应用框架; 2. 把Jetty NIO ChannelConnector换为阻塞的IO ChannelConnector; 3. 以C#程序员的视角编写逻辑代码找到内部和外部端口,并用正确的端口参数启动Jetty; 4. 在Java应用的包内绑定Jetty应用容器和JRE; 5. 把Jetty的配置中涉及写文件系统的信息全部注释掉(这是个可选项,但如果你想绕过它,就需要编写更 多的C#代码)。 Chou先生认为目前在Azure上进行Java开发具备如下特点: 这是漫长旅途中的第一步,我感觉又回到了刚开始用Java开发的时候,而且我们没有IDE集成开发环境。构建客户端应用时我们不得不使用文本编辑器处理AWT。现在的阶段是:我们可以使用Java和部署一个完整的Java应用,但事实上还有很大的改进空间。 4季度会发布SDK1.3版本,Chou先生保证开发人员会更容易使用网络沙箱,减少限制,并提供更多的管理回调机制,用来启动进程、解压缩、用C#脚本引导应用。当问道哪种类型的用户试图把Java部署到Azure上时,Chou先生介绍了Domino's Pizza项目,微软提供帮助把基于Tomcat的应用迁移到了Azure上。除了把应用迁移到Azure的计算资源上,同时也把数据存储迁移到了微软的云存储中。这次迁移的动机是为了解决晚餐期间超过50%的交通高峰期,特别是在周五和周日的超级杯(美式足球冠军)。当问及这个试点项目是否着手实施了,他表示该项目仍处于构思阶段。 总的来说,如果你是个Java开发人员,而且安装了VisualStudio,同时还有一个对网络需求不敏感的Web应用,该应用没有使用太多的J2EE特性,那么你可以尝试将其部署到Azure的云上。其他人最好等年底SDK1.3的发布。想了解更多信息,请参加JavaOne周四早八点Chou先生的演讲。 |