MS Open Tech http://msopentech.com Fri, 31 Oct 2014 21:53:01 +0000 en-US hourly 1 http://wordpress.org/?v=3.9.2 Docker Community Updates from Tech Ed and Docker Global Hack Day http://msopentech.com/blog/2014/10/31/docker_community_updates/ http://msopentech.com/blog/2014/10/31/docker_community_updates/#comments Fri, 31 Oct 2014 21:21:18 +0000 http://msopentech.com/?p=880421 Read More]]> As MS Open Technologies, Inc. recently announced our intention to build upon an existing engagement with the Docker community, Microsoft Corp. selected the TechEd Europe conference in Barcelona this week to demonstrate some of our work on the Docker Client tools. In Mark Russinovich’s section of the opening keynote, he showcased a prototype of the forthcoming Windows Docker client tools (at present the tools are only available on Linux). In addition, Microsoft used this forum to announce CoreOS as the latest Linux distribution endorsed for Microsoft Azure (Mark’s Docker demo used a CoreOS VM on Azure as the Docker host).

Windows Docker Client Prototype

You can watch video of the Tech Ed demo (the Docker section starts at 1:19:45). In it, you will see:

Mark first shows how he previously created a CoreOS virtual machine on Microsoft Azure using a proposed “docker host” command. Note this command, currently in an early stage of implementation (see below), will significantly improve on the current solution, which requires the installation of Azure cross-platform CLI tools. By bringing this functionality into the Docker CLI, it will become even easier to manage Docker containers and hosts with the standard Docker tooling.

Then Mark deploys a container with WordPress + Ubuntu to this host. He uses the standard “docker run” command which Docker users are already familiar with. Seconds later, the CoreOS host has a containerized instance of WordPress up and running, and Mark demonstrates that it can be accessed within his browser.

There are two truly significant things to note in this demo:

First, the whole demo (which includes a number of explanatory steps not detailed above) is just seconds over three minutes in length. Think about that for a moment. Having created a CoreOS VM running on Azure you can fire up a container with a fully configured instance of WordPress in just seconds. Think of the advantages this would bring to your own applications.

The second is that this demo used a prototype of the Docker client running on Windows. Today, the client only works on Linux. By bringing the client to Windows, we are making it possible to select your operating system of choice to manage Docker containers. This priority will carry forward as we bring the Docker Engine to Windows Server in the future, thus allowing applications to be built and deployed as Linux containers or Windows containers - or an optimized mix of both.

Docker Community Evaluation of Docker Hosts Proposal

The Docker community recently held their second Global Hack Day with activities in more than 30 cities around the world. One component of this event allowed community members to describe and discuss new proposals for the Docker project. Nathan LeClaire from Docker Inc. proposed the Docker Host feature - the very same feature demoed at TechEd Europe.

Nathan outlined why the Docker host feature is important and described how work done by the community implements his proposed solution, including the Azure implementation discussed above. It was great to see Nathan using our code as an example of how it might work in practice, and we look forward to improving upon this proposed functionality.

You can view Nathan’s demonstration and subsequent review of the proposal in this video on the Docker site (the section starts at 16:00). The proposal is being discussed on GitHub with the Git branch for the implementation being maintained by Ben Firshman, also of Docker Inc.

Docker Global Hack Day Inspires Azure Storage Driver for Docker

One additional inflection point on container news: MS Open Tech engineering wizard Jeff Mendoza and the equally impressive Ahmet Alp Balkan from the Microsoft Azure team worked collaboratively to enable Docker users to host private Image Repositories on Azure, as part of the Docker Global Hack Day. As with all our work, our focus is on promoting choice by enabling interoperability. For the Seattle event, our team focused creating tools that increase the available choices for Docker users who wish to host their own private registries.

The team implemented a feature that allows private Docker registries to be stored in Azure blob storage. This work is now merged into the Docker codebase and can be used today (if you are brave enough to use unreleased code). Given that the code has already been merged it is likely that the project maintainers may elect to include it in a future release.

Why Are Containers so Important?

Containers are an innovative concept, and it appears that people are looking to wrap their heads around how containers apply to them. A colleague of mine over in the Microsoft Azure team, Madhan Arumugam Ramakrishnan, and I felt it might be useful to examine this further. The video below shows some of our discussion and white-boarding on the topic:

