Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Cross-platform Driven development

Avatar for Piotr Karczmarz Piotr Karczmarz
May 16, 2013
750

Cross-platform Driven development

Cross-platform Driven development
WP8, Win8, Android i iOS na wyciągnięcie ręki.
Sposoby tworzenia wieloplatfromowych, mobilnych rozwiązań.

Avatar for Piotr Karczmarz

Piotr Karczmarz

May 16, 2013
Tweet

Transcript

  1. CROSS-PLATFORM DRIVEN DEVELOPMENT WP8, Win8, Android i iOS na wyciągnięcie

    ręki. Sposoby tworzenia wieloplatfromowych, mobilnych rozwiązań. Piotr Karczmarz [email protected] http://karczmarz.com/blog Twitter: @PiotrKarczmarz
  2. APLIKACJE MOBILNE HTML5 App • Strony webowe oparte o HTML,

    CSS, JavaScript • Interpretowane dynamicznie • Dostępne na wielu urządzeniach mobilnych • Do działania wymagają bycia online Native App • Wyglądają jak natywne aplikacje • Wykorzystują bezpośrednio natywne SDK danej platformy • Napisane w natywnym kodzie (C#, Java, Objective-C) • Silnie zależne od wybranej platformy mobilnej Hybrid App • Wyglądają jak aplikacje natywne • Połączenie aplikacji natywnej i webowej • Napisane w HTML5 • możliwość użycia natywnej funkcjonalności typowej dla konkretnej platformy – kamera, nagrywanie audio itp. • Możliwość wdrożenia tej samej aplikacji na kilka platform mobilnych
  3. WYZWANIA HTML5 App/Hybrid App ZALETY • Działają na różnych urządzeniach

    • Write once run everywhere  • Niskie koszty wytworzenia • Świetnie sprawdzają się, gdy nie jest potrzebna złożona interakcja WADY • Wolniejsze niż aplikacje natywne • Problemy z responsywnością UI • Często brak natywnego interfejsu dostosowanego do platformy • Wymagają aktywnego dostępu do sieci (wyjątkiem są niektóre HybridApp)
  4. HTML5 ? „The biggest mistake we made as a company

    was betting too much on HTML5 as opposed to native.” Mark Zuckerberg
  5. PROBLEMY  wysoki koszt tworzenia aplikacji na każdą z platform

    oddzielnie  Iteracyjny cykl „wynajdywania koła„ od nowa podczas produkcji aplikacji, - brak/słaby transfer wiedzy między zespołami deweloperskiemi - deweloperzy lubią dłubać w kodziku, więc dla nich to nie problem :)  konieczność utrzymywania oddzielnych zespołów deweloperskich - 2,3 osoby x 3 (Windows, iOS, Android) = 6-9 osób  Utrzymywanie osobnych gałęzi produkcyjnych kodu źródłowego aplikacji nie jest łatwe ;)
  6. DECYZJE • Single platform solutions • iOS • Android •

    Windows Phone • Blackberry Strategiczne decyzje • Cross-platform solutions • HTML5/JavaScript • Xamarin
  7. XAMARIN  Projekt Mono utworzony w 2000 roku przez Migual

    de Icaza (Ximian)  Ximian kupiony przez Novella w 2003 roku  Novell przejęty przez Attachmate – kwiecień 2011 r.  Co dalej z Mono ?  Xamarin utworzony w maju 2011 r.  Wieczysta licencja na wykorzystanie Mono udzielona Xamarinowi przez Attachmate/Novell na wykorzystanie projektów:  Mono  MonoTouch  Mono for Android
  8. C# <activity android:name=".SampleActivity“ android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER"

    /> </intent-filter> </activity> findViewById(R.id.button).setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { // handle click } } ); Java [Activity(Label="@string/AppName", MainLauncher=true)] FindViewById<Button>(Resource.Id.Button).Click += delegate { // handle click };
  9. C# CFStringRef keys[] = { kCTFontAttributeName, kCTForegroundColorAttributeName }; CFTypeRef bval[]

    = { cfListLineCTFontRef, CGColorGetConstantColor(kCGColorBlack) }; attr = CFDictionaryCreate ( kCFAllocatorDefault, (const void **) &keys, (const void **) &bval, sizeof(keys) / sizeof(keys[0]), &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks); astr = CFAttributedStringCreate( kCFAllocatorDefault, CFSTR("Hello World"), attr); Objective - C var attrs = new CFStringAttributes { Font = listLineCTFont, ForegroundColor = UIColor.Black.CGColor }; Var astr = new NSAttributedString ("Hello World", attrs);
  10. Attract new developers Entice iOS & Android developers Stop .NET

    developer attrition to Objective-C Convert Silverlight & ASP.NET developers to mobile
  11. ZALETY  Niższe koszty wytworzenia  Jeden zespół deweloperski 

    Ułatwiony transfer wiedzy w zespole – wszyscy pracują w tym samym ekosystemie  Jedna z najlepszych na rynku narzędzi deweloperskich (Visual Studio + Xamarin)  Możliwość reużycia nabytej wiedzy, technik i infrastruktury  Szybszy czas dostarczenia na rynek  Płynne, binarnie natywne aplikacje  Bardzo łatwy transfer umiejętności z .NET/Javy
  12. CROSS-PLATFORM DRIVEN DEVELOPMENT WP8, Win8, Android i iOS na wyciągnięcie

    ręki. Sposoby tworzenia wieloplatfromowych, mobilnych rozwiązań. Piotr Karczmarz [email protected] http://karczmarz.com/blog Twitter: @PiotrKarczmarz