Archive for the ‘Mobile’ Category
Przyszłość:
- Wykorzystanie Dockera/Vagranta do wirtuazliacji/opakowania aplikacji do pojemników
- Używanie grunt/gulp do instalacji
- Zastosowanie Markdown do dokumentacji, emmpten i innych szablonów ()
- Używanie Knockout/Angular
- Serwer internetowy Nginx zamiast Apache
- Serwer aplikacyjny TomEE zamiast Tomcat
- Wdrożenie node.js jako serwera (może wzbogacone Edge)
- Wykorzystanie wkładu Facebooka – kompilator php, analizator składni JS – Flow (http://flowtype.org/)
- Stosowanie architektury: natywna aplikacja/webkit-view na urządzeniu mobilnym łącząca się z serwerem poprzez WebAPI (WS) – czyli to co już było
- Wykorzystanie Google WebAPI np. dostęp do dokumentów, kalendarza, drukowanie w chmurze
ArsTechnica: Ciekawe podejście Google, dużo mówi się o Clang/LLVM, i innych kompilatorach skrośnych. Google też ma w tym doświadczenie: technologia GWT – tłumaczenie Java na JS. Dalszym krokiem Google jest zbudowanie jednolitego kodu nowej wersji Gmail (tzw. Inbox, kodu na trzy platformy (Android, IOS i … nie Windows, ale przeglądarki internetowe, tak jakby Windows nie był potrzebny – to prawda, gdyż do uruchomienia poczty nie liczy się OS ale kontener – czyli przeglądarka). Do przetłumaczenia kodu Java na Objective-C służy J2ObjC – projekt open-source. W ten sposób tłumaczy się logikę aplikacji, ale nie tłumaczy się wszystkiego, UI pozostaje do zrobienia “ręcznie” przy pomocy natywnego SDK – jest to ok. 25% kodu. Podobne podejście cross-platform core, platform-specific UI stosuje Xamarin.
Xamarin w wersji 3 udało się udoskonalić tworzenie interfejsu UI w postaci Xamarin.Forms
Doskonałe tutoriale do JS na serwerach Mozilli – https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Inheritance_and_the_prototype_chain i tutoriale ogólne – https://developer.mozilla.org/en-US/docs/Web/Tutorials. Resig i jego tutorial – http://ejohn.org/apps/learn/#17
Generator wyrażeń regularnych w różnych językach – http://txt2re.com/index-javascript.php3?s=%3CAuthenticateUser%3Eb__3&-2&utm_content=buffer15be0&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer
Specyfika aplikacji mobilnych (i nie tylko) polega na próbie oddzielenia warstw logiki od prezentacji (opcjonalnie także warstwy danych – zwanej modelem) i oprogramowania ich w niezależny sposób. Jest to podejście naturalne i racjonale. W związku z tym powstało wiele wzorców projektowych – Model-View-Controller (MVC), Model-View-Presenter (MVP), and Model-View / View-Model (MVVM). Firma APPMETHOD tak opisuje trzy sposoby tworzenia aplikacji:
-
Wtyczki HTML oparte o WebKit – słaba wydajność, trzeba stosować JS i komunikację z C++. HTML Canvas (view) i wbudowany element BrowserField + JS (events) + C++(logic). Wymaga komunikacji między JS a C++.
-
Natywne biblioteki GUI, wymaga to trzech platform kodowych: iOS UI to Objective-C, Android UI wymaga Java (oczywiście C++ jest wspierany przez NDK ale czasami trzeba stosować JNI do Dalvik), logika aplikacji to znowu C++. W przypadku iOS jest trochę łatwiej dzięki temu, że można mieszać kod Objective-C z C++, do tego celu służy Clang.
-
-
JQuery to wprowadzilo – na czym polega semantyczne wersjonowania – semantic versioning, which is usually just referred to as semver. The Semantic Versioning 2.0.0 spec summarizes semver like this:
Given a version number MAJOR.MINOR.PATCH, increment the:
- MAJOR version when you make incompatible API changes
- MINOR version when you add functionality in a backward-compatible manner
- PATCH version when you make backward-compatible bug fixes.
Additional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format.
Więcej o Intelu XDK – https://software.intel.com/en-us/html5/articles/why-use-crosswalk-for-android-builds
Ciekawe http://www.phpgang.com/how-to-configure-google-cloud-api-in-php_288.html – wykorzystanie usług Google API np. do drukowania
Finasowanie Mozilli: USA – Yahho, Chiny – Baidu, Rosja – Yandex
SAP udostępnił swoją bibliotekę UI w JS – http://sap.github.io/openui5/?utm_source=Sites&utm_medium=Banner&utm_campaign=OpenUI5, jak zacząć – http://sap.github.io/openui5/getstarted.html
Podstawy WCF i nie tylko – http://www.codeproject.com/Articles/531332/Implementing-a-Basic-Hello-World-WCF-Service-v
Tajemnica stojąca za CF – IBM BlueMix to także odmoana CF. Cloud Foundry was created by VMware to streamline deployment for application developers, application operators, and cloud operators. Then in April 2011, Cloud Foundry was announced as open source under the Apache 2.0 license, with the pitch to developers that they could code in the language and Web framework of their choice without worrying about the IT environment.
In February 2014, VMware spin-off Pivotal announced the formation of the Cloud Foundry Foundation, with Pivotal, EMC, IBM, Rackspace, and VMware as Platinum sponsors. The foundation has since expanded to 33 members and 42 contributing companies. One differentiator for Cloud Foundry is support for Pivotal HD Hadoop MapReduce, HAWQ SQL for Hadoop, and GemFire XD analytics. Another is the availability of the Pivotal Mobile Services Suite, thanks to last year’s acquisition of Xtreme Labs. Pivotal’s big data services and mobile services are both now integrated with Pivotal CF, the company’s enterprise version of Cloud Foundry.
Ciekawe artykuły z PHP Gang – jak stworzyć własną wtyczkę do Chrome – http://www.phpgang.com/how-to-create-google-chrome-app-using-json_440.html + inne odnośniki w stopce:
Ciekawe technologie: Docker oraz Vagrant, a także monitorowanie np. pracą jakichś serwerów
Krótka definicja Dockera i firmy które go wspierają – When containers first appeared in Linux, the natural assumption was that it would be yet another of many technologies that Linux has assimilated. But then came Docker, a novel use of containers to make apps portable and self-contained. It’s set Linux vendors scrambling, both to to rethink the way containers are implemented in Linux and to see how Linux can be reworked around Docker’s application-centric model.
Bardzo ciekawy i darmowy zamiennik Fences – Nimi – http://www.maketecheasier.com/organize-windows-desktop-nimi-places/?utm_source=newsletter&utm_medium=email&utm_campaign=15112014
Stara, obrosła sławą w czasach kiedy tworzyły się podwaliny aplikacji webowych (opartych o ‘nowoczesny’ JS i HTML), opiniotwórcza witryna – http://alistapart.com/articles oraz tematy – http://alistapart.com/topics
Techniki template (szablonów) – http://strongloop.com/strongblog/compare-javascript-templates-jade-mustache-dust/. Mustache, Jade
Ważne – jak zacząć przygodę z Azure, ci co mają subskrypcję MSDN może poszaleć – http://azure.microsoft.com/en-us/get-started/ (lub http://azure.microsoft.com/en-us/)
Nowe słowo kodowe Kestrel – nowa wersja Cassini – http://geekswithblogs.net/Aligned/archive/2014/11/06/kestrel-in-asp.net-vnext-for-production-hosting.aspx
Ważna technologia zastępująca WCF – WebAPI do tego link – http://geekswithblogs.net/Aligned/category/13888.aspx
Treściwe podsumowanie inicjatywy MS w sprawie uwolnienia .NET – http://blogs.msdn.com/b/visualstudio/archive/2014/11/12/visual-studio-2015-preview-visual-studio-community-2013-visual-studio-2013-update-4-and-more.aspx. Ważna o tyle, że zawiera wiele odnośników do dalszych materiałów np: http://blogs.msdn.com/b/visualstudio/archive/2014/11/13/tools-for-apache-cordova-update-ios-debugging-amp-windows-8-1-support.aspx i http://blogs.msdn.com/b/visualstudio/archive/2014/11/12/the-c-and-visual-basic-code-focused-ide-experience.aspx
Bardzo ważne – Kompletny opis – https://code.msdn.microsoft.com/ASPNET-MVC5-AngularJS-1f18da53 – generowanie raportu w PDF – nowoczesny sposób
Przykłady kodu deweloperskiego z MS do przejrzenia – https://code.msdn.microsoft.com/site/search?f%5B0%5D.Type=User&f%5B0%5D.Value=Jo%C3%A3o%20Eduardo%20Sousa
Zainstaluj sobie – http://betanews.com/2014/11/11/advanced-systemcare-8-ramps-up-its-security-tools/
Podstawy walidacji w nowoczesnym HTML – http://javascript.about.com/od/validatingforms/a/Attaching-Validation-To-A-Form.htm?utm_source=cn_nl&utm_medium=email&utm_term=Programming%20Channel%20Newsletter&utm_campaign=programsl&utm_content=20140902 i dodatki
Eksperymenty on-line z kodem w JS, HTML iCSS – http://codepen.io/irinakramer/pen/jcLlp
Omówienie narzędzi Intela – https://software.intel.com/en-us/android/tools
Do przerobienia:
Napewno potrzebne są narzędzia. Gartner udostępnił na ten temat raport – http://www.gartner.com/technology/reprints.do?id=1-1I9XO1F&ct=130808&st=sb
Jeden obrazek powinien mówić o wszystkim:
Dane są za zeszły rok (2013)
Są dwie drogi rozwoju aplikacji hybrydowych (opartych o HTML/JS i kompilacji do .apk). Jedną reprezentują firmy kolosy (IBM, Intel, SAP, MS) i polega na wykorzystaniu do tego projektu Cordova. Druga jest innowacyjna, autorstwa Appceleratora oparta o projekt Ittanium (https://www.appcelerator.com/blog/2014/06/announcing-the-3-3-0-release-candidate-of-titanium-sdk-and-studio/). Co wybrać?
Przykład tzw. zablokowanego nagłówka (How to create Sticky Table Headers using jQuery) na PHPgang – jako wtyczka do jQuery.
Historia powstania Androida – http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/. Cykl wytwórczy Androida – ok. 2-3 mc. Działa na około 1 mld urządzeniach. Krótki cykl powoduje problem wsparcia starych wersji – wsparcia, którego NIE MA. Specyfika ‘chmurzastego wsparcia’ systemu operacyjnego powoduje, że serwery w chmurach nie wspierają już starych wersji, brak oprogramowania. Wiele funkcji systemowych i narzędziowych wymaga kontaktu z serwerami Google, które są już wyłączone.
MS podobnie jak inni gracze na rynku przeglądarek otworzył dla deweloperów portal o praca nad IE – do tej pory MS traktował jak część Windows, i nie udostępniał wersji deweloperskich (no z małą różnicą od wersji IE 9).
Aplikacje webowe:
Super książki do rozwoju własnego – http://www.ksiegozbiory.cba.pl/ksiegi.html
Magiczny kwadrat Gartnera na temat Mobile Application Development Platform (MADP) – http://www.gartner.com/technology/reprints.do?id=1-1I9XO1F&ct=130808&st=sb.
Urządzenia mobilne:
-
-
Artykuł jak zacząć zabawę z androidem na CODE Magazine – http://www.codemag.com/Article/1308051 – świetnie podsumowuje jak wystartować i tłumaczy podstawy (autorem jest Dino Esposito!). Zachęca do stosowania IntelliJ IDEA – http://www.jetbrains.com/idea/download/download_thanks.jsp – w wersji Community
-
Strona głóna XDK – http://xdk-software.intel.com/downloader.html?windows
-
Intel oferuje bardzo dobre narzędzia do tworzenia aplikacji hybrydowych – https://prd1idz.cps.intel.com/en-us/html5/tools – XDK (http://xdk-software.intel.com/). Generuje on kod natywny. Świetne wprowadzenie – http://habrahabr.ru/company/intel/blog/221187/. Ponieważ pisze się w HTML5 (JS z jQ lub inne popularne frameworki: Intel App Framework, Bootstrap, Topcoat, jQ Mobile) czasami należy korzystać ze strony http://caniuse.com/ w celu sprawdzenia czy wymagana funkcjonalność jest przez daną przeglądarkę wspierana. Do tworzenie kodu służy Bracket (http://brackets.io/). Do opakowania stron HTML służy Cordova lub runtime CrossWalk (https://crosswalk-project.org/). CrossWalk dodaje własny runtime przez co aplikacje natywne są nieco większe niż w przypadku Phone Gap. Cordova używa API urządzenia aby mieć dostęp do specyficznych funkcji urządzenia. W celu uruchomienia aplikacji dodaje do niej ‘owijkę’ (tzw. wrapper) bazujący na WebView (http://developer.android.com/guide/webapps/webview.html). Niestety ma on pewne ograniczenia np. nie wspiera zaawansowanych funkcji graficznych z biblioteki WebGL. Te ograniczenia nie występują w przypadku WebView który bazuje na projekcie Chrominium (http://www.chromium.org/ – tego samego z którego korzysta przeglądarka Chrome). Więcej na ten temat jest w FAQ – https://crosswalk-project.org/#documentation/about/faq.
-
Tutaj są opisane funkcje obsługi sensorów urządzenia dostępne przez Phone Gap – http://docs.phonegap.com/en/2.0.0/cordova_media_media.md.html#Media
-
Więcej:
-
Tutoriale jak zacząć: https://software.intel.com/en-us/html5/videos/getting-started-with-the-intel-xdk
-
Przykładowe projekty – https://software.intel.com/en-us/html5/projects
-
Opis opcji aplikacji XDK – https://software.intel.com/en-us/html5/xdkdocs
-
Video dla designerów – https://software.intel.com/en-us/html5/articles/xdkdocs/app-designer-index
-
Intel daje również akcelerator do przyśpieszenia budowania aplikacji – https://prd1idz.cps.intel.com/en-us/android/articles/intel-hardware-accelerated-execution-manager (Opis: The Intel Hardware Accelerated Execution Manager (Intel® HAXM) is a hardware-assisted virtualization engine (hypervisor) that uses Intel Virtualization Technology (Intel® VT) to speed up Android app emulation on a host machine. In combination with Android x86 emulator images provided by Intel and the official Android SDK Manager, HAXM allows for faster Android emulation on Intel VT enabled systems)
-
Inne jego narzędzia – https://prd1idz.cps.intel.com/en-us/android/tools, jest nawet kompilator dla tworzenia natywnych aplikacji w C
Jest jeszcze Aptana oraz Cordova a takze Crosswalk – https://crosswalk-project.org/#documentation/samples/hello-world
Przegląd platform mobilnych opartych o JS zwanych także technologią Hybrid Mobile
Źródło: http://www.infoworld.com/d/application-development/review-3-phonegap-toolkits-tame-mobile-app-development-228814?page=0,4
Do niedawna głównymi językami do tworzenia aplikacji mobilnych były Java i Objective-C – jest to tak zwane podejście natywne. Próby wyświetlania HTML we wbudowanej przeglądarce urządzań mobilnych nie sprawdziły się z uwagi na niską wydajność procesorów urządzeń. Mimo tego powstawały a teraz coraz częściej powstają aplikacje które traktują okno przeglądarki jako kontener do wizualizacji HTML/CSS wzbogaconego o JS. Z uwagi na to, że jako silniki stosuje się WebKit – w tych przeglądarkach w sposób naturalny można wykorzystać możliwości HTML 5. Dało to możliwość skorzystania do tworzenia na urządzeniach z powszechnie stosowanego w przeglądarkach języka JS (zwykle uruchamianego po stronie klienta). Dzięki temu programiści aplikacji internetowych potrafią wykorzystać swoją wiedzę z zakresu JS do tworzenia aplikacji mobilnych.
Powstały narzędzia do tworzenia takich aplikacji – korzystają one z usług webowych w chmurze dzięki którym można tworzyć skrośne (wieloplatformowe) aplikacje gotowe do dystrybucji do użytkownika końcowego. Narzędzia te zbierają razem technologie potrzebne do kompilacji kodu HTML/JS do kodu binarnego i udostępniają je w postaci zintegrowanego pakietu (w zasadzie można samemu to zrobić – np. projekt Cordova (http://cordova.apache.org/) zmusza do tworzenia tego na piechotę w linii poleceń). Warto też rozważyć inny aspekt aplikacji mobilnych testowanie – testowanie odbywa się poprzez wbudowane w przeglądarki rozszerzenia np. Safari tzw. symulatory lub w przypadku FireFox (FireBug), Chorme też ma swoje narzędzie do testowania. Do przeprowadzenia testów mogą też posłużyć debuggery zewnętrzne np. Xcode.
Liderem jest projekt komercyjny Phonegap, gonią go AppGyver i Icenium (Telerik).
- PhoneGap należy do Adobe, wersja otwarta na licencji ASF nosi nazwę Cordova. Działanie polega na stworzeniu aplikacji w HTML przy pomocy AJAX (być może do tego wykorzystać różnorodne frameworki w JS) i korzysta w WS po stronie serwerowej. Po napisaniu aplikacji chmura obliczeniowe Adobe przekształca ją w aplikację natywną na różne platformy mobilne. Za tę usługę deweloper płaci miesięczną subskrypcję. Dodatkowe komplikacje związane są z wymogiem posiadania przez dewelopera certyfikatów do podpisywania kodu (są płatne, chociaż polski urząd certyfikacyjny Certum wystawia taki certyfikat typu open-source za darmo).
- Podobnie działa AppGyver
- Inne podejście prezentuje Telerik. Jego narzędzie Icenium IDE napisane w HTML/JS działa w przeglądarce. Niestety jest to tylko owijka, Telerik korzysta z Apache Cordova a do generowania używa swojej chmury (Telerik Cloud). Ciekawe jest to że ma dwie wersje IDE: Mist (przeglądarka) i Graphite (Windows). Istnieje również narzędzie trzecie ION. Jako framework stosuje się Kendo UI i Jquery Mobile.
Zostało jeszcze mi omówić Titanium (firmy Appcelerator)
Zgodnie z wizją Oracle zaprezemtowaną w materiałach o Mobile ADF można wyróżnić trzy niezależne warstwy (niezależne w rozumieniu fizycznej lokalizacji, platformy sprzętowej oraz systemu operacyjnego):
Warstwa bazodanowa (back-end) – dane będą przechowywane w bazie Oracle 11 (właściwie to liczy się jedynie wersja wyższa niż 10). Dla planowanego rozwiązania potrzebne jest jedynie połączenie do bazy z poziomu aplikacji .NET 4.x oraz PHP 5.3.x. Zadania: udostępnianie danych poprzez wywoływanie pakietów PL/SQL dla usług webowych (Web Services) realizowanych na serwerze aplikacji.
Warstwa serwera aplikacji (middleware) – serwer internetowy Apache wraz z zainstalowanym PHP 5.3.x z rozszerzeniem dla SOAP. Jest to warstwa pośrednia – pobiera dane z bazy poprzez wywołanie procedur z pakietów PL/SQL i udostępnia je warstwie klienckie. Tu odbywa się też kontrola danych w warstwy klienckiej. W fazie początkowej jest to jedynie hub centralizujący wymianę danych, nie jest to witryna internetowa z własnym CMS i rozbudowaną treścią. To może być realizowane później.
Warstwa kliencka (front-end) – wprowadzenie/wstępna kontrola danych, dostęp do danych z serwera bazodanowego. Przewiduję dwie rozwiązania. Pierwsze polega na napisaniu cienkiego klienta uruchamianego na stacji roboczej użytkownika (instalacja zarządzana przez dział IT, zgodna z polityką bezpieczeństwa GPO organizacji przy pomocy technologii Microsoft Click-Once przy minimalnym udziale użytkownika). Lekka baza lokalna na potrzeby przechowywania danych między sesjami (MS SQL Express 2012). Aplikacja wykonana na bazie platformy .NET korzystająca z usług webowych do wprowadzania i kontroli danych lub prezentowania danych z serwera. Dzięki wykorzystaniu platformy .NET możliwa jest integracja z pakietem MS Office 2010/2012 (np. ładowanie danych do MS Excel) oraz łatwość sporządzania raportów (w oparciu o darmową bibliotekę SAP CR 4 VS 2010 lub inne silniki raportujące). Alternatywnie przewiduję możliwość wykorzystania prostych stron z formularzami do wprowadzania/prezentowania danych wykonanych w HTML5 z możliwością obsługi przeglądarek internetowych Chrome, Firefox i IE9/10 lub urządzeń mobilnych Android.
Frameworki – gotowe biblioteki nadające stronom (uwaga w aplikacjach mobilnych zwykle strony tworzy się w stylu SPA) WIZUALNIE bardziej mobilny charakter (chodzi o GUI):
- Ratchet –na githubie (https://github.com/twbs/ratchet), strona domowa – http://goratchet.com/getting-started/
- Lista 5 frameworków niewizualnych – http://moduscreate.com/5-best-mobile-web-app-frameworks-reactjs/
- Z app. mobilnymi wiąże się ekran dotykowy a z nim zdarzenie touch – jego opis API dokładny jest tu – https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Touch_events, jest to o tyle ważne gdyż nie używa się tu myszki. Gotową biblioteką jest Hammer – http://eightmedia.github.io/hammer.js/ (wprowadza do zdarzeń dostępnych w elementach HTML zdarzenia związane z ekranem dotykowym:
- hold
- tap
- doubletap
- drag, dragstart, dragend, dragup, dragdown, dragleft, dragright
- swipe, swipeup, swipedown, swipeleft, swiperight
- transform, transformstart, transformend
- rotate
- pinch, pinchin, pinchout
- touch
- release
- gesture
- Porównanie tego orginalnego podejścia z wbudowanym wsparciem drag and drop w HTML5 jest tu – https://github.com/EightMedia/hammer.js/issues/553. Opis stadnardowego podejścia jest w linkach na w/w stronie i są to:
- Bardzo krytyczne nastawienie odnośnie DandD reprezentuje http://www.quirksmode.org/blog/archives/2009/09/the_html5_drag.html
- Bardzo dobre wrażenie robi http://www.appgyver.com/steroids
Oczywiście są i natywne implementacje narzędzi do tworzenia mob. app – np Androdi Studio bazujące na IntelliJ. Opis jego jest tu – http://startandroid.ru/ru/articles/listofarticles/284-znakomstvo-s-android-studio.html. Różni się od Eclipse układem elementów ale potrafi importować jego projekty. ALe ponieważ to IDE powstał po E. to jest b. nowoczesne!
Baza danych – ważna bardzo. Tutaj wsparcie dla SQLlite daje bezpłatny projekt Valentina Studio (http://www.valentina-db.com/en/valentina-studio-overview) jego opis jest tu http://habrahabr.ru/post/181990/
Innym zasobem do nauki jest – http://android.worldbestlearningcenter.com/, dla Javy jest też ZK или Vaadin.