A Great Start

We started our engagement with Docker by ensuring users could run Linux containers on Azure using the tooling they wanted. We made this initial support available the same day Docker issued its 1.0 release. With subsequent  announcements, we have committed to cultivating an even closer relationship with Docker and its community. The work described here is the first of many small steps you can expect to see as we deliver on these commitments.

]]>
http://msopentech.com/blog/2014/10/31/docker_community_updates/feed/ 0
Graphics Diagnostics (formerly PIX) and OpenGL ES via ANGLE http://msopentech.com/blog/2014/10/30/graphics-diagnostics-formerly-pix-and-opengl-es-via-angle/ http://msopentech.com/blog/2014/10/30/graphics-diagnostics-formerly-pix-and-opengl-es-via-angle/#comments Thu, 30 Oct 2014 20:51:12 +0000 https://msopentech.com/?p=880301 Read More]]> logoangle The Visual Studio Graphics Diagnostics tools (formerly known as “PIX for Windows”) are a fantastic set of graphics analysis tools for Windows and Windows Phone, designed to help DirectX developers diagnose rendering issues and identify performance bottlenecks in their applications. The tools are great for developers who want to take basic measurements of their applications (such as the frames-per-second) under certain scenarios. The tools are even better for developers who want to debug complicated rendering issues in their graphics scenes, allowing these developers to “capture” graphics traces of their apps, and later “replay” these traces and debug their issues pixel-by-pixel in the “Visual Studio Graphics Analyzer" tool.

These tools were invaluable to me when I debugged graphics issues as a developer on Windows Phone 8.1.

Since ANGLE is an OpenGL ES to DirectX translation layer, any developer using ANGLE to write a Windows Store app for OpenGL ES can also make use of the Visual Studio Graphics Diagnostics tools!

In the future-dev branch of ANGLE, we have made it easy for you to use the Graphics Diagnostics tools with ANGLE. To use them, all you have to do is open your project in Visual Studio 2013 (Update 3+ highly recommended), and go “Debug->Graphics->Start Diagnostics”. You should immediately see a graph showing the frames-per-second of your app. You can then click on the “Capture Frame” button to capture a single frame of your app. Clicking on this frame will open it in the Visual Studio Graphics Analyzer tool. Here is an example of this, which is a capture of the default “App for OpenGL ES” template running on a Lumia 630:

clip_image002

On the left is a list of the D3D11 events in the captured frame, grouped by the OpenGL ES events that triggered them. On the right is a preview of your scene: as you move up and down the event list, you will be able to see how your scene is constructed. This works for any rendering that your app performs: you can see any textures or shaders that your app uses, and even any off-screen rendering that your app might perform. If you click on an individual pixel on the right of the screen then the “Graphics Pixel History” will appear, showing every draw call in the captured frame which affected that pixel. If you click on a draw call then you will be able to step through its shader execution and see how your pixel was colored.

This was a simple overview of the Graphics Diagnostics tools. It has many other uses, and there are many other tools available (particularly under the “View” menu in the Visual Studio Graphics Analyzer).

For more information about the Visual Studio Graphics Diagnostics tools, please visit MSDN pages such as this.

These tools are available for Windows Store applications on both Windows 8.1 and Windows Phone 8.1, across all supported architectures (ARM, x86 and x64). Please note that some features, such as the “Frame Analysis” tool, require a phone that shipped with Windows Phone 8.1 on it. If you experience difficulties using the tools with ANGLE on a certain platform/configuration then please let us know, either via a comment below or by filing an “Issue” on our GitHub page.

Austin Kinross

Software Engineer

]]>
http://msopentech.com/blog/2014/10/30/graphics-diagnostics-formerly-pix-and-opengl-es-via-angle/feed/ 0
MS Open Tech releases Open Source Microsoft cloud server Chassis Manager software V2 http://msopentech.com/blog/2014/10/30/chassis-manager-v2/ http://msopentech.com/blog/2014/10/30/chassis-manager-v2/#comments Thu, 30 Oct 2014 08:00:35 +0000 http://msopentech.com/?p=880151 Read More]]> Today a post on Microsoft’s Server & Cloud blog covered plans to announce at the Open Compute Project (OCP) EU Summit the completion of a 2nd-generation Open CloudServer (OCSv2) specification. This is an exciting step for the industry, and as part of this development MS Open Tech is pleased to announce the release of an open source reference implementation of Chassis Manager V2 and an OCS Operations Toolkit. You can find full source code, as well as testing and diagnostic tools, available today from the project repos on GitHub:

These releases build on the open source release of Chassis Manager V1 in January of this year, and as Kushagra Vaid, General Manager of Microsoft’s server engineering division, said in today’s blog post, “OCS v2 incorporates a number of improvements, delivering greater performance and more flexibility. In all, we at Microsoft are very excited about the tremendous momentum we see in the Open Compute Project, and see it as an excellent community to foster more efficient datacenters and accelerate the adoption of cloud computing.”

Microsoft is openly sharing the fruits of experience gained in managing very large-scale services such as Office 365, Microsoft Azure, Bing, Xbox and many others, and MS Open Tech is proud to be part of this ongoing commitment to openness and innovation in cloud computing. We look forward to continued collaboration with Microsoft and the OCP community!

Colleen Evans
Principal Program Manager
Microsoft Open Technologies, Inc.

 

]]>
http://msopentech.com/blog/2014/10/30/chassis-manager-v2/feed/ 0
MS Open Tech News from TechEd Europe http://msopentech.com/blog/2014/10/29/ms-open-tech-news-teched-europe/ http://msopentech.com/blog/2014/10/29/ms-open-tech-news-teched-europe/#comments Wed, 29 Oct 2014 13:37:25 +0000 https://msopentech.com/?p=880061 Read More]]>

clip_image002

After a great first day here at TechEd Europe in Barcelona, there is so much news to share that I almost don’t know where to start!

It wasn’t so long ago that TechEd Europe was mostly a venue for Microsoft to share news and guidance from TechEd North America with European customers. There wasn’t often much that was developed between the two events, but these days nothing could be farther from the truth! You can really see new openness and agility of Microsoft highlighted in all the news that has happened since TechEd North America in May, and much of the news yesterday was due in no small part to the efforts of MS Open Tech.

Let’s begin with the TechEd Europe keynote. Mark Russinovich showed us details of how Docker works with Azure in a demo using WordPress running on Ubuntu (using technology enabled by MS Open Tech). Next, Jason Zander, Corporate Vice President of Microsoft Azure, showed us details of the new marketplace on the Azure Portal and its current roster of partners:

clip_image003

Here’s what Scott Guthrie, Executive Vice President of the Microsoft Cloud and Enterprise group had to say about the announcement in his blog post yesterday:

Last week, at our Cloud Day event in San Francisco, I announced a new Azure Marketplace that helps to better connect Azure customers with partners, ISVs and startups. With just a couple of clicks, you can now quickly discover, purchase, and deploy any number of solutions directly into Azure.

Let’s drill down into some of those partners, ISVs and startups that MS Open Tech has been working with, starting with IBM:

IBM Images on Azure

Last week Microsoft announced an historic agreement with IBM to include IBM Virtual Machine images on Microsoft Azure. Yesterday the first images were released, thanks to the superb effort of MS Open Tech’s engineering staff. Here’s what you see when you search the Microsoft Portal VM images:

clip_image005

IBM also announced support for a Bring-Your-Own-License (BYOL) arrangement for other select IBM software, on Windows or Linux.

IBM is also expanding support of IBM software running on Windows Server Hyper-V running in customer datacenters, as well as hybrid scenarios for Azure and other public clouds. Have a look at IBM’s updated licensing policies for installing supported IBM software on virtual machines on Azure.

clip_image007

A TypeSafe Template Certified for Azure

Another icon in that Keynote Image is TypeSafe, the company behind Play Framework, Akka, and Scala, among other things. Typesafe has released the Reactive Maps Activator template on Azure, so that developers can work with the Typesafe Reactive Platform (Play Framework, Akka, and Scala) natively on Azure.

clip_image009

NGINX Plus is now Azure Certified for Virtual Machines

MS Open Tech also worked with NGINX Inc. to enable the commercial load balancer and web accelerator NGINX Plus to be Azure Certified for Virtual Machines and available in the Azure Gallery. Enterprises can now deploy and manage NGINX Plus across Azure Virtual Machines providing advanced application delivery, load balancing and video streaming capabilities with consolidated billing and management from Microsoft.

