Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Xamarin: The Future of App Development


Published on

Xamarin enables C# devs to become native iOS, Android, and Windows mobile app dev overnight. Learn how to leverage your existing .NET and C# skills to create iOS and Android mobile apps in Visual Studio. In addition to allowing you to write your iOS and Android apps in C#, Xamarin lets you reuse existing .NET libraries and share your business logic across iOS, Android, and Windows apps. During this session we cover the Xamarin platform and how to create native iOS, Android, and Windows apps in C#. See what’s new and next for Xamarin development inside of Visual Studio. Moreover, we focus on the code, with several live coding adventures throughout the entire session and show you the latest and greatest in native cross-platform development.

Published in: Engineering
  • Be the first to comment

Xamarin: The Future of App Development

  1. 1. James Montemagno Principal Program Manager – Mobile Developer Tools, Microsoft @JamesMontemagno Weekly development podcast Weekly development show
  2. 2. Essentials for mobile success Intelligent cloudBuild, test, distribute, learnBeautiful native apps
  3. 3. DESKTOP WEB CLOUD MOBILE GAMING IoT AI .NET Your platform for building anything
  4. 4. Xamarin: Anything you can do in Objective-C, Swift, or Java, you can do in C# and Visual Studio • Native user interface • High-fidelity API access • Native performance
  5. 5. iOS C# UI Windows C# UIAndroid C# UI Shared C# logic .NET for Mobile Apps Shared C# codebase • 100% native API access • High performance
  6. 6. Windows APIs
  7. 7. iOS—100% API coverage MapKit UIKit iBeacon CoreGraphics CoreMotion
  8. 8. Android—100% API coverage Text-to-speech ActionBar Printing Framework Renderscript NFC
  9. 9. .NET Standard brings it all together .NET Standard allows sharing code, binaries and skills between .NET client, server and all of its flavors. .NET Standard provides a specification for any platform to implement LIBRARIES INFRASTRUCTURE .NET STANDARD DESKTOP WEB CLOUD MOBILE GAMING IoT AI
  10. 10. Xamarin 3 Native User Interfaces Shared App Logic iOS C# Android C# Shared C# logic Windows C# Shared C# logic Shared UI Code Shared Native User Interfaces Shared App Logic
  11. 11. Code sharing stats Mac iOS Android Windows iCircuit Touch Draw 86% 14% 72% 28% 70% 30% 61%39% 88% 12% 76% 24% 90% 10% Evolve App (Xamarin.Forms) 91% 9% 93% 7% 98% 2%
  12. 12. Native performance Xamarin.iOS does full Ahead Of Time (AOT) compilation to produce an ARM binary for Apple’s App Store. Xamarin.Android takes advantage of Just In Time (JIT) compilation on the Android device.
  13. 13. Xamarin Live Player
  14. 14. Xamarin Live Player Setup
  15. 15. Shared C# Backend Geolocation Geolocation Geolocation Compass Compass Compass Keystore Keystore Keystore
  16. 16. SharedPreferences Preferences.Get(“my_key”, 0); NSUserDefaults ApplicationData
  17. 17. Xamarin.Essentials Flashlight Geolocation Preferences Device Info Device Display Info Secure Settings Accelerometer Battery Clipboard Compass Connectivity Data Transfer Email File SystemGeocoding Gyroscope Magnetometer Phone Dialer Screen Lock Sms Text to Speech Vibration
  18. 18. Infrastructure designed for Scale
  19. 19.
  20. 20. Without Eager Deploy With Eager Deploy First Run Master Detail App 106 seconds 81 seconds First Run Smart Hotel 360 179 seconds 161 seconds
  21. 21. † Google Play Services available if you download fishy binary from a random internet site, run an installer, and copy files to the right places. YMMV.
  22. 22. ResourceDictionary Improvements
  23. 23. /// The messages dispatched by the view type Msg = | /// The model from which the view is generated type Model = { : } /// Returns the initial state let init() = { =false } /// The funtion to update the view let update msg Msg model Model = match with | -> { with = true } /// The view function giving updated content for the page let view model Model dispatch = if then ="I was pressed!" else ="Press Me!" = fun -> type App () = inherit () let runner = |> |> |>
  24. 24.
  25. 25.
  26. 26. <?xml version="1.0" encoding="UTF-8" ?> <Shell xmlns="" xmlns:x="" xmlns:local="clr-namespace:Xamarin.Store" x:Class="Xamarin.StoreDemoApp" Route="s"> <Shell.FlyoutHeader> <local:HeaderView /> </Shell.FlyoutHeader> <Shell.MenuItems> <MenuItem x:Name="preferencesMenuItem" Text="Preferences" Icon="prefs.png" /> <MenuItem x:Name="logOutMenuItem" Text="Logout" Icon="logout.png" /> </Shell.MenuItems> <ShellItem Route="home" Title="Home" Icon="home.png" GroupBehavior="ShowTabs"> <ShellTabItem Route="updates" Title="Home" Icon="home.png" ContentTemplate="{DataTemplate local:HomePage}" /> <ShellTabItem Route="games" Title="Games" Icon="games.png" ContentTemplate="{DataTemplate local:GamesPage}" /> <ShellTabItem Route="settings" Title="Settings" Icon="games.png" ContentTemplate="{DataTemplate local:SettingsPage}" /> </ShellItem> <ShellItem Route="apps" Title="Media" Icon="media.png"> <ShellTabItem Route="books" Title="Books" Icon="books.png" ContentTemplate="{DataTemplate local:BooksPage}" /> <ShellTabItem Route="music" Title="Music" Icon="music.png" ContentTemplate="{DataTemplate local:MusicPage}" /> <ShellTabItem Route="movies" Title="Movies" Icon="movies.png" ContentTemplate="{DataTemplate local:MoviesPage}" /> </ShellItem> </Shell>
  27. 27. Thank you. James Montemagno Principal Program Manager – Mobile Developer Tools, Microsoft @JamesMontemagno Weekly development podcast Weekly development show