Developing Java on Azure

Part 2! In a previous post, I discussed the options for running Java workloads on Azure. Now it is time to discover some of the choices Azure offers to our software engineers!

Developing Java applications

Sourcecode

Application consist of source code that needs to be centrally stored and managed. Azure has many options for storing sourcecode, but also for working with external repositories. Although not something very specific for Java projects, still good to know Azure supports your favourite repository flavour!

Azure DevOps Git Repos

Azure DevOps (yes, this is the new name for VSTS f.k.a. Visual Studio Online) supports Git for your projects code repositories. Upon creation of a new Azure DevOps project, you are presented with some options for configuring the included Git repo.

Integration with GitHub, Gitlabs and others

Besides its own repositories, Azure has some great support for other flavours. If you configure a build pipeline for instance, you can pick from popular choices:

MongoDB

Our favourite document based database is also available on Azure. You can of course run your own VM or docker image, but Azure also offers a MongoDB as a Service. This service is called Azure Cosmos DB and is Microsoft’s globally distributed, multi-model database service. Azure Cosmos DB provides global distribution, elastic scaling and very low latencies with very high availability. And it comes with 5 different APIs including a MongoDB API.

MySQL

The popular relational database. Again, we can run this with our own VM or docker image, but it is also available as a managed service.

Azure DevOps

Azure DevOps is Microsofts collection of developer tools, cloud services and CI/CD pipelines. 

  • Azure Boards: Work Item Tracking
  • Azure Repos: the Git repos mentioned above
  • Azure Pipelines: build, test, deploy with CI/CD
  • Azure Test Plans: test tools
  • Azure Artifacts: package, share and ship your software

Although (again) not very specific for our Java projects, it is perfectly suitable. It supports continuous integration (CI) and continuous delivery (CD) pipelines for our Java apps in Azure out of the box.

More info: https://azure.microsoft.com/en-us/services/devops/

Jenkins

If Jenkins is your CI tool of choice, you can easily integrate it with Azure DevOps and still gain alot of benefits from the Azure tools. This way you can keep Jenkins for your CI builds and use Azure for the (continuous) deployments!

More info: https://docs.microsoft.com/en-us/azure/devops/pipelines/release/integrate-jenkins-vsts-cicd?view=vsts 

Maven

Microsoft provides a Maven Plugin for the Azure App Service. It provides seamless integration into Maven projects, and makes it easier for developers to deploy to different kinds of Azure Web Apps:

More info: https://github.com/Microsoft/azure-maven-plugins/tree/develop/azure-webapp-maven-plugin

Azure Pipelines

Azure Pipelines is part of the Azure DevOps tools, but also available standalone if that is all you need. Azure Pipelines offers cloud-hosted pipelines for Linux, macOS, and Windows with 10 free parallel jobs and unlimited minutes for open source projects.

If your source code resides on GitHub, it is even easier to get started with CD/CD! If you browse the GitHub CI Marketplace, you will find a plan to integrate with Azure in just a few clicks! 

More info: https://github.com/marketplace/azure-pipelines 

Plugins

There are several plugins available for IntelliJ and Eclipse that can really boost your Azure workflow: 

  • Azure Toolkit for IntelliJ provides templates and functionality that allow you to easily create, develop, test, and deploy cloud application to Azure.
  • Azure Toolkit for Eclipse provides the same functionality, but for the Eclipse IDE.

 See https://github.com/microsoft/azure-tools-for-java for more information on how to set this up.

Azure Functions

And to end this post, a Azure Service that natively supports Java: Azure Functions. Azure Functions are an easy way to run small pieces of code, or “functions,” in the cloud (think “AWS Lambda”). Functions is a solution for processing data, integrating systems, working with the internet-of-things (IoT), and building simple APIs and microservices. You can run them through triggers or on a schedule. It includes support for many languages, including Java!

More info: https://docs.microsoft.com/en-us/azure/azure-functions/functions-reference-java

But wait, there’s still more!

Microsoft has a lot of options for running and developing Java based workloads on Azure, but this is still not not the entire story ;). There are many, many more services that support Java in one way or another, but we will leave them for another time. In one more follow up post I will be reviewing options for operating your custom Java solutions on Azure.

/Y.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s