Basho’s Riak Open Source Distributed Database now Azure Certified

Riak is an open source distributed database built for fault tolerance, high availability and operational simplicity is another new Azure Certified VM Image. Riak stores data using a simple key/value scheme, and offers a number of supported client libraries. Riak is a community supported open source product. Documentation is available at http://docs.basho.com

clip_image011

Move Websites to the Cloud with the new Azure Websites Migration Assistant

Another announcement yesterday was the official release of the Azure Websitejs Migration Assistant, which enables simplified migration of existing IIS Websites to Microsoft Azure.

The Azure Websites Migration Assistant runs on an IIS server or a local client with IIS 6 or later installed. Once you have installed the Azure Websites Migration Assistant, you can use it to migrate Websites from any server in your network for which you have admin access, as shown here:

clip_image013

As part of the migration, an analysis is performed on your Websites and databases and a migration readiness report is provided outlining any potential migration issues. Next, migration of content and databases is enabled via a simple wizard-like interface.

Have a look at the getting started documentation and this Azure Blog post for full details on how to get started with the Azure Websites Migration Assistant. Also, note that this release is open source, and the code is available here.

 

Great Response to Yesterday’s MS Open Tech iOS, Android, and IntelliJ News

clip_image015

Yesterday my colleague Doug Mahugh released blog posts about the new Office 365 SDKs for iOS and Android, and the MS Open Tech Tools plugin for Microsoft services for Android Studio and IntelliJ. Press response has been great, to say the least. TechCrunch had a great summary of the news:

Microsoft says that it plans to offer more Office 365 APIs in the future, including for tasks, Yammer and its recently announced Office Graph. Given that Microsoft CEO Satya Nadella recently said that Office 365 is the most strategic API for the company, chances are that we will see these new APIs sooner than later.

Also new today are a number of Office 365 SDKs for iOS and Android Microsoft Open Technologies that make it easier for mobile developers to work with the new APIs. The iOS SDK currently only supports Objective-C, but support for Apple’s new Swift language is coming soon. These two new SDKs supplement the company’s existing Visual Studio SDK.

clip_image017

I’m looking forward to more details of all the great news over the remaining three days. I’d like to hear more about what you think of all these new partnerships, products and services, and how these new announcements fit into your Cloud plans. Leave a comment below, and if you’re here in Barcelona and you see me at the show be sure to say hello!

]]>
http://msopentech.com/blog/2014/10/29/ms-open-tech-news-teched-europe/feed/ 0
MS Open Tech Delivers new Android and iOS SDKs to access Office 365 services http://msopentech.com/blog/2014/10/28/ms-open-tech-delivers-new-android-ios-sdks-developers-access-office-365-services/ http://msopentech.com/blog/2014/10/28/ms-open-tech-delivers-new-android-ios-sdks-developers-access-office-365-services/#comments Wed, 29 Oct 2014 00:35:59 +0000 http://msopentech.com/?p=879771 New SDKs for Android and iOS help developers integrate their offerings with 400 petabytes of data and popular Office 365 services

]]>
http://msopentech.com/blog/2014/10/28/ms-open-tech-delivers-new-android-ios-sdks-developers-access-office-365-services/feed/ 0
IntelliJ/Android Studio plugin Connects Android + Java to Office 365 and Azure Services http://msopentech.com/blog/2014/10/28/intellijandroid-studio-plugin-connects-android-java-office-365-azure-services/ http://msopentech.com/blog/2014/10/28/intellijandroid-studio-plugin-connects-android-java-office-365-azure-services/#comments Wed, 29 Oct 2014 00:30:15 +0000 http://msopentech.com/?p=879741 MS Open Tech’s new IntelliJ / Android Studio plugin connects Android Apps and Java Cloud middleware to Office 365 and Azure Services.

]]>
http://msopentech.com/blog/2014/10/28/intellijandroid-studio-plugin-connects-android-java-office-365-azure-services/feed/ 0
HTML5: W3C Charts Course for the Future of the Open Web http://msopentech.com/blog/2014/10/28/html5-w3c-charts-course-future-open-web/ http://msopentech.com/blog/2014/10/28/html5-w3c-charts-course-future-open-web/#comments Tue, 28 Oct 2014 22:05:37 +0000 http://msopentech.com/?p=879701 Imagine what the Web might (not) have become without standards, and you may understand the need for an open web platform for the future.

]]>
http://msopentech.com/blog/2014/10/28/html5-w3c-charts-course-future-open-web/feed/ 0
W3C Charts a Course for the Future of the Open Web by Finalizing HTML5 Standard http://msopentech.com/blog/2014/10/28/w3c-charts-a-course-for-the-future-of-the-open-web-by-finalizing-html5-standard/ http://msopentech.com/blog/2014/10/28/w3c-charts-a-course-for-the-future-of-the-open-web-by-finalizing-html5-standard/#comments Tue, 28 Oct 2014 17:00:00 +0000 https://msopentech.com/?p=879401 Read More]]>

