At JavaOne, Microsoft announced that Azure Functions, which allows users to run small pieces of code in the cloud, support Java. This update adds to the number of supported languages for Azure Functions and makes Microsoft the second major cloud provider to introduce serverless Java support.

At Ignite, Microsoft ported Azure Functions to .NET Core 2.0, enabling cross-platform .NET availability and providing the runtime to allow support for other programming languages. Java is now in a public preview and one of the longest outstanding requested features among developers using Azure Functions.

Microsoft also released a new plug-in for the Maven build-automation system enabling developers to create, build and deploy Azure Functions from their existing Maven-enabled projects.

Almost a year ago Microsoft released Azure Functions, the serverless compute capability for running event-driven applications. Developers write Azure Functions in programming and scripting languages such as C#, F#, JavaScript (Node.js), PowerShell, PHP, Python, and Bash, or upload executable CMD or BAT files to run as a function. Functions can integrate with other Azure services such as Cosmos DB, Service Bus, Storage, and third-party services such as GitHub. Azure services can trigger a function to execute a piece of logic or serve as input and output through configurable bindings. Microsoft also offers a set of templates for tasks such as Azure Event Nubs receiving a new event, running on a specified schedule, and processing Service Bus messages.

Azure Functions support authentication via standard OAuth providers, including Azure Active Directory, Microsoft accounts, Facebook, Google, and Twitter. Java will share the same capabilities, as Nir Mashkowski, partner director of program management Azure app service, explains on Microsoft’s developer’s blog:

The new Java runtime will share all the differentiated features provided by Azure Functions, such as the wide range of triggering options and data bindings, serverless execution model with auto-scale, as well as pay-per-execution pricing.

With the Java support, developers do not need to use new tools. They can use IDEs and editors like Eclipse, IntelliJ, and VS Code to build and debug Azure Functions locally on their machines.

Image source: https://azure.microsoft.com/en-us/blog/announcing-the-preview-of-java-support-for-azure-functions/

The major cloud providers all invest in their serverless platforms to promote further use of their other services. Events from these other services—including databases and storage—trigger executions of serverless compute instances whether it is Azure Functions, AWS Lambda, Google Cloud, or the new Oracle Fn platform.

The differences between the platforms range from deployments to pricing. For example, Azure Functions provide manual or metered scaling (App Service Plan), or sub-second automatic scaling (Consumption Plan), while AWS Lambda and Google Cloud only scale automatically. Language support in this context differs significantly—Azure Functions and Oracle Fn have broader language support, while Google Cloud only supports JavaScript, and AWS Lambda supports C#, JavaScript, Java, and Python. Furthermore, Java is ranked in the top language rankings from RedMonk and Stack Overflow, making the presence of Java valuable in most of the serverless platforms.

Charles King, a principal analyst with Pund-IT, recently commented on Microsoft and Oracle Java support: