If anyone would have suggested to me a couple of years ago that Microsoft was not only going to release one of its major cash cows (e.g. Microsoft Office) on both iOS- and Android-based platforms, but would also provide developers with some amazing tools to help them also build for and publish to non-Microsoft platforms, I would have likely questioned their sanity. However, in the past couple of years, we’ve had a changing of the guard with a new CEO, Satya Nadella, and we now have a brand new Microsoft playing in the new (read: current) world.
With this in mind, I thought I’d walk through some of the paths that Microsoft has taken to play nicely with others in the cross-platform world that we all live in today…
- Microsoft Office Mobile
Some would argue that Microsoft should keep these apps on the Windows/Windows Phone platform only. I would argue that Microsoft needs to be where their users are – and that’s not always going to be on a Windows device.
That said, it does seem a little disconcerting that, many times, Microsoft updates the non-Windows versions of these apps long before the corresponding Windows Phone version gets updated.
Chances are that if you’re reading this article, you already know what Microsoft Azure is.
In short, it’s Microsoft’s cloud platform: a growing collection of integrated services—compute, storage, data, networking, and app—that help you move faster, do more, and save money. But that’s just scratching the surface.
Microsoft Azure (originally called Windows Azure) has been generally available for nearly five years now (ref). In 2012, Microsoft introduced support for Linux-based virtual machines. By this point, there was also support for Python- and PHP-based web sites hosted on Azure.
Looking at the Virtual Machine Gallery in the Azure portal today, you will notice many non-Microsoft options available to you:
Likewise, when you create a new website in Azure, you have a lot of non-Microsoft choices that you can select from the Web App Gallery:
Microsoft Azure is great for quickly standing up new environments and tools so you can try them out without investing a lot of time in hardware and infrastructure. If you like the tools, you can continue to run them on Azure, paying for the resources you utilize.
Windows Server and Docker
Docker is an open platform for developers and sysadmins to build, ship, and run distributed applications.
The Docker engine currently relies on certain Linux-specific features so running it on Windows todays requires a virtual machine. You can readily create Linux VMs on Azure that contain Docker support.
In October, Microsoft announced a partnership with Docker to bring inherent Docker support to a “future release of Windows Server.” This will allow developers and organizations to create container applications using Docker and deploy them directly to Windows Servers. (more info)
Visual Studio 2015
Visual Studio is Microsoft’s premier developer tool. This is the tool that developers utilize and rely on when building applications for Windows, Windows Phone, and web sites. There are far, far too many features in Visual Studio to enumerate here (that could take literally hundreds, if not thousands, of posts to cover each and every feature in Visual Studio!) but, suffice it to say, that if you’re developing for the Microsoft platform, you want, err… need, Visual Studio.
You can now also use Visual Studio 2015 to create applications for the iOS and Android platforms. Some of the tools available to you for creating cross-platform apps using Visual Studio include:
- Debugging – you can use Visual Studio 2015 to deploy apps to Android or iOS and debug them just as you would any other app running on Windows. Cool!
- Visual Studio Emulator for Android – many of the existing Android emulators require that Hyper-V be disabled. Visual Studio 2015 now includes an Android emulator that runs on Hyper-V and avoids this conflict. (more info)
- Xamarin – Microsoft has also partnered with Xamarin to include Visual Studio support in its free offering, Xamarin Starter Edition (“later this year”). For those not familiar with Xamarin, it allows you to develop cross-platform apps for Windows Phone, iOS, and Android using Visual Studio (or Xamarin Studio) and C#.
Microsoft has provided a version control system for decades, with the current offerings being Team Foundation Server and Visual Studio Online. Historically, these two systems provided Team Foundation Version Control – a centralized version control system. About two years ago, Microsoft announced that it would start offering Git-based repositories as well – a distributed version control system.
Although Team Foundation Version Control is well supported by many 3rd party (non-Microsoft) products, there is much more support for Git within the open source/cross-platform community. For example, Apple’s Xcode has Git support built right into the product – but no support for Team Foundation Version Control.
Visual Studio Online
Whereas Team Foundation Server runs only on Windows, Visual Studio Online is a cloud-based offering that can be utilized by clients running any operating system.
For example, if you work in a Linux shop and use Eclipse to write Java applications, you can still make use of Visual Studio Online for version control needs (e.g. using Git), tracking work items, automating builds, and more. And, your first five users are FREE! (more info)
Since the introduction of Team Foundation Server, automated builds has been an integral feature. And, although you could get TFS to build Java-based apps, you had to really work at it because it is not a feature supported out of the box. If you wanted TFS to control your iOS builds, you might as well just forget about it!
At this year’s Connect(); event, Microsoft announced a new build system that will be coming in Team Foundation Server 2015 and Visual Studio Online. For the moment, we’ll simply refer to this new build system as Build v.Next.
One of the largest changes in Build v.Next, as it applies to this article, is that the new build system will be cross platform. The new build agents will be able to run on Windows, Linux, and Mac operating systems. You will be able to build and deploy Windows-based applications along with Android and iOS applications.
You can read more about Build v.Next in: Build v.Next–What do we know?
Application Insights is Microsoft’s tool for detecting issues, solving problems, and helping you to continuously improve your applications. As the name implies, it provides great insight into how your application is performing and how it is being utilized by your users.
Application Insights currently supports ASP.NET web applications and WCF services, Windows Phone and Windows Store apps.
You might be asking yourself, what does this have to do with cross-platform development?
Well, as of a couple days ago, Microsoft announced their acquisition of HockeyApp. With HockeyApp, Microsoft will be adding cross-platform, mobile support to Application Insights. This will include crash reporting as well as distribution and feedback functionality.
When all is said and done, Microsoft claims Application Insights will support Android, iOS, Linux, Java, Azure, Windows Phone, and other Windows devices.
.NET Core and More!
.NET Core is a modular development stack that is the foundation of all future .NET platforms. It’s already used by ASP.NET 5 and .NET Native.
So, if you get the itch to create an ASP.NET website on your Mac or Linux machine, go right ahead!
Although providing the .NET Core as open source is huge, there’s more… The .NET Foundation Projects site lists many other open source projects, some of which were open sourced by Microsoft (e.g. the .NET Compiler Platform [Roslyn]).
The .NET Foundation is an independent organization to foster open development and collaboration around the growing collection of open source technologies for .NET, Microsoft’s comprehensive development framework. It serves as a forum for commercial and community developers alike to strengthen the future of the .NET ecosystem by promoting openness, community participation and rapid innovation.
Although I’m not including everything in Microsoft’s cross-platform plans (simply because I do not know the full extent of their plans, nor have they likely made all of their plans public) you can see the company has come a long way from just a year or two ago. I for one am very excited to see where they are taking their technology and look forward to utilizing their development tools to develop for multiple platforms in the near future.