Imagining what the Web might (not) have become without standards, and you will understand why we all must support an open web platform for the future.

Today marks a significant milestone for a great many of my colleagues around the world with whom I have had the privilege of working within the W3C HTML Working Group. Several of us have taken on new roles and responsibilities, changed companies, launched new businesses, or become parents – or in my case, a grandparent - since I joined the W3C HTML Working Group as a co-chair in 2009. Yet we continued to work as a community to produce the W3C Recommendation announced today for the HTML 5.0 open standard.

As a Co-Chair of the W3C HTML Working Group, I have seen firsthand the remarkable commitment that people and organizations from all over the world have contributed to this effort. It has been an open and intensely collaborative process, encompassing a great many passionate and brilliant minds.

Although many of the HTML5 features standardized today were sketched out several years ago, it took a lot of hard work to get the details right. Since 2007, the Working Group has resolved more than 4,000 errors, ambiguities, and controversies recorded in the WG bug lists. The email archive at http://lists.w3.org/Archives/Public/public-html/ shows that it took over 45,000 messages since March 2007 to get the job done!

Microsoft, other browser developers and the W3C community at large have not only produced an outstanding outcome, but we have also created a process to facilitate future collaboration. We learned many lessons about how an open community can succeed on big, hard challenges. There is more we can learn from other open source and standards community as we go further in that direction in future iterations of web platform standards.

clip_image002

HTML 5.0 now serves as the cornerstone of the W3C Open Web Platform. This is a remarkable achievement for all of us who contributed to this piece of W3C’s legacy. We at Microsoft Open Technologies and the Internet Explorer teams, will continue to support this very important work into the future to ensure that HTML 5.0 and its successors may have a positive and lasting impact on the lives of our children and grandchildren.

/paulc

Paul Cotton, Director of Standards, Assisting Microsoft Open Technologies, Inc. (Microsoft Canada)
W3C HTML Working Group co-chair

]]>
http://msopentech.com/blog/2014/10/28/w3c-charts-a-course-for-the-future-of-the-open-web-by-finalizing-html5-standard/feed/ 10
IntelliJ / Android Studio plugin connects Android Apps and Java Cloud middleware to Office 365 and Azure Services – New “MS Open Tech Tools” http://msopentech.com/blog/2014/10/28/ms-open-tech-tools/ http://msopentech.com/blog/2014/10/28/ms-open-tech-tools/#comments Tue, 28 Oct 2014 08:21:02 +0000 http://msopentech.com/?p=879092 Read More]]> Microsoft Open Technologies has released today an initial preview of a plugin for IntelliJ and Android Studio that enables developers of Android Apps to connect to Office 365 services and Azure Mobile Services, and developers of Java middleware to connect to Azure compute services.

The “MS Open Tech Tools plugin for Microsoft services,” available today as open source, was developed in close collaboration with our partners on the Office 365 and Azure engineering teams as well as members of the broader open source community. It builds on MS Open Tech’s long experience in providing open source developers with access to Microsoft services through the tools they already know and love, including the Azure Toolkit for Eclipse with Java and many other projects we have shipped over the last two years.

For Android app developers, this plugin provides a highly productive integrated development environment within IntelliJ IDEA and Android Studio, which they can use to integrate Android apps with Office 365 and Azure Mobile Services. For middleware Java developers, the plugin provides an integrated environment to access Microsoft Azure compute services. (Access to Office 365 data and services is coming soon.)

Today’s release is an initial preview, released as open source to encourage feedback and contributions from the developer community.

Android App Development

Our goal is to enable Android Apps to use the very rich capabilities of Microsoft Cloud Services. Key features include:

Office 365 services. Integrate your Android App with email, calendars and contacts from Office 365 Exchange Online, read and write files stored in Office 365 OneDrive accounts, take advantage of the Azure AD Graph API, work with SharePoint Lists, and much more. The plugin uses the full functionality of the production ready Office 365 SDK for Android, released today by MS Open Tech.

Office 365 services

Azure Mobile Services. From push notifications to social integration and mobile analytics, Azure Mobile Services gives your Android apps simple access to sophisticated mobile services. This preview release includes Server Explorer functionality that allows you to manage Azure Mobile Services through the IDE, with no need to go to the Azure management portal for common tasks. This functionality is available in both Android Studio and IntelliJ.

Azure services

Identity based Development Experience. The MS Open Tech Tools plugin uses AAD Graph for identity based access to Microsoft services, to dynamically show and edit which services and permissions are available for a particular application.

dynamic UI

Code generation wizard. The plugin automatically creates classes for the services that you have selected, for increased developer productivity.

Java Cloud Middleware Development

Our goal is to provide IntelliJ developers with the same capabilities we provide to Eclipse developers: templates and functionality that allow you to easily create, develop, test, and deploy Azure applications using the Eclipse development environment. At this point, this portion of the plugin is in an “alpha” preview state and the subset of the Azure Toolkit for Eclipse with Java functionality that has so far been enabled in this plugin release includes the following key features for Java developers:

Creating and running Java deployment projects in the local Azure emulator as well as publishing to the Azure cloud, including the ability to configure multiple roles, endpoints, deployment components.

Automatic upload of the JDK and Server to Azure storage for ease of deployment. This option automatically uploads the selected JDK and Web Application Server, when needed, to a selected Azure storage account and deploys these components from that account. This can greatly enhance the ease and efficiency of deploying the JDK and server components, as well as help with team development scenarios, by avoiding the need to embed these components in the deployment package or do manual uploads.

Streamlined remote access setup. In the “Publish to Cloud” wizard, simply type in a user name and password to enable remote access, or leave it blank to keep remote access disabled. Intellij will use the sample certificate for encrypting your remote access credentials in the Microsoft Azure configuration file, or you can use your own certificate.

Note that the Azure deployment projects for Java are currently supported only on Windows as the developer OS.

We will continue adding more features to this portion of the plugin and we will continue developing the Azure Toolkit for Eclipse with Java as well.

Looking Forward

We plan to extend the MS Open Tech Tools plugin to more Microsoft services in the future. Our initial offering in this preview release includes the specific services that Android and Java developers have told us are most important to them.

Additionally to Eclipse, IntelliJ and Android Studio, in the future we may also invest in other development environments to connect to Microsoft services. We have worked with the Java community for over three years to enhance the Azure developer experience in Eclipse, and the MS Open Tech Tools plugin is being released for Android Studio and IntelliJ in response to developer feedback regarding the most popular tools for Android development. The MS Open Tech team will continue to listen closely to the developer community for guidance on which tools will most benefit from access to Microsoft services, and we’ll continue to work hard to deliver the best possible developer experience across those tools.

Here are the complete instructions to download and install the MS Open Tech Tools plugin.

This is a preview release and we know it is not perfect in any way: please try it, give us feedback, record any bug you find (or better, contribute to the code we just released) and let us know which feature you like and what is missing! To send feedback or questions, just use MSDN Forums or Stack Overflow, or share your thoughts in the comments below.

Jean Paoli
President
Microsoft Open Technologies, Inc.

 

]]>
http://msopentech.com/blog/2014/10/28/ms-open-tech-tools/feed/ 4
New MS Open Tech SDKs Make it Easier to Connect Android and iOS Apps to Office 365 Services http://msopentech.com/blog/2014/10/28/android-ios-sdks-tooling/ http://msopentech.com/blog/2014/10/28/android-ios-sdks-tooling/#comments Tue, 28 Oct 2014 08:20:45 +0000 http://msopentech.com/?p=878901 Read More]]> A host of new tools released at TechEd Europe 2014 make it easier for Android and iOS developers to add Office services to their mobile apps, working with familiar tools they already know. The Office Dev blog has information about all of the releases, and today you can download the new Office 365 SDK for iOS as well as a production ready release of the Office 365 SDK for Android (previously available in a preview release).

For Android Studio developers, be sure to check out the MS Open Tech Tools plugin for IntelliJ and Android Studio released today. This plugin gives Android developers simple access to Office 365 services via the Android SDK, as well as Azure Mobile Services and push notifications, all from within the familiar IntelliJ or Android Studio development environment.

Our developers at MS Open Tech, in collaboration with the Office team, designed these mobile SDKs for native application development to enable seamless integration of Office 365 services and data with apps running on Android and iOS client platforms.

Android and iOS SDKs

These capabilities open up a new world of opportunities for developers, who can now easily integrate their offerings with 400 petabytes of data and popular Office 365 services.

The SDKs are modular, containing five independent packages:

  • Outlook Services provides CRUD operations for mail, calendar and contacts stored in Office 365 Exchange Online
  • Files Services provides access to files stored in Office 365 OneDrive for Business accounts and SharePoint Online sites
  • Directory Services for access to users, groups and their properties via the Azure AD Graph API
  • SharePoint Lists providing access to lists and list items stored in Office 365 SharePoint Online
  • Discovery Services help developers determine the base URL for various services

All of this functionality is provided by robust Office 365 REST APIs, which are exposed through the Android and iOS SDKs as well as other SDKs available for .NET and JavaScript/TypeScript developers.

In this blog post, we’re going to take a look at how the Android and iOS SDKs were built, what they offer to developers, and how you can quickly begin taking advantage of Office 365 services in your own apps. The discussion below covers the high-level architecture and general concepts, and then we’ve provided links to a variety of resources and code samples that you can use to jumpstart your development.

Building the SDKs

To take full advantage of the powerful capabilities offered by these SDKs, it’s helpful to understand how they were built, as well as the benefits provided by this approach.

The Office 365 REST APIs are based on OData and therefore include Common Schema Definition Language (CSDL) metadata documents that describe the entities exposed by each API. CSDL is a standardized XML representation of the entity data model exposed by an OData service. The Android and iOS SDKs (as well as other Office 365 SDKs) were generated from the CSDL files using a customized code-generation process:

generating the SDKs

 

This approach assures consistency across the SDKs (e.g., the same API surface area is exposed for all platforms) while also allowing for customization of each SDK to support the popular paradigms of the target language/platform.

For example, here are the Android and iOS code snippets to retrieve an email inbox using Outlook Services:

Android and iOS code samples

As you can see, these snippets are conceptually similar but each reflects the stylistic differences specific to Android and iOS development.

The underlying Office 365 REST APIs for Outlook Services, Directory Services, Files Services and Discovery Services are all compliant with OData 4.0. As a result the SDKs are able to include quite a bit of functionality “for free,” because developers can use system query options defined in the OData standard, such as $select, $expand, $filter and $skip.

To maximize extensibility and flexibility, the SDKs use an inversion of control design pattern based on a dependency resolver that you instantiate for each entity client you create. Here are examples of creating a default dependency resolver in Android or iOS code:

dependency resolver

Note that default implementations are provided as shown in the diagram above, making the dependency resolver ready for immediate use. You can override the default implementations if you have special requirements or want to use a different implementation.

Authentication and Authorization

Office 365 services are secure, and your app needs to obtain permission from the user to gain secure delegated access to their private data stored in the cloud.

