SlideShare une entreprise Scribd logo
1  sur  45
Cześć!
Jak zostać mobile
deweloperem w 1 dzień
Paweł Kondraciuk <pawel@codequest.com>
„A komu to
potrzebne?”
via: http://www.lukew.com/ff/entry.asp?1954
via: http://www.lukew.com/ff/entry.asp?1954
Mobile czy Web?
Mobile i Web
Mobile czy Web?
Responsywna strona
• Wymagany dostęp do internetu
• Ograniczony dostęp do
funkcjonalności urządzenia
• Problematyczny rozwój aplikacji
Natywnie
• Dostęp do natywnego API
• Wiele zespołów deweloperskich
• Trudne w utrzymaniu i rozwoju
Co teraz?
Cross compiled
• Jedna baza kodu (C#)
• Mono .NET Framework
• Microsoft
• Natywne widoki dla każdej
platformy
Warstwa UI
Warstwa aplikacji
Warstwa UI
Warstwa aplikacji
Warstwa UI
Warstwa aplikacji
Logika biznesowa
Warstwa danych
Warstwa dostępu do
danych
Warstwa dostępu do
usług
Kod współdzielony
Aplikacje hybrydowe
• JavaScript, HTML, CSS
• WebView
• Dostęp do API przez wtyczki
HTML CSS
Zasoby
(obrazki, fonty)
JavaScript
WebView
Cordovacodrova.js
Natywny
UI
Natywne
API
Kamera Kompas
Pliki Sieć
Cordova plugins
Custom plugins
Natywnie w JavaScripcie
Appcelerator
Titanium
Facebook
React Native
Telerik
NativeScript
Architektura
• Brak DOM
• Natywne komponenty
• JavaScript Virtual Machine
• Moduły node.js
Google V8 JavaScript Engine
WebKit JavaScript Core
Appcelerator Titanium
• Płatny $36/miesiąc
• Słaba dokumentacja
• Słabe wsparcie
• Wolny
„If I had a time machine, I’d stay away from this.”
React Native
• Naucz się raz, pisz wszędzie
• Shadow DOM
• JS, JSX, style objects
• oddzielne widoki na iOS i Android
• dostęp do API przez natywne
moduły
Hello World!
import React, { Component } from 'react';
import { AppRegistry, Text } from 'react-native';
class HelloWorldApp extends Component {
render() {
return (
<Text>Hello world!</Text>
);
}
}
AppRegistry
.registerComponent('HelloWorldApp', () => HelloWorldApp);
Stylowanie
<View>
<Text style={styles.red}>just red</Text>
<Text style={styles.bigblue}>just bigblue</Text>
</View>
const styles = StyleSheet.create({
bigblue: {
color: 'blue',
fontWeight: 'bold',
fontSize: 30,
},
red: {
color: 'red',
},
});
Architektura
JavaScript Virtual Machine + React Lib
Zasoby JavaScript
React Native
JS
npm
Shadow DOM
Natywne
API
Lokalizacja
Ustawienia
React Native API wrappers
Niestandardowe wrappery
Pliki
Kamera Schowek
Alert
Natywny
UI
NativeScript
• Współdzielenie kodu
• JS, XML, CSS
• Bezpośredni dostęp do natywnego
API
Brak API Wrappers
• Android
• iOS
var time = new android.text.format.Time();
time.set(1, 0, 2015);
console.log(time.format("%D"));
var alert = new UIAlertView();
alert.message = "Hello world!";
alert.addButtonWithTitle("OK");
alert.show();
* Java w wersji Script
Metadane
1. Generowanie listy dostępnego API
2. Budowanie drzewa metadanych
3. Wstrzykiwanie zależności do globalnego zakresu
API
Metadata.dat
android
util
Config() Log()
nfc
Tag()
Global
Jak to działa?
var file = new java.io.File(path);
java.lang.StringKonwersja typów
java.io.File()Metadane
java.io.File() file = FileProxyCall dispatcher
JavaScript Virtual Machine
Android?
iOS?
Gdzie te współdzielenie kodu?!
Http
var http = require("http");
http.getJSON("https://httpbin.org/get").then(function (r) {
//// Argument (r) is JSON!
}, function (e) {
//// Argument (e) is Error!
//console.log(e);
});
XMLHttpRequest
<NativeScript>
iOS APIAndroid API
Android App iOS App
Warstwa abstrakcji
Implementacja
Cel
Moduły
• file.android.js
exports.getFile = function(path) {
var fileManager = NSFileManager.defaultManager();
return fileManager.createFileAtPathContentsAttributes(path);
}
• file.ios.js
exports.getFile = function(path) {
return new java.io.File(path);
}
• main.js
var File = require("./file");
var file = File.getFile("path");
Interfejs graficzny
AbsoluteLayout DockLayout GridLayout StackLayout WrapLayout
Demo
XMLHttpRequest
<NativeScript>
?
iOS APIAndroid API Ajax
XMLHttpRequest
<Przeglądarka>
Web AppAndroid App iOS App
Warstwa abstrakcji
Implementacja
Cel
import {Component} from "@angular/core";
@Component({
selector: "my-app",
template: "<Label text=‘Hello!’></Label>"
})
export class AppComponent {}
Demo #2
Podsumowanie
• Mobilki to nie tylko Java/ObjC/C#
• JavaScript to potężny język
• Jeden dzień to za mało żeby zostać mobile deweloperem
• Wystarczą dwa 
Pytania?
pawel@codequest.com
Dziękuję za uwagę 

Contenu connexe

Tendances

Wprowadzenie do testów wydajnościowych w k6
Wprowadzenie do testów wydajnościowych w k6Wprowadzenie do testów wydajnościowych w k6
Wprowadzenie do testów wydajnościowych w k6The Software House
 
Szybkie stawianie aplikacji z Elastic Beanstalk
Szybkie stawianie aplikacji z Elastic BeanstalkSzybkie stawianie aplikacji z Elastic Beanstalk
Szybkie stawianie aplikacji z Elastic BeanstalkThe Software House
 
Aplikacje internetowe real-time w oparciu o React/Redux
Aplikacje internetowe real-time w oparciu o React/ReduxAplikacje internetowe real-time w oparciu o React/Redux
Aplikacje internetowe real-time w oparciu o React/ReduxDawid Rusnak
 
Uruchomienie i praca z laravel w wirtualnym kontenerze docker'a
Uruchomienie i praca z laravel w wirtualnym kontenerze docker'aUruchomienie i praca z laravel w wirtualnym kontenerze docker'a
Uruchomienie i praca z laravel w wirtualnym kontenerze docker'aLaravel Poland MeetUp
 
Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...
Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...
Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...HighSolutions Sp. z o.o.
 
Jak poprawić Core Web Vitals w aplikacji Next.js
Jak poprawić Core Web Vitals w aplikacji Next.jsJak poprawić Core Web Vitals w aplikacji Next.js
Jak poprawić Core Web Vitals w aplikacji Next.jsThe Software House
 
Ansible - Automatyzacja zadań IT
Ansible - Automatyzacja zadań ITAnsible - Automatyzacja zadań IT
Ansible - Automatyzacja zadań ITKamil Grabowski
 
Sekrety magicznego ogrodu Docker
Sekrety magicznego ogrodu DockerSekrety magicznego ogrodu Docker
Sekrety magicznego ogrodu DockerKamil Grabowski
 
[BDD] Introduction to Behat (PL)
[BDD] Introduction to Behat (PL)[BDD] Introduction to Behat (PL)
[BDD] Introduction to Behat (PL)Piotr Pelczar
 
Kubernetes: from zero to be hero
Kubernetes: from zero to be heroKubernetes: from zero to be hero
Kubernetes: from zero to be heroThe Software House
 
LXC - kontener pingwinów
LXC - kontener pingwinówLXC - kontener pingwinów
LXC - kontener pingwinówgnosek
 
Deployment kodu z Capistrano
Deployment kodu z CapistranoDeployment kodu z Capistrano
Deployment kodu z CapistranoMichał Szajbe
 
Ruby, Ruby on Rails 2010
Ruby, Ruby on Rails 2010Ruby, Ruby on Rails 2010
Ruby, Ruby on Rails 2010Natalia Stanko
 
GWINT: Przetwarzanie rozproszone z wykorzystaniem komunikacji asynchronicznej...
GWINT: Przetwarzanie rozproszone z wykorzystaniem komunikacji asynchronicznej...GWINT: Przetwarzanie rozproszone z wykorzystaniem komunikacji asynchronicznej...
GWINT: Przetwarzanie rozproszone z wykorzystaniem komunikacji asynchronicznej...GOG.com dev team
 
Full Stack JavaScript case study na podstawie Maracuya Jukebox audio player
Full Stack JavaScript case study na podstawie Maracuya Jukebox audio playerFull Stack JavaScript case study na podstawie Maracuya Jukebox audio player
Full Stack JavaScript case study na podstawie Maracuya Jukebox audio playerMarek Będkowski
 
Jak wydaliśmy wiedźmina, GOG.com IT
Jak wydaliśmy wiedźmina, GOG.com ITJak wydaliśmy wiedźmina, GOG.com IT
Jak wydaliśmy wiedźmina, GOG.com ITGOG.com dev team
 

Tendances (20)

Wprowadzenie do testów wydajnościowych w k6
Wprowadzenie do testów wydajnościowych w k6Wprowadzenie do testów wydajnościowych w k6
Wprowadzenie do testów wydajnościowych w k6
 
Szybkie stawianie aplikacji z Elastic Beanstalk
Szybkie stawianie aplikacji z Elastic BeanstalkSzybkie stawianie aplikacji z Elastic Beanstalk
Szybkie stawianie aplikacji z Elastic Beanstalk
 
Aplikacje internetowe real-time w oparciu o React/Redux
Aplikacje internetowe real-time w oparciu o React/ReduxAplikacje internetowe real-time w oparciu o React/Redux
Aplikacje internetowe real-time w oparciu o React/Redux
 
Uruchomienie i praca z laravel w wirtualnym kontenerze docker'a
Uruchomienie i praca z laravel w wirtualnym kontenerze docker'aUruchomienie i praca z laravel w wirtualnym kontenerze docker'a
Uruchomienie i praca z laravel w wirtualnym kontenerze docker'a
 
Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...
Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...
Laravel Poznań Meetup #3 - Uruchomienie i praca z Laravel w wirtualnym konten...
 
Infrastructure As Code
Infrastructure As CodeInfrastructure As Code
Infrastructure As Code
 
Rundeck & Ansible
Rundeck & AnsibleRundeck & Ansible
Rundeck & Ansible
 
Jak poprawić Core Web Vitals w aplikacji Next.js
Jak poprawić Core Web Vitals w aplikacji Next.jsJak poprawić Core Web Vitals w aplikacji Next.js
Jak poprawić Core Web Vitals w aplikacji Next.js
 
Monitoring sieci
Monitoring sieciMonitoring sieci
Monitoring sieci
 
Ansible - Automatyzacja zadań IT
Ansible - Automatyzacja zadań ITAnsible - Automatyzacja zadań IT
Ansible - Automatyzacja zadań IT
 
Ansible w praktyce
Ansible w praktyceAnsible w praktyce
Ansible w praktyce
 
Sekrety magicznego ogrodu Docker
Sekrety magicznego ogrodu DockerSekrety magicznego ogrodu Docker
Sekrety magicznego ogrodu Docker
 
[BDD] Introduction to Behat (PL)
[BDD] Introduction to Behat (PL)[BDD] Introduction to Behat (PL)
[BDD] Introduction to Behat (PL)
 
Kubernetes: from zero to be hero
Kubernetes: from zero to be heroKubernetes: from zero to be hero
Kubernetes: from zero to be hero
 
LXC - kontener pingwinów
LXC - kontener pingwinówLXC - kontener pingwinów
LXC - kontener pingwinów
 
Deployment kodu z Capistrano
Deployment kodu z CapistranoDeployment kodu z Capistrano
Deployment kodu z Capistrano
 
Ruby, Ruby on Rails 2010
Ruby, Ruby on Rails 2010Ruby, Ruby on Rails 2010
Ruby, Ruby on Rails 2010
 
GWINT: Przetwarzanie rozproszone z wykorzystaniem komunikacji asynchronicznej...
GWINT: Przetwarzanie rozproszone z wykorzystaniem komunikacji asynchronicznej...GWINT: Przetwarzanie rozproszone z wykorzystaniem komunikacji asynchronicznej...
GWINT: Przetwarzanie rozproszone z wykorzystaniem komunikacji asynchronicznej...
 
Full Stack JavaScript case study na podstawie Maracuya Jukebox audio player
Full Stack JavaScript case study na podstawie Maracuya Jukebox audio playerFull Stack JavaScript case study na podstawie Maracuya Jukebox audio player
Full Stack JavaScript case study na podstawie Maracuya Jukebox audio player
 
Jak wydaliśmy wiedźmina, GOG.com IT
Jak wydaliśmy wiedźmina, GOG.com ITJak wydaliśmy wiedźmina, GOG.com IT
Jak wydaliśmy wiedźmina, GOG.com IT
 

En vedette

RT Info-Sheet (Hose Reel Payout & Rewind)
RT Info-Sheet (Hose Reel Payout & Rewind)RT Info-Sheet (Hose Reel Payout & Rewind)
RT Info-Sheet (Hose Reel Payout & Rewind)Stuart Morgan
 
Niezbędnik frontend developera - Maciej Korsan
Niezbędnik frontend developera - Maciej KorsanNiezbędnik frontend developera - Maciej Korsan
Niezbędnik frontend developera - Maciej KorsanMaciej Korsan
 
The Ruby/mongoDB ecosystem
The Ruby/mongoDB ecosystemThe Ruby/mongoDB ecosystem
The Ruby/mongoDB ecosystemHarold Giménez
 
Building Your First App with MongoDB
Building Your First App with MongoDBBuilding Your First App with MongoDB
Building Your First App with MongoDBMongoDB
 
MongoDB 3.4: Deep Dive on Views, Zones, and MongoDB Compass
MongoDB 3.4: Deep Dive on Views, Zones, and MongoDB CompassMongoDB 3.4: Deep Dive on Views, Zones, and MongoDB Compass
MongoDB 3.4: Deep Dive on Views, Zones, and MongoDB CompassMongoDB
 
The Top Skills That Can Get You Hired in 2017
The Top Skills That Can Get You Hired in 2017The Top Skills That Can Get You Hired in 2017
The Top Skills That Can Get You Hired in 2017LinkedIn
 

En vedette (7)

RT Info-Sheet (Hose Reel Payout & Rewind)
RT Info-Sheet (Hose Reel Payout & Rewind)RT Info-Sheet (Hose Reel Payout & Rewind)
RT Info-Sheet (Hose Reel Payout & Rewind)
 
Niezbędnik frontend developera - Maciej Korsan
Niezbędnik frontend developera - Maciej KorsanNiezbędnik frontend developera - Maciej Korsan
Niezbędnik frontend developera - Maciej Korsan
 
Solución Gestar ITIL
Solución Gestar ITIL Solución Gestar ITIL
Solución Gestar ITIL
 
The Ruby/mongoDB ecosystem
The Ruby/mongoDB ecosystemThe Ruby/mongoDB ecosystem
The Ruby/mongoDB ecosystem
 
Building Your First App with MongoDB
Building Your First App with MongoDBBuilding Your First App with MongoDB
Building Your First App with MongoDB
 
MongoDB 3.4: Deep Dive on Views, Zones, and MongoDB Compass
MongoDB 3.4: Deep Dive on Views, Zones, and MongoDB CompassMongoDB 3.4: Deep Dive on Views, Zones, and MongoDB Compass
MongoDB 3.4: Deep Dive on Views, Zones, and MongoDB Compass
 
The Top Skills That Can Get You Hired in 2017
The Top Skills That Can Get You Hired in 2017The Top Skills That Can Get You Hired in 2017
The Top Skills That Can Get You Hired in 2017
 

Similaire à Jak zostać mobile deweloperem w 1 dzień

Co nowego w VS 2013 dla programistów ASP.NET?
Co nowego w VS 2013 dla programistów ASP.NET?Co nowego w VS 2013 dla programistów ASP.NET?
Co nowego w VS 2013 dla programistów ASP.NET?Bartlomiej Zass
 
Aplikacje mobilne tworzone w technologiach webowych
Aplikacje mobilne tworzone w technologiach webowychAplikacje mobilne tworzone w technologiach webowych
Aplikacje mobilne tworzone w technologiach webowychTomasz Borowski
 
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...Mateusz Paprocki, PMP
 
Webinar - Podstawy Node.js
Webinar - Podstawy Node.jsWebinar - Podstawy Node.js
Webinar - Podstawy Node.jsWojciech Kaniuka
 
Silverlight i PHP - jak budować interfejs nowoczesnych aplikacji internetowych?
Silverlight i PHP - jak budować interfejs nowoczesnych aplikacji internetowych?Silverlight i PHP - jak budować interfejs nowoczesnych aplikacji internetowych?
Silverlight i PHP - jak budować interfejs nowoczesnych aplikacji internetowych?PHPCon Poland
 
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
 
Michał Dec - Quality in Clouds
Michał Dec - Quality in CloudsMichał Dec - Quality in Clouds
Michał Dec - Quality in Cloudskraqa
 
Ganymede - nowoczesne technologie w grach przeglądarkowych i mobilnych
Ganymede - nowoczesne technologie w grach przeglądarkowych i mobilnychGanymede - nowoczesne technologie w grach przeglądarkowych i mobilnych
Ganymede - nowoczesne technologie w grach przeglądarkowych i mobilnychSKN Shader
 
Współdzielenie kodu aplikacji Windows Phone i Windows 8
Współdzielenie kodu aplikacji Windows Phone i Windows 8Współdzielenie kodu aplikacji Windows Phone i Windows 8
Współdzielenie kodu aplikacji Windows Phone i Windows 8Bartlomiej Zass
 
Kivy na Androidzie
Kivy na AndroidzieKivy na Androidzie
Kivy na AndroidzieDaftcode
 
Jak podwoić wartość kodu .NET?
Jak podwoić wartość kodu .NET?Jak podwoić wartość kodu .NET?
Jak podwoić wartość kodu .NET?javOnet
 
Websites vs Cloud Services - OLMUG
Websites vs Cloud Services - OLMUGWebsites vs Cloud Services - OLMUG
Websites vs Cloud Services - OLMUGBart Zaremba
 
Cloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
Cloud computing na bazie Windows Azure, Tomek Kopacz, MicrosoftCloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
Cloud computing na bazie Windows Azure, Tomek Kopacz, MicrosoftBiznes 2.0
 
Tomasz Kopacz, Cloud computing na bazie Windows Azure
Tomasz Kopacz, Cloud computing na bazie Windows AzureTomasz Kopacz, Cloud computing na bazie Windows Azure
Tomasz Kopacz, Cloud computing na bazie Windows AzureWebhosting.pl
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkitbartosz_w
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowychTomasz Borowski
 

Similaire à Jak zostać mobile deweloperem w 1 dzień (20)

Co nowego w VS 2013 dla programistów ASP.NET?
Co nowego w VS 2013 dla programistów ASP.NET?Co nowego w VS 2013 dla programistów ASP.NET?
Co nowego w VS 2013 dla programistów ASP.NET?
 
Aplikacje mobilne tworzone w technologiach webowych
Aplikacje mobilne tworzone w technologiach webowychAplikacje mobilne tworzone w technologiach webowych
Aplikacje mobilne tworzone w technologiach webowych
 
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
 
Webinar - Podstawy Node.js
Webinar - Podstawy Node.jsWebinar - Podstawy Node.js
Webinar - Podstawy Node.js
 
Silverlight i PHP
Silverlight i PHPSilverlight i PHP
Silverlight i PHP
 
Silverlight i PHP - jak budować interfejs nowoczesnych aplikacji internetowych?
Silverlight i PHP - jak budować interfejs nowoczesnych aplikacji internetowych?Silverlight i PHP - jak budować interfejs nowoczesnych aplikacji internetowych?
Silverlight i PHP - jak budować interfejs nowoczesnych aplikacji internetowych?
 
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
 
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
 
Michał Dec - Quality in Clouds
Michał Dec - Quality in CloudsMichał Dec - Quality in Clouds
Michał Dec - Quality in Clouds
 
Ganymede - nowoczesne technologie w grach przeglądarkowych i mobilnych
Ganymede - nowoczesne technologie w grach przeglądarkowych i mobilnychGanymede - nowoczesne technologie w grach przeglądarkowych i mobilnych
Ganymede - nowoczesne technologie w grach przeglądarkowych i mobilnych
 
Współdzielenie kodu aplikacji Windows Phone i Windows 8
Współdzielenie kodu aplikacji Windows Phone i Windows 8Współdzielenie kodu aplikacji Windows Phone i Windows 8
Współdzielenie kodu aplikacji Windows Phone i Windows 8
 
Kivy na Androidzie
Kivy na AndroidzieKivy na Androidzie
Kivy na Androidzie
 
Jak podwoić wartość kodu .NET?
Jak podwoić wartość kodu .NET?Jak podwoić wartość kodu .NET?
Jak podwoić wartość kodu .NET?
 
Websites vs Cloud Services - OLMUG
Websites vs Cloud Services - OLMUGWebsites vs Cloud Services - OLMUG
Websites vs Cloud Services - OLMUG
 
Projektowanie i programowanie aplikacji nowej generacji
Projektowanie i programowanie aplikacji nowej generacjiProjektowanie i programowanie aplikacji nowej generacji
Projektowanie i programowanie aplikacji nowej generacji
 
Cloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
Cloud computing na bazie Windows Azure, Tomek Kopacz, MicrosoftCloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
Cloud computing na bazie Windows Azure, Tomek Kopacz, Microsoft
 
Tomasz Kopacz, Cloud computing na bazie Windows Azure
Tomasz Kopacz, Cloud computing na bazie Windows AzureTomasz Kopacz, Cloud computing na bazie Windows Azure
Tomasz Kopacz, Cloud computing na bazie Windows Azure
 
JavaScript, Moduły
JavaScript, ModułyJavaScript, Moduły
JavaScript, Moduły
 
Google Web Toolkit
Google Web ToolkitGoogle Web Toolkit
Google Web Toolkit
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowych
 

Jak zostać mobile deweloperem w 1 dzień

Notes de l'éditeur

  1. Moim zdaniem główne punkty do przemycenia byłyby takie: - robimy od nowa fajne projekty dla dobrych klientów; - staramy się zawsze z klientem wywalczyć maksymalną dowolność w wyborze technologii; - stack technologiczny wybieramy także pod kątem szczęśliwości naszych developerów; - nie boimy się wchodzić w nowe rzeczy (np. Elixir/Phoenix na backendzie, Angular 2 na froncie); - nie robimy tylko CRUDów, potrafimy ogarnąć naprawdę skomplikowane rzeczy - np. codebeat; - robimy też swoje rzeczy - na razie codebeat, ale w przyszłości będzie tego więcej; - stawiamy na rozwój osobisty programistów, zachęcamy do nauki, także finansowo; - mamy dobrze ogarnięty proces:   - code review, także pomiędzy projektami;   - pair programming dla chętnych; - używamy najlepszych dostępnych na rynku narzędzi nawet jeśli są najdroższe (np. Slack); - atmosfera (memy, PlayStation, V2MOM, godna płaca) ;
  2. Kiedyś było łatwo, Windows albo Web. 2007 iPhone WWDC Steve Jobs
  3. Dostęp przez api przeglądarki (notyfikacje, lokalna baza), często wymaga oddzielnego szablonu dla aplikacji mobilnych
  4. Wiele wersji kodu Wymaga wielu zespołów Wydłuża proces Jest kosztowne Trudne w utrzymaniu Powtarzalne błędy Zmiany są jeszcze bardziej kosztowne Dostęp do natywnego API Wydajność Look and Feel
  5. Kompilacja skośna. dostęp do API przez wrappery. Ios kompilowany(Ahead-of-time) do natywnego ARM, Android do języka pośredniego (IL), który jest JIT’owany do natwynego języka gdy aplikacja zostaje uruchomiona. przejęty przez Microsoft i zintegrowany z Visual Studio. OPEN SOURCE Ograniczenia android: brak konstruktora, generyczne klasy są częściowo wspierane Ograniczenia ios: Ograniczenia w dziedziczeniu NSObjects i dynamicznego generowania kodu System.Reflection.Emit https://developer.xamarin.com/guides/cross-platform/application_fundamentals/building_cross_platform_applications/part_1_-_understanding_the_xamarin_mobile_platform/
  6. Jedna baza kodu, brak możliwości korzystania z UI Widgets natywne API jest opakowane przez pluginy, używa WebView i operuje na 1 watku więc jest niska wydajność, niski koszt dewelopmentu, słaba dokumentacja. Cordova to silnik renderujący używany przez PhoneGap (coś jak webkit dla Chorme). Ionic to framework który renderuje wszystkie widoku w pojedynczym WebView (menu, nawigacja, zakładki jako dyrektywy AngularJS) a zmiany ekranów są animowane za pomocą CSSa. Material design Supersonic wiele WebView, które przetrzymują różne dokumenty (index.html, contact.html). Nawigacja jest natywna. Zmiana ekranu odbywa się przez przejście do drugiego WebView (przejścia są wykonywane natywnie) a stan poprzedniego ekranu jest taki sam. Supersonic pozwala na używanie natywnych komponentów (np. Action bara) przez definiowanie ich w HTMLu W skrócie Ionic to czysty AngularJS a Supersonic bardziej wykorzystuje natywność. http://developer.telerik.com/featured/what-is-a-hybrid-mobile-app/
  7. Na początku roku przeszli na płatny model i zamkneli forum społeczności. 36$ za najniższy plan
  8. Rozbudowany ReactJS W przypadku braku modułu trzeba znać ObjC/Java: - mapowanie typów - obsługa callbacków - obsługa wątków - rejestracja modułw
  9. Flexbox, transformacje, przezroczystosc, ramki, czcionka
  10. UI Thread: standard main thread for the platforms Shadow Thread: Where measuring and layout occur. In a world where UI is constructed off the main thread, like in ComponentKit (an idea we’re hoping to ship soon), this is where that occurs. JS Thread: Where React and Relay run.