SlideShare ist ein Scribd-Unternehmen logo
1 von 99
Programowanie na wiele
platform mobilnych:
MonoDroid i Windows Phone 7
Agenda
• Moja historia
• Dlaczego i mity
• MonoDroid
• Napiszmy wszystko w C# JAK
Moja historia
System homogenicznych firm się rozpada
• Firmy koncentrują się zwykle na jednej
platformie i na jednym języku.
• Zwykle jest to C# i .NET.
• Rynek mobilny przypomniał, że trzeba
specjalistów z różnorodnych platform i
języków.
Co jest tego przyczyną
Rynek mobilny == Frillion bajillion dollars
Jesteś studentem..?
Firmy pracują dla klientów, a klient chce:
Jesteś
pracownikiem..?
Firmy mają ten sam problem co ty
• Są zainteresowani twoją wiedzą WP7 ,ale
są sceptyczni.
• Szukamy jednego rozwiązania na
wszystko:
Inni się coś kombinują:
• PhoneGap
– HTML 5,CSS
• RhoMobile
• Natywne kompilowanie Flash-a do
telefonów.
A ty co możesz z tym zrobić:
Lubisz C#..?
... Nie lubisz alternatyw
... A może jednak
OBJECTIVE-C: DATE (NO TIME)
+ (NSDate *) GetTime:(NSDate *) date {
NSCalendar *gregorian =
[[NSCalendar alloc]
initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *components =
[gregorian components:
(NSYearCalendarUnit | NSMonthCalendarUnit |
NSDayCalendarUnit)
fromDate:date];
date = [gregorian dateFromComponents:components];
[gregorian release];
return date;
}
C#: DATE (NO TIME)
public DateTime GetTime(DateTime date)
{
return date.Date;
}
więc lubisz C#..?
Firma patrzy na statystki:
There is hope:
• Wracasz z pracy.
• Jaką formę rozrywki po pracy wybrać
• …nie grasz w gry bo nie masz na to
czasu.
• …ty oglądasz jak ktoś gra w grę.
Dostajecie wizji
Napiszmy wszystko w C#
Koszty
• 399$ dla firmy która ma mniej niż 10
pracowników. Licencja jest na jedną
osobę.
• 999$ dla firmy która ma więcej niż 10
pracowników. Licencja jest dla każdego
pracownika.
Kontekst
• Windows Phone 8
– Visual Studio, XAML, C#
• iOS
– MonoDevlop, MonoTouch, C#
• Android
– Visual Studio, Mono for Android, C#
Dlaczego?
Ponowne
użycie
zdolność .NET
Ponowne
użycie kodu
Ponowne
użycie
bibliotek
• +35 libraries
monotouch.info
/MonoTouch/Libraries
Obniżenie
kosztów
związanymi z
zarządzaniem
kodem
Pogromcy mitów
Nie jest tak źle jak się wydaje.
C# nie jest językiem
natywnym
Co to znaczy natywny
• Różne interpretacje natywności
Objective C/
C++
C/C++
Inna architektura
CPU
C#
/Silverlight/
WinRT? XNA
Znaczenie natywności
• Natywny = używa platformy i bibliotek
OS nie zależnie od języka czy narzędzi.
• Natywny = Doświadczenie użytkownika
które w 100% scala się z domyślny
doświadczeniem przygotowanym przez
twórcę platformy „X”.
3 różne natywność
XCODE
Objective C
Android SDK
JAVA
WP 7
SIlverlight
Narzędzia dostawcy Magiczne pudełko
Adobe Air
ActionScript
Rhodes
Ruby + HTML
Symbas
Unwired
„4GL” Code
gene
Antenna
Rapid
Scripting
Language
Phone Gap
HTML 5
Appcelerator
Titanium
JavaScrip >
Native
Hybrydy
Logika aplikacji
WP7
Silverlight
Współdzielon
y
język
Xamarin
MonoTouch
Xamarin
MonoDroid
C#
Aplikacje napisane w Mono
są powolne.
Czy to prawda
• Nie pokaże wam kodu który to
potwierdzi
• Jednak wystarczy użyć trochę logik by
stworzyć konstruktywny dowód.
• Wszystko sprowadza się do kompilatora
Mono C# vs Java
• Android i Java
– Android nie używa kodu natywnego
– Działa on VM „Dalvik” (który uruchamia
binarny kod Javy)
– Mono JIT został porównany i…
– …jest szybszy
http://www.koushikdutta.com/2009/01/dalv
ik-vs-mono.html
Mono C# vs Java
• Android i Java
– Jednak Mono musi się komunikować z
„Dalvik”.
Mono C# vs Objective C
• W przypadku Objective-C
– IOS i MonoTouch kompiluje kod do
natywnej aplikacji przed jej instalacją na
urządzenie Apple (wynika to z licencji)
– Mono i Objective C podobno używają tej
samej maszyny (LLVM) który ten kod
generuje więc nie powinno być żadnej
różnicy.
Szczególnie dotyczy to urządzeń mobilnych
Jeśli coś wolno działa to raczej to twoja winna
Nie twórz czegoś co przekracza możliwości urządzenia
Postrzegana wydajność
Spraw by aplikacja
byłą szybka
• Utrzymaj mały
rozmiar aplikacji
• Utnij czas startu
aplikacji
• Działaj w tle
Wydajność jest ukryta w oku
obserwatora
Mono nie może użyć
wszystkich możliwość
urządzenia.
Możecie mieć dostęp do wszystkich możliwości
urządzenia
• Dla każdego urządzenia jest zestaw przestrzeni
nazw które umożliwiają dostęp do urządzenia.
Używaj abstrakcji
Liczba kodu współdzielonego
jest mała z powodu różnicy w
urządzeniach.
Nie musisz znać urządzeń by
programować na wiele
platform
O czym zapominamy
• Styl aplikacji
– Widziałem dużo aplikacji IPhone na WP8
• Było to koszmarne przeżycie
• Specyfika urządzenia
– Android ma tyle różnych rozmiarów itp.
Co łączy wszystkie platformy
Model ale nie jego wykonanie
• Jest cykl życia aplikacji
• Zapisywanie stanu aplikacji
• Sandbox
• Łączność z Internetem
• Szyfrowanie informacji
• Dostęp do właściwości urządzenia.
• Tosty
Usługi sieciowe
• Jakiej technologii używamy by uzyskać dostęp
do danych.
– Powinniśmy używać REST
• Lekkie dla telefonu.
• Dużo własnego kodu
– Powinniśmy używać SOAP ?
• Narzędzia które generują proxy.
• Za ciężkie dla telefonu
– RIA Service
• Utworzenie endpointów XML,JSON i ODATA
Napiszmy wszystko w C#
Programowanie na wiele platform
Technika 1:
Portable class
library
Pomaga
zachować
zgodność
Instrukcja
• http://slodge.blogspot.c
o.uk/2012/04/using-
portable-library-tools-
for.html
PORTABLE CLASS LIBRARY
• Zalety
– Jedna biblioteka do wszystkich platform
– Pomaga w tworzeniu wspólnego
podzbioru
• Wady
– Brak dyrektyw PreProccesor
– Brak kodu specyficznego dla platformy
– Brak wsparcia dla MonoDevlop
Technika 2:
Linked files
Działa w
Monodevelop
Linked Files
• Zalety
– Ten sam kod na wszystkich platformach
– Możliwość dodanie kodu specyficznego
dla platformy
– Dyrektywy Preprocessor
• Wady
– Potrzeba zarządzania wieloma projektami
Technika 3:
vsmonotouch
otwiera projekty
Monotouch w
VS2010
https://github.com/jamiebriant/VsMono
Do pobrania
VSMonoTouch
• Zalety
– Otwiera i weryfikuje projekty MonoTouch
w VS2010 (Windows)
• Wady
– Brak prawdziwej <kompilacji>
– Pewne kroki manualne trzeba wykonać
Technika 4:
Preprocessor
directives
using System.Net;
#if MONOTOUCH ||
MONODROID
using System.Web;
#endif
Dyrektywy preproccesor
• Zalety
– Ułatwia pisanie kodu specyficznego dla
platformy
• Wady
– Brudzi kod
– DRY - #if
Technique 5:
Abstrakcja
powtarzającej się
funkcjonalności
public interface IDispatchOnUIThread
{
void Invoke(Action action);
}
// Windows Phone 7
public class DispatchAdapter : IDispatchOnUIThread
{
public void Invoke(Action action)
{
Deployment.Current.Dispatcher.BeginInvoke(action);
}
}
// Mono for Android
public class DispatchAdapter : IDispatchOnUIThread
{
private readonly Activity _owner;
public DispatchAdapter(Activity owner)
{
_owner = owner;
}
public void Invoke(Action action)
{
_owner.RunOnUiThread(action);
}
}
// Monotouch
public class DispatchAdapter : IDispatchOnUIThread
{
private readonly NSObject _owner;
public DispatchAdapter(NSObject owner)
{
_owner = owner;
}
public void Invoke (Action action)
{
_owner.BeginInvokeOnMainThread(
new NSAction(action));
}
}
Abstrakcja powtarzającej się
funkcjonalności
• Zalety
– Jeszcze większe dzielenie kodu
– Nie trzeba używać dyrektyw preproccesor
• Wady
– Więcej abstrakcji w kodzie
Technika 6:
Partial Classes
Abstrakcja powtarzającej się
funkcjonalności
• Zalety
– Jeszcze większe dzielenie kodu
– Nie trzeba używać dyrektyw preproccesor
• Wady
– Więcej abstrakcji w kodzie
Technika 7:
Wzorce
projektowe
Activity
Services
Content
Provider
Intent
Intent
Broadcast
recevier
Intent
View
Activity
View
Phone
Application
Page
View
Optional ViewModel
Model Controller
View
Controller
Model
UI ViewController
UIView
Outlets Action
s
Navigation Contoller
ModelManipulative
View
Model
ViewModel
Controller
Usługi
GPS
Kamera
itp.
View
Model
ViewModel
Controller
Usługi
GPS
Kamera
itp.
Wspólne
Technika 7.5:
MVVM na
wszystkie
platformy
MVVMCross
XML vs XAML
• Windows Phone 7, Windows 8
• Monodroid
MVVM
• Zalety
– Jeszcze większe dzielenie kodu
– Testowalne ViewModel
• Wady
– Więcej abstrakcji w kodzie
– Może wydawać się nienaturalny dla
platformy
– MVVMCross nie posiada dużo
przykładów
MVVM
DEMO
Mono for Android
Pobierz i sprawdź
• http://xamarin.com/monoforandroid
Dokumentacja
• http://docs.xamarin.com/android
MvvmCross
Gdzie pobrać
• http://www.monocross.net/download
Links
• http://docs.xamarin.com/android
KONIEC

Weitere ähnliche Inhalte

Ähnlich wie Programowanie na wiele platform mobilnych - 2012

iOS 101 || iOS From The Very Beginning #1
iOS 101 || iOS From The Very Beginning #1iOS 101 || iOS From The Very Beginning #1
iOS 101 || iOS From The Very Beginning #1Droids On Roids
 
Droids On Roids - iOS 101, live coding
Droids On Roids - iOS 101, live codingDroids On Roids - iOS 101, live coding
Droids On Roids - iOS 101, live codingMarcel Starczyk
 
Kivy na Androidzie
Kivy na AndroidzieKivy na Androidzie
Kivy na AndroidzieDaftcode
 
Ionic framework - aplikacja mobilna w 15 minut
Ionic framework - aplikacja mobilna w 15 minutIonic framework - aplikacja mobilna w 15 minut
Ionic framework - aplikacja mobilna w 15 minutTomasz Borowski
 
Delphi dla .NET. Vademecum profesjonalisty
Delphi dla .NET. Vademecum profesjonalistyDelphi dla .NET. Vademecum profesjonalisty
Delphi dla .NET. Vademecum profesjonalistyWydawnictwo Helion
 
Titanium - RuPy Tuesday
Titanium - RuPy TuesdayTitanium - RuPy Tuesday
Titanium - RuPy TuesdayGaldoMedia
 
Cocoa źródła informacji - część 1.
Cocoa   źródła informacji - część 1.Cocoa   źródła informacji - część 1.
Cocoa źródła informacji - część 1.Błażej Biesiada
 
Technologie mobilne w platformach edukacyjnych. Kosmikus, studium przypadku
Technologie mobilne w platformach edukacyjnych. Kosmikus, studium przypadkuTechnologie mobilne w platformach edukacyjnych. Kosmikus, studium przypadku
Technologie mobilne w platformach edukacyjnych. Kosmikus, studium przypadkuMichal Lukaszewski
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowychTomasz Borowski
 
Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...
Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...
Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...Wojciech Sznapka
 
CI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecieCI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecieGrzegorz Godlewski
 
3 możliwości kodowania aplikacji mobilnych. Zalety i wady
3 możliwości kodowania aplikacji mobilnych. Zalety i wady3 możliwości kodowania aplikacji mobilnych. Zalety i wady
3 możliwości kodowania aplikacji mobilnych. Zalety i wadyappreal.net - Software House
 
Nie tylko C# - Ekosystem Microsoft dla programistów
Nie tylko C# - Ekosystem Microsoft dla programistówNie tylko C# - Ekosystem Microsoft dla programistów
Nie tylko C# - Ekosystem Microsoft dla programistówintive
 
Pisząc kod natywny C/C++, czyli nie taki diabeł straszny
Pisząc kod natywny C/C++, czyli nie taki diabeł strasznyPisząc kod natywny C/C++, czyli nie taki diabeł straszny
Pisząc kod natywny C/C++, czyli nie taki diabeł strasznyAdam Sawicki
 
Tworzenie wieloplatformowych gier mobilnych
Tworzenie wieloplatformowych gier mobilnychTworzenie wieloplatformowych gier mobilnych
Tworzenie wieloplatformowych gier mobilnychGameDesire Company
 
Programowanie .NET web i mobile
Programowanie .NET web i mobile Programowanie .NET web i mobile
Programowanie .NET web i mobile Boguslaw Blonski
 

Ähnlich wie Programowanie na wiele platform mobilnych - 2012 (20)

iOS 101 || iOS From The Very Beginning #1
iOS 101 || iOS From The Very Beginning #1iOS 101 || iOS From The Very Beginning #1
iOS 101 || iOS From The Very Beginning #1
 
Droids On Roids - iOS 101, live coding
Droids On Roids - iOS 101, live codingDroids On Roids - iOS 101, live coding
Droids On Roids - iOS 101, live coding
 
Kivy na Androidzie
Kivy na AndroidzieKivy na Androidzie
Kivy na Androidzie
 
Ionic framework - aplikacja mobilna w 15 minut
Ionic framework - aplikacja mobilna w 15 minutIonic framework - aplikacja mobilna w 15 minut
Ionic framework - aplikacja mobilna w 15 minut
 
Delphi dla .NET. Vademecum profesjonalisty
Delphi dla .NET. Vademecum profesjonalistyDelphi dla .NET. Vademecum profesjonalisty
Delphi dla .NET. Vademecum profesjonalisty
 
Titanium - RuPy Tuesday
Titanium - RuPy TuesdayTitanium - RuPy Tuesday
Titanium - RuPy Tuesday
 
Cocoa źródła informacji - część 1.
Cocoa   źródła informacji - część 1.Cocoa   źródła informacji - część 1.
Cocoa źródła informacji - część 1.
 
Oss w software house
Oss w software houseOss w software house
Oss w software house
 
Technologie mobilne w platformach edukacyjnych. Kosmikus, studium przypadku
Technologie mobilne w platformach edukacyjnych. Kosmikus, studium przypadkuTechnologie mobilne w platformach edukacyjnych. Kosmikus, studium przypadku
Technologie mobilne w platformach edukacyjnych. Kosmikus, studium przypadku
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowych
 
User Experience – wpływ internetu na aplikacje enterprise - Netcamp #14
User Experience – wpływ internetu na aplikacje enterprise - Netcamp #14User Experience – wpływ internetu na aplikacje enterprise - Netcamp #14
User Experience – wpływ internetu na aplikacje enterprise - Netcamp #14
 
Szybkie tworzenie aplikacji na iPhone i Android - Netcamp #16
Szybkie tworzenie aplikacji na iPhone i Android - Netcamp #16Szybkie tworzenie aplikacji na iPhone i Android - Netcamp #16
Szybkie tworzenie aplikacji na iPhone i Android - Netcamp #16
 
Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...
Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...
Łebski Development czyli kiedy i dlaczego tworzyć oprogramowanie pod klucz i ...
 
CI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecieCI oraz CD w złożonym projekcie o małym budżecie
CI oraz CD w złożonym projekcie o małym budżecie
 
3 możliwości kodowania aplikacji mobilnych. Zalety i wady
3 możliwości kodowania aplikacji mobilnych. Zalety i wady3 możliwości kodowania aplikacji mobilnych. Zalety i wady
3 możliwości kodowania aplikacji mobilnych. Zalety i wady
 
Nie tylko C# - Ekosystem Microsoft dla programistów
Nie tylko C# - Ekosystem Microsoft dla programistówNie tylko C# - Ekosystem Microsoft dla programistów
Nie tylko C# - Ekosystem Microsoft dla programistów
 
Pisząc kod natywny C/C++, czyli nie taki diabeł straszny
Pisząc kod natywny C/C++, czyli nie taki diabeł strasznyPisząc kod natywny C/C++, czyli nie taki diabeł straszny
Pisząc kod natywny C/C++, czyli nie taki diabeł straszny
 
Tworzenie wieloplatformowych gier mobilnych
Tworzenie wieloplatformowych gier mobilnychTworzenie wieloplatformowych gier mobilnych
Tworzenie wieloplatformowych gier mobilnych
 
Programowanie .NET web i mobile
Programowanie .NET web i mobile Programowanie .NET web i mobile
Programowanie .NET web i mobile
 
Projektowanie i programowanie aplikacji nowej generacji
Projektowanie i programowanie aplikacji nowej generacjiProjektowanie i programowanie aplikacji nowej generacji
Projektowanie i programowanie aplikacji nowej generacji
 

Mehr von Cezary Walenciuk

Przyszłość c# 6.0 i nawet c# 7.0
Przyszłość c# 6.0 i nawet c# 7.0 Przyszłość c# 6.0 i nawet c# 7.0
Przyszłość c# 6.0 i nawet c# 7.0 Cezary Walenciuk
 
Do celu...ale motywacji brak
Do celu...ale motywacji brakDo celu...ale motywacji brak
Do celu...ale motywacji brakCezary Walenciuk
 
C# - Typy Referecyjne i typy wartościowe i wiele innych rzeczy
C# - Typy Referecyjne i typy wartościowe  i wiele innych rzeczyC# - Typy Referecyjne i typy wartościowe  i wiele innych rzeczy
C# - Typy Referecyjne i typy wartościowe i wiele innych rzeczyCezary Walenciuk
 
Jak dodać prezentacje power point do bloga__
Jak dodać prezentacje power point do bloga__Jak dodać prezentacje power point do bloga__
Jak dodać prezentacje power point do bloga__Cezary Walenciuk
 

Mehr von Cezary Walenciuk (6)

Przyszłość c# 6.0 i nawet c# 7.0
Przyszłość c# 6.0 i nawet c# 7.0 Przyszłość c# 6.0 i nawet c# 7.0
Przyszłość c# 6.0 i nawet c# 7.0
 
Do celu...ale motywacji brak
Do celu...ale motywacji brakDo celu...ale motywacji brak
Do celu...ale motywacji brak
 
C# - Typy Referecyjne i typy wartościowe i wiele innych rzeczy
C# - Typy Referecyjne i typy wartościowe  i wiele innych rzeczyC# - Typy Referecyjne i typy wartościowe  i wiele innych rzeczy
C# - Typy Referecyjne i typy wartościowe i wiele innych rzeczy
 
Pętle w c#
Pętle w c#Pętle w c#
Pętle w c#
 
Delegaty i kolekcje
Delegaty i kolekcjeDelegaty i kolekcje
Delegaty i kolekcje
 
Jak dodać prezentacje power point do bloga__
Jak dodać prezentacje power point do bloga__Jak dodać prezentacje power point do bloga__
Jak dodać prezentacje power point do bloga__
 

Programowanie na wiele platform mobilnych - 2012