Microsoft made a large number of announcements last week at the BUILD conference, some of which surprising, about Windows 10 development. Here are some personal considerations, also regarding RAD Studio (both Delphi and C++Builder). Don't take this as an official Embarcadero announcement, as we still need some time to fully evaluate. Rest assured that full support for the Windows 10 platform is in the RAD Studio roadmap and the company is fully committed to it. Also, the information here is based on public information Microsoft has released so far, and that is not really complete or detailed.
Overall Microsoft Directions
At the BUILD 2015 conference, the company substantially reiterated its recent strategy of " cloud first, mobile first ", but gave it considerably more substance. Here I won't really cover much the cloud side, as there is limited direct tie with pure development (as long as you can interact via REST with cloud services, and use them for hosting applications and data). The focus around mobile, however, is very interesting and got a couple of spins:
- Treat each computer as a device, including a desktop PC. This implies adding services like notifications and push notifications, app advertising, and store purchase of third party applications, something Windows 8 almost totally failed to deliver. (By the way, their marketing spin of considering Android = KitKat to show Windows 10 will be a platform larger than Android looked quite foolish to me)
- Spread office and other Microsoft apps to all mobile platforms, and offer Azure services to all. This includes API integration for Office on all platforms, something of interest to many developers.
- Help developers outside of the Microsoft ecosystem (that is, WinRT) target both desktop and mobile version of Windows 10
This last is a new key element of the Microsoft strategy, and something significantly and directly affecting RAD Studio developers. But let's proceed in steps.
The (New) Universal Windows Platform
Until a little time ago, the Universal Windows Platform with WinRT API at its core (in a new version working across desktop and mobile) seemed like a new implementation of the largely unsuccessful "Modern App" strategy around Windows 8 time frame. The announcements at BUILD 2015 radically change the model and make it extremely more flexible and open to all developers.
If you want to read an overall overview of the Universal Windows Platform, you can refer to blog post by Kevin Gallo blogs.windows.com/buildingapps/2015/04/30/a-deeper-dive-into-the-universal-windows-platform/. There are some interesting elements in the strategy, including UI styling, some nice new components (not sure if I'm the only one thinking that the RelativePanel is very similar to FireMonkey MultiView component), and platform extensions.
One side element, but one that is very important to RAD Studio developers, is that some of the new Windows 10 features will become available via the traditional Win32/64 SDK, in a way that should be easy to consume for Delphi and C++Builder native applications. Rest assured that RAD Studio will have support for these APIs.
Universal Windows Platform Bridges
Even more important than the core platform features, was the announcement of a number of projects to host existing applications written with different technologies as part of the Universal Windows Platform. In other words, unlike in Windows 8, there are many ways developers can support the latest Microsoft platform, which is great news. This is done through 4 different "bridges", covered at dev.windows.com/en-us/uwp-bridges:
1. Project Astoria is an Android "compatible" runtime for Windows Phone. According to the current information, it looks like an existing Android APK can be used as is. A developer would need to update it only to take advantage of specific Microsoft services. Microsoft specifically mentions supporting both Java/SDK and C++/NDK, so I'm expecting Delphi and C++Builder Android applications to be supported. This will be great news, as RAD Studio developers will be able to target also Windows Phone with no change to their code.
2. Project Islandwood is an Objective-C toolchain available in Visual Studio for re-compiling iOS applications to target Windows Phone. This is not a direct bridge or a compatibility layer (unlike the Android bridge), as it seems to require opening the source code, adapting it (how much is hard to say) and recompiling it for the new target. This is of little direct interest to RAD Studio developer, who can target iOS from the same code base used for Android and other platforms.
3. Project Centennial is a virtualization environment for "traditional Win32 SDK and .NET desktop applications", so that they can run in a protected and secure environment on a desktop PC, Intel tablet, or notebook. Now the advantage is not to be able to run these applications on Windows 10, as they already work fine. The advantage is that by becoming first class citizen applications, your exsiting VCL apps (for example) will be able to get fully hosted on the Windows Store, with direct sale and installation from the store. This is different from the old scenario of applications that could get listed on the store, but were sold and downloaded in a traditional way. While the specific requirements, if any, are not known, we are already at work to make sure RAD Studio generated applications fully comply with the current Microsoft requirements for store listing. I personally believe that support for "Centennial" could really bolster new life into VCL applications. Microsoft claims these applications will be able to leverage new features using the SDK, but it is not clear if the same code will run also directly in a natively deployed scenario. Finally notice this brigde is for RAD Studio VCL and FireMonkey applications, for Visual C++ MFC applications, for .NET WinForms and WFP applications: In other words, RAD Studio developers are in a good company here!
4. Project Westminster is focused on moving mobile apps to the Windows 10 platform, and is of limited interest to RAD Studio developers.
What About Multi-Device Development?
Notice that the focus of Microsoft at BUILD wasn't as much into using a single tool for targeting multiple versions of Windows (let alone other platforms) but to let developers using other platform specific tools to add support for Windows 10 desktop and phone. While this is interesting, it doesn't help at all with the source code fragmentation witnessed today. How can RAD Studio help? By letting you keep your existing Windows applications on the best native library (VCL) and support Windows 10 platform in full (store included). At the same time, RAD Studio let's you create multi-device FireMonkey applications that with a single code base (written in Object Pascal or C++) can directly and natively target Windows (possibly now including Windows phone), OS X, Android, and iOS. This is still superior than managing a diverse array of tools and apps written in different languages for different platforms.
Given the information from BUILD 2015, RAD Studio looks as an even more impressive tool in today's landscape. If you don't already own XE8, try it today and start building single source applications that works across billion of devices today !