You will first need to register your app in Azure AD as a native client app, and obtain a Client ID for it. (Note that if you're using the MS Open Tech Tools plugin, it will automatically create the App principal in AAD for you.) Then you’ll use the Azure Active Directory Authentication Library (ADAL) available for your client platform to handle authentication (who is the user?), authorization (what services do they have access to?) and consent (does the user agree to provide your app with access?). The result of this process will be an OAuth 2.0 access token that your app can use to gain access to Office 365 services.

The Android and iOS SDKs use the same consistent approach to authentication and authorization employed by other Office 365 SDKs. At a high level, here’s what you need to do at app startup to give the user access to their Office 365 data:

authentication workflow

This workflow provides the consistent and straightforward user experience that people have come to expect from mobile apps: the app asks for permission to work with the user’s secured data and services, then stores an access token (managed securely via ADAL) that can be used for subsequent API calls.

Office 365 SDK for iOS

Office 365 SDK for iOS

The Office 365 SDK for iOS is available from the OfficeDev repo on GitHub, or you can use the Cocoapods dependency manager to include it as a dependency in your XCode or JetBrains AppCode project.

For authentication, iOS developers should use ADALiOS (the open-source ADAL library for Objective-C). As with the iOS SDK, ADALiOS is available from GitHub or via Cocoapods.

Office 365 SDK for Android

Office 365 SDK for Android

The Office 365 SDK for Android is a new production ready release that supersedes the preview version released in March of this year. You can get it from the GitHub repo, or using Gradle from Bintray's JCenter repo, the default central repo for Android Studio. You can clone the GitHub repo to install as source code, include the binary packages via Gradle scripts from JCenter, or just drop the JAR and AAR files in your project’s libs folder.

If you’d prefer to use Gradle to automatically include the Office 365 SDK for Android as a dependency in your Android Studio project, you’ll need this line in your project-level Gradle build script:

repositories {
  jcenter()
}

NOTE: the above line will be included by default in new Android Studio projects.

Then you can add the specific Office 365 SDK dependencies in module-level (app) build scripts as follows:

dependencies {
  // base OData stuff:
  compile group: 'com.microsoft.services', name: 'odata-engine-interfaces', version: '(,1.0)'
  compile group: 'com.microsoft.services', name: 'odata-engine-java-impl', version: '(,1.0)'
  compile group: 'com.microsoft.services', name: 'odata-engine-helpers', version: '(,1.0)'
  compile group: 'com.microsoft.services', name: 'odata-engine-android-impl', version: '(,1.0)'
  // choose the services/SDKs you need:
  compile group: 'com.microsoft.services', name: 'outlook-services', version: '(,1.0)'
  compile group: 'com.microsoft.services', name: 'discovery-services', version: '(,1.0)'
  compile group: 'com.microsoft.services', name: 'directory-services', version: '(,1.0)'
  compile group: 'com.microsoft.services', name: 'file-services', version: '(,1.0)'
  compile group: 'com.microsoft.services', name: 'list-services', version: '(,1.0)'
}

We’ll also be publishing the Office 365 SDK for Android to the Maven Central repo soon.

Android developers can find the open source Android ADAL library on GitHub, and Android Studio will use Gradle to automatically download the ADAL binaries and add them to your project if you add this line to your Gradle script:

compile 'com.microsoft.aad:adal:1.0.2'

Resources

With these tools, it is now possible for Android and iOS developers to easily build apps that take advantage of Office 365 services. A variety of resources have been published today to help you get started, and more will be available in the days and weeks ahead. Below are links to places to find code samples, documentation, and more.

The Office Dev Center has a rich set of resources to help you learn the Office 365 APIs and take advantage of them in projects on any platform:

Office 365 SDK for Android – GitHub repo. Here you’ll find:

  • Quickstart app – step by step instructions for creating an Android app that retrieves messages from Exchange
  • A complete simple sample app that retrieves messages and calendar events
  • Tests (providing examples of how to use various SDK functionality)
  • Information about how to contribute to MS Open Tech open source projects.

Office 365 SDK for iOS – GitHub repo. Here you’ll find:

  • Instructions for using the SDK with Xcode and Cocoapods.
  • Sample code for Outlook Services, Files Services and Discovery Services. (more to come soon)
  • Information about how to contribute to MS Open Tech open source projects.

Other resources:

Many other resources are coming online soon, and we’ll update this list as they become available.

We’re looking forward to continuing our work to make Microsoft services available to developers on any popular device or operating system, using the tools and technologies you already know and love! If you have questions about use of the Android or iOS SDKs for Office 365, please let us know in the comment thread below.

Josh Gavant, Senior Program Manager
Lorenzo Tessiore, Principal Development Lead
Doug Mahugh, Senior Technical Evangelist
Microsoft Open Technologies, Inc.

 

]]>
http://msopentech.com/blog/2014/10/28/android-ios-sdks-tooling/feed/ 10