Quite a few friends of mine are surprised about that I am working on Java for Windows Azure. Indeed, Windows Azure supports Java and it supports it really well. This posts summarize the core Java experience that are supported by Microsoft, its subsidiary and partners.

A. Development/Deployment Experience.

The official Windows Azure Java developer tool is Eclipse, Microsoft OpenTech took another step forward to provide a Windows Azure Plugin for Eclipse which enables customer to publish their Java/J2EE projects as Windows Azure Cloud Services. There are some limitations of this plugin, most prominantly, it has a hard dependency on Windows Azure Emulator which comes with Windows Azure SDK for .NET. As a result, Eclipse Plugin only runs on Windows operating system. 

Nevertheless, you can still Eclipse to develop your Java software on Linux/Mac, but it won't be able to be published on Windows Azure Cloud services from there. In addition to the official Eclipse plugin, you can also just get a Windows Azure Virtual Machine, and develop/publish your Java/J2EE application. Using Virtual Machines directly are not necessarily providing an inferior experience than the Eclipse plugin.

B. Java SDK.

Windows Azure SDK for Java provides official support for Windows Azure Storage Services, Service Bus, Service Runtime and Media Services. Using Windows Azure SDK for Java, you can send/receive Blobs from/to Windows Azure, send/receive Messages to/from Windows Azure, obtain the virtual machines status of Java VM is running on, upload video, change the encoding/format of the video and distribute the video to different devices and many many other features. It is not providing all the features  that Windows Azure services are offering, but it is capable of doing a LOT already. The source code of Windows Azure SDK for Java is open, you are more than welcome to read it, propose features of it and even contribute your own code to it.

C. J2EE experience.

The most broadly tested J2EE server on Windows Azure is Tomcat, however, there is no reason that other J2EE servers would not work.

D. Continuous Integration.

Jenkins server has been running successfully on Windows Azure, please see my previous blog posts for details about how to set it up. Microsoft OpenTech even published a Windows Azure plugin for Jenkins so that Jenkins will be using Windows Azure Storage Service instead of file system.

 

 

In conclusion, Windows Azure is providing a solid foundation for developing/running Java software on. Let us know if you have any feedback!