Cloud computing programming takes many forms. For back-end developers, it might mean the development of a cloud-native app or the continuous delivery of an interconnected set of microservices. For administrators, it might mean the development of a script that automatically provisions cloud-based resources. For web developers, it might mean the development of an Angular or React app that consumes cloud-hosted resources.
To choose the best cloud programming language for your needs, carefully consider the selection criteria below. Then, explore the details of some popular programming languages and their use cases.
Language selection criteria
Organizations should take these four factors into account when choosing a cloud programming language:
- cloud clients and services
- targeted cloud stack layer
- risk averseness
Cloud clients and services
The first step to determine which programming language is right for you is to ask which types of clients you will create and which types of cloud-based services you will access.
For example, a virtual reality (VR) headset that needs IBM Watson's machine learning (ML) capabilities has different language requirements than a simple iOS app that pulls images out of Alibaba's Object Storage Service.
Targeted cloud stack layer
Another consideration is whether you need a general, all-purpose programming language that does a variety of things well, or one that targets a specific technology.
"Choosing the right language to develop your application comes down to where in the stack you are building," said Rob Strechay, a senior cloud and infrastructure analyst with ESG, a division of TechTarget.
For example, Node.js and .NET are all-purpose platforms that enable developers to provision IaaS, develop cloud-native microservices and access AWS, Microsoft Azure or Google Cloud services. But you can't use these languages to enhance the Linux kernel that runs most cloud infrastructures. Nor can you use Node.js or .NET to extend Docker or Kubernetes runtimes. Only C and Go are valid options for those layers of the cloud stack.
IT and development teams don't always have to leave their comfort zone. Sometimes, it is best to tap into your existing knowledge of a given platform or framework. If you already have strong Java or .NET skills, for example, that is a compelling reason to choose Java or .NET.
Rob StrechaySenior cloud and infrastructure analyst at ESG
Additionally, avoid the hype around certain programming languages. For example, many developers tout Python as the preferred language for data science and AI, but it's not a requirement. Every cloud-managed AI and ML service, such as Google Cloud AutoML and Oracle Cloud Infrastructure Forecasting, comes with support for a variety of languages.
There's no need to teach Python to an established team of Java developers just to work with AI and ML in the cloud. Use the talents you have.
Lastly, an organization must determine its comfort with risk. For example, Rust is a programming language that developers can use at almost every layer of the cloud stack. However, the Rust for Linux project has not yet integrated any code into an official kernel build, and software development kit (SDK) support from the predominant cloud vendors is not universal. If an enterprise wants to avoid risk, it is a better option to choose a more establish language.
Cloud programming languages' features and use cases
When choosing a cloud computing programming language, organizations will typically evaluate the following 11 options.
Node.js is ideal for microservices development and deployment because npm provides a simple mechanism to add RESTful API support, connectors to data-tier resources and utility libraries that simplify commonly performed tasks and functions.
However, code that runs on a VM, like the Chrome V8 engine, will never perform as well as close-to-the-metal languages such as Go, Rust or C. In situations where every megabyte of memory counts, you might find Node.js applications lack the required runtime optimization.
Python is popular with developers because it supports imperative programming. Also known as functional programming, this approach enables developers to write simple, succinct functions that perform complex logic. These functional methods can also interact with external systems, without the ceremony and code verbosity associated with object-oriented programming languages such as Java.
Michael ForresterAWS-authorized instructor at Web Age Solutions
With Python, developers can quickly write scripts that provision infrastructure with vendor SDKs. The major cloud vendors provide SDKs for Python; when cloud platforms release new features, the Python SDK is prioritized for updates.
Python is also a favorite language among data scientists and AI development teams. For organizations that use AWS AI services or Google's ML tools, it makes sense to use Python-based SDKs to interact with cloud-based services.
"Python lets me do the data science stuff I want to do," Forrester said. "It's a general-purpose language, and it's really easy to learn."
Forrester does make the point, however, that languages like R or Julia may be even better suited for a developer who wants to "get into the weeds of data science." Cloud providers do not universally provide SDK support for R and Julia.
C is fast and efficient. It interfaces with a CPU kernel directly without the need to move through abstraction layers languages, as with Java. Operating systems, hardware drivers, hypervisors, GPUs that mine bitcoin, load balancers and virtualization tools are most commonly written in C and C++. C is a preferred choice when optimization and efficiency are top priorities.
All major cloud vendors provide full SDK support for C, although the role of C in the cloud world goes far beyond the ability to invoke IaaS and PaaS APIs. Developers primarily used C to write the behind-the-scenes software that supports the cloud. If you want to develop software for the cloud, C is a language developers need to know.
Go has a syntax similar to C. Like C, it also enables developers to compile it into abstraction-free binaries that communicate directly with a server's CPU or GPU. But Go, also known as GoLang, includes additional features not found in C, such as automatic garbage collection and memory protection.
"Docker and Kubernetes are written in Go, and that alone is a good reason to learn it," Forrester said.
It is also the language used to create Terraform. Along with AngularJS, Red Hat used it to build its OpenShift Container Platform. Any developer who wishes to contribute to open source projects like Terraform, extend the OpenShift Container Platform or customize their Docker and Kubernetes implementations at the source-code level will need to know Go.
But Go isn't just for open source projects.
"GoLang is a common development language within not only the open source community but large companies and startups," Strechay said. "For example, some of the AWS services are written in GoLang under the hood. GoLang is very popular because it is developer-friendly, pretty powerful and still very performant."
Java has long been at the top of developers' lists because it is cross-platform and object-oriented. It is a reliable and practical language to create cloud-native microservices. Java frameworks, such as Spring Boot and the Eclipse MicroProfile, have standardized and simplified the development of cloud-native apps.
Java has been actively developed for so long that connectors and drivers exist for every server-side technology, such as a legacy database, mail server, document store or file-system driver. This makes Java the ideal choice to create applications that can glue together different parts of an enterprise architecture.
Many organizations already have a pool of talented Java developers on staff. With Java SDKs available from each major cloud vendor, there's no need to have your staff learn a new language if you want to use Google Cloud or AWS APIs in your automation scripts or continuous delivery pipelines.
Microsoft's .NET platform has competed on steady ground against the Java platform for more than 20 years. In terms of cloud, the .NET framework plays the same role as the Java platform, with the key difference being the target user is a Microsoft developer. Since .NET is Microsoft's own development platform, there are over 100 cloud services from Microsoft that natively support .NET.
Like Java, .NET is a well-proven middle-tier framework with connectors to every type of back-end resource. This makes it a great choice for the development of microservices and RESTful APIs that glue together various parts of an organization's infrastructure. In the same way the Java platform supports many alternative languages, including Kotlin, Scala and Groovy, the .NET framework supports several as well, including C#, VB.NET, C++ and F#.
Other languages of note
PHP, Ruby and Perl remain popular for the server-side development of web applications, but they are not as commonly used as Java or Python for the development of microservices or for the provisioning of cloud-based resources.
Perl is not supported through an official SDK by any of the major cloud vendors, and only AWS provides official SDK support for both Ruby and PHP. There is no official Perl, Ruby or PHP SDK on Azure.
IaaS vendors across the board provide a .NET SDK for integration. For organizations that already use .NET, the continued use of .NET in the cloud makes sense.
Most handheld devices run Android. For developers interested in the development of Android apps that integrate with cloud-based resources, Kotlin is a good choice.
None of the major cloud vendors create an SDK specifically for Kotlin. However, it runs on the Java Virtual Machine and can access any Java SDK API. Organizations that create Android apps with Kotlin can use those same development skills to programmatically manage their cloud-based resources.
For Apple products, Swift is to iOS as Kotlin is to Android. Not all vendors provide a Swift SDK. IBM Watson provides a Swift SDK for iOS developers, and AWS did an alpha release of its Swift SDK in August 2021.
For platforms where a Swift SDK does not exist, developers can either call RESTful APIs that provide access to cloud-based resources or write their own code in a supported SDK, like Python or Node, and have their Swift apps call those routines directly.
Unity is the best fit for developing VR applications that use ML and visual recognition technology to make gameplay in the metaverse lifelike. Being a platform, Unity supports multiple languages, including C#, UnityScript and Boo.
IBM is the only cloud vendor with an SDK dedicated to the Unity platform for Watson, although you can expect more partnerships that link VR, AI, ML and the computational processing power of the cloud together into a single offering in the future.
Rob StrechaySenior cloud and infrastructure analyst at ESG
While C has been the core programming language for Linux since the OS project started, many in the Kernel development community think it's time for something new: Rust.
Rust is a close-to-the-metal programming language that can match the performance and efficiency of C. Special language constructs make bugs related to memory management less likely to occur, which is a big plus if the goal is to safely enhance the OSes that the cloud runs on.
"Rust tends to be popular at lower-level development, where speed of execution takes priority over flexibility or ease of use," Strechay said.
Amazon, Microsoft, Dropbox and Discord have all experimented with Rust. Google did an Android port of Rust and Amazon released an AWS Rust SDK preview in December of 2021. Other vendors have yet to follow suit, but where vendors have fallen short, open source projects have picked up the slack. While it might not be the best choice for mature organizations with expertise in other languages, the enthusiasm for Rust continues to grow.