Wieloplatformowość tylko dla wybranych, czy aby na pewno?
Obecnie producent oprogramowania, który chce dotrzeć do większej rzeszy odbiorców musi się z mierzyć z faktem iż na dzień dzisiejszy nie można podać jednej królującej na rynku pod względem popularności platformy operacyjnej. statystyki pokazują że rynek środowisk software-owy cechuje się niespotykaną jak dotąd różnorodnością. Wobec tego czy jeśli chcemy dotrzeć z naszym oprogramowaniem do jak największej ilości ludzi to czy skazani jesteśmy na armie programistów?
Obecnie dane dotyczące udziału w rynku systemów operacyjnych przedstawia się następująco:
Wśród desktopów:
Natomiast jeśli chodzi o systemy mobile:
Co z tego możemy wywnioskować? Otóż że jeżeli chcemy by nasz produkt był dostępny dla każdego musielibyśmy posiadać wszechstronnego programistę płynnie poruszającego się w co najmniej kilku językach naraz lub zespół, który przepisze to samo oprogramowanie na każdy z systemów operacyjnych. Obie z powyższych strategi są stosunkowo popularne w firmach zajmujących się wytwarzaniem oprogramowania niestety takie kopiowanie programów niesie za sobą uciążliwe konsekwencje. Oczywiście najbardziej uciążliwą jest czas stracony na powielanie tej samej idei w różnego rodzaju językach oraz wielokrotne testowanie jej. Następnie każda wersja takiego oprogramowania wymaga osobnego wsparcia co także angażuje dodatkowe moce przerobowe oraz podnosi koszty.
Podsumowując małe firmy bądź freelancerzy mają bardzo ograniczone możliwości w byciu wszechstronnym na rynku.
Powiecie pewnie taki los, że bycie multi-platformowym to domena wielkich otóż nie!
Wcale tak nie musi być. Jeżeli mówimy o środowiskach desktopowych to sytuacja jest dość prosta piszemy w Javie bądź w C++ z uwzględnieniem specyfiki systemów do tego grona niedługo dołączy także .Net, który ma zamiar wkroczyć do systemów o architekturze UNIX (np. Mac os, Linux). Jak pisanie takich programów wygląda technicznie to temat na osobny artykuł na razie postaram się wam przedstawić sama ideę i technologie ją wpierające.
Przedstawiłem pewne rozwiązanie problemu, które można z powodzeniem stosować do desktopu ale co z urządzeniami mobilnymi? Tutaj sytuacja jest o wiele bardziej skomplikowana oczywiście można zostać kimś w stylu mnicha tybetańskiego i samemu studiując specyfikacje poszczególnych systemów pisać miesiącami w krzyżówce C i Asemblera multiplatformowego pacmana działającego także na pralce ale poco? Pojawił się szereg wieloplatformowych silników dla developerów oprogramowania mobilnego. Osobiście przetestowałem parę i przedstawię wam te które spodobały mi się najbardziej.
Zaczniemy od narzędzia które gdyby było darmowe mogłoby się stać przyjacielem każdego programisty .Net
- Xamarin.
Jest to platforma pozwalająca na tworzenie aplikacji mobilnych w języku C# wspaniale współpracująca z VisualStudio. Nie wymaga skomplikowanej instalacji po prostu ściągamy wtyczkę z internetu i działamy. Mnie w ramach testów w ciągu paru godzin udało się napisać bardzo prostą grę polegającą na odbijaniu piłki od ściany. Jeśli chcecie się pobawić możecie ją ściągnąć z githuba LINK. Ogólnie polecam ale trzeba się wykosztować.
- Unity
Jeśli lubicie tworzyć gry komputerowe to powinien zainteresować was ten silnik gier. Programuje się w języku C#. Co istotne z punktu widzenia tego artykułu Unity pozwala na wdrożenie naszej gry na praktycznie dowolne środowisko mobilne jak i desktopowe.
- Sencha
Jeśli jesteście początkującymi programistami lub nie potrzebujecie tworzyć skomplikowanych aplikacji to będzie dla was idealne narzędzie. Sencha pozwala pisać aplikacje przy użyciu HTML5, CSS oraz JavaScript, które są następnie są kompilowane do postaci aplikacji na IOS lub Androida.
Inne interesujące środowiska godne uwagi to Corona i QT wymagają już większej wiedzy programistycznej ale są jak najbardziej godne uwagi. QT używa C++.
Podsumowując obecnie każdy programista, czy to freelancer, czy członek wielkiej korporacji jeśli chce dotrzeć ze swoim produktem do jak największego grona klientów powinien poważnie pomyśleć o rozwiązaniach Cross-platformowych.