Microsoft’s New Middleware: Islandwood and Astoria
Alex Wilhelm and Frederic Lardinois (comments):
Today as expected, Microsoft announced that developers will be able to more easily bring their Android applications to Windows devices. The company said developers will be able to “reuse nearly all the Java and C++ code from an Android phone app to create apps for phones running Windows 10.” Developers will also be able to recycle their Objective-C apps for iOS using new tools in Visual Studio.
“If they’re using some Google API… we have created Microsoft replacements for those APIs.” Microsoft’s pitch to developers is to bring their code across without many changes, and then eventually leverage the capabilities of Windows like Cortana, Xbox Live, Holograms, Live Tiles, and more.
[…]
Microsoft is also looking toward existing Windows desktop app developers with Windows 10. Developers will be able to leverage their .NET and Win32 work and bring this to Windows universal apps. […] Microsoft is using some of its HyperV work to virtualize these existing desktop apps on Windows 10. Adobe is one particular test case where Microsoft has been working closely with the firm to package its apps ready for Windows 10. Adobe Photoshop Elements is coming to the Windows Store as a universal app, using this virtualization technology. Performance is key for many desktop apps, so it will be interesting to see if Microsoft has managed to maintain a fluid app experience with this virtualization.
With Project Islandwood, iOS developers will be able to take their iOS apps and build them for Windows. Microsoft has developed an Objective C toolchain and middleware layer that provide the operating system APIs that iOS apps expect. A select group of third parties have been using the Islandwood tools already, with King’s Candy Crush Saga for Windows Phone being one of the first apps built this way. King’s developers had to change only a "few percent" of the code in order to fully port it to Windows Phone.
For Android, there is Project Astoria. Rumors of Android apps on Windows have been floating around for some time, and in Windows 10 Microsoft is delivering on those rumors. Astoria will allow Android apps to run in Windows. Specifically, Windows Mobile (and yes, that’s now officially the name for Windows on phones and sub-8 inch tablets) will include an Android runtime layer that’ll let them run existing Android apps (both Java and C++) unmodified. Unlike Islandwood, which will require developers themselves to recompile their software to bring it to Windows, Astoria will in principle work with any old APK, without requiring the developer to do anything but publish the app in the store—as long as the APK sticks to the APIs that Astoria will provide.
The solution sounds complicated. Games are one thing — cross-compilation and shared code bases work fine for many games. But for actual apps, running apps designed for platform A on platform B never looks or feels right, even if technically it “works”. Running apps from platforms A and B on platform C? Yikes.
It seems you still have to rewrite the UI since Microsoft can’t ship Cocoa Touch.
Update (2015-05-02): Marcel Weiher:
They don’t claim or shoot for complete coverage or compatibility with a specific iOS version.
Swift is not there, dev said “coming”, suit said “we have no comment” (the interaction between the young and slightly insecure program manager and the old and very comfortable dev. was fun to watch).
Project conversion is one-way and apparently one-time, which could be an issue. Dev immediately said “why not two-way, hey, that’s a good idea, we’ll do that”.
copx:
It seems Microsoft actually wrote their own Objective-C runtime. I mean otherwise the guy would have said “we ported Apple’s runtime” or something like that. But he said “We are providing you with a great Objective-C runtime.”
“Following the launch of Windows 10, we will release “Project Islandwood”, a Universal Windows Platform Bridge toolkit that enables you to develop Windows apps using Objective-C.
Stoked and impressed that Microsoft implemented auto layout and nibs as part of Islandwood!
So it looks like Microsoft acquired Inception Mobile for ObjC on Windows.
It seems Microsoft is taking an identical path for Project Islandwood that Wine took for Win32. Expect similar issues.
3 Comments RSS · Twitter
Wonder how much of this is fruit of Microsoft working closer with Xamarin? Seems there's lots of sharing there now that Roslyn is open sourced.