Introducing 

Prezi AI.

Your new presentation assistant.

Refine, enhance, and tailor your content, source relevant images, and edit visuals quicker than ever before.

Loading…
Transcript

Presentation Model (PM)

Martin Fowler, ThoughtWorks, 2004

MVC

Source: J2EE Blueprint

http://martinfowler.com/eaaDev/PresentationModel.html

Model View ViewModel

John Gossman, Microsoft, 2005

XEROX PARC 1978-1979

http://blogs.msdn.com/b/johngossman/archive/2005/10/08/478683.aspx

Source:Microsoft Patterns&Practice

MVVM

Cross-platform Driven Development

MVVM pattern in cross-plaform architecture based on Xamarin

Piotr Karczmarz

xamarin.com/sharp-shirt

piotr@karczmarz.com

http://karczmarz.com/blog

@PiotrKarczmarz

Czego mama nigdy nie mowiła Ci na temat testowania automatycznego

Source: IDC

Objective-C

C#

Java

Mobile Applications

Native App

  • Native Look&Feel
  • Directly use the native SDK platform
  • Created in "native" code (C#, Java, Objective-C)
  • Strongly dependent on the chosen mobile platform
  • Web pages based on HTML, JavaScript, CSS
  • Interpreted dynamically
  • Available on many mobile devices
  • Requires on-line connection

Hybrid App

  • They pretend to be native apps
  • The combination of native and web applications
  • Built with HTML5, JavaScript, CSS
  • The ability to use the native functionality of a typical platform-specific - camera, audio recording, etc.
  • The possibility of deploy the same application on several mobile platforms

Source:Scott Hanselman

HTML5 / Hybrid App

Scope

Time

Quality

Money

Cons

Pros

  • Slower than native applications
  • UI responsiveness problems
  • Often the lack of native interface tailored to the platform
  • Require an active network access (except for some Hybrid Apps)

  • Work on different devices
  • "Write once run everywhere" :)
  • Low cost of production
  • Ideal solution when complex interaction is not needed

HTML5 ?

„The biggest mistake we made as a company was betting too much on HTML5 as opposed to native.”

Mark Zuckerberg

Native App

Cons

The high cost of developing applications on each platform separately

An iterative cycle of "inventing the wheel" during the production of new applications,

no / weak knowledge transfer between developers teams

developers like to dig in code, so for them it's not a problem :)

The need to maintain separate development

2-3 devs x 3 (Windows, iOS, Android) = 6-9

Maintaining a separate branch of production application source code is not so easy ;)

Speed

Smoothness

Responsiveness

Consistent Look & Feel

Strategic decisions

Cross-platform solutions

Single Platform Solutions

Property Cross

HTML5/JavaScript

... Sencha Touch/PhoneGap/JQuery Mobile ...

iOS

Android

Windows Phone

Blackberry

Xamarin

?

Xamarin

The Mono project created in 2000 by Migual de Icaza (Ximian)

Novell bought Ximian in 2003

Novell acquired by Attachmate - April 2011

What's next for Mono?

Xamarin created in May 2011

Lifetime license to use Mono granted Xamarin

by Attachmate / Novell to use projects:

Mono

MonoTouch (now Xamarin.iOS)

Mono for Android (now Xamarin.Android)

Portable Class Library

iCircuit

Rdio

Bastion

Entity

Infinite Flight

Source: Xamarin.com

Reuse Story

One Language + Framework

Modern IDEs

C#

Visual Studio

MonoDevelop

Debugging

AutoComplete

Refactoring

Project Management

Integrated Source Control

Designer + Integration

C# Libraries

Obj-C Bindings

.jar Bindings

C via pInvoke

C++ via Cxxi

LINQ

Lambdas

Task Parallel Library

Compile-Time Checks

F# support

Async/await

GC

"All non-trivial abstractions, to some degree, are leaky",

Joel Spolsky, Joel On Software

Source: Xamarin.com

Xamarin Pros

Java -> C#

Manually

Sharpen

originally used to port the code for db4o

  • Lower production costs
  • One development team
  • Facilitated the transfer of knowledge in the team - all working in the same ecosystem
  • One of the best on the market development tools (Visual Studio + Xamarin)
  • The possibility of re-use of the acquired knowledge, techniques and infrastructure
  • Faster time to market delivery
  • Smooth, native binary applications
  • Very easy to transfer skills from .NET / Java

ngit

Source: Xamarin

Learn more about creating dynamic, engaging presentations with Prezi