Java 在微软的 Azure 云平台上迈出了第一步

  • Tim Cull
  • 池建强

2010 年 9 月 26 日

话题:Java微软云计算AzureDevOps语言 & 开发架构

本月微软的架构师 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 开发人员,而且安装了 Visual Studio,同时还有一个对网络需求不敏感的 Web 应用,该应用没有使用太多的 J2EE 特性,那么你可以尝试将其部署到 Azure 的云上。其他人最好等年底 SDK1.3 的发布。想了解更多信息,请参加 JavaOne 周四早八点 Chou 先生的演讲。

查看英文原文:Java's Baby Steps on Microsoft Azure Cloud

Java微软云计算AzureDevOps语言 & 开发架构