Současné trendy vývoje aplikací pro platformu ios

Podobné dokumenty
Jazyk C# (seminář 6)

1 - Úvod do platformy.net. IW5 - Programování v.net a C#

Návrh a realizace aplikace Atlas hub na platformě iphone

Telekomunikační koncová zařízení

Nástroje na vývoj aplikací pro ios Trocha motivace na úvod Co budete potřebovat Co když nemáte k dispozici počítač s macos? Vývojové prostředí Xcode

JAVA. Další jazyky kompilovatelné do Java byte-code

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

Úvod Seznámení s předmětem Co je.net Vlastnosti.NET Konec. Programování v C# Úvodní slovo 1 / 25

Úvod do Groovy pro Java experty

IB111 Programování a algoritmizace. Objektově orientované programování (OOP)

Dynamické programovací jazyky

typová konverze typová inference

Úvod do jazyka C. Ing. Jan Fikejz (KST, FEI) Fakulta elektrotechniky a informatiky Katedra softwarových technologií

Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky

2011 Jan Janoušek BI-PJP. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Jazyk C# (seminář 3)

Pokročilá témata KAPITOLA 11. Architektura operačního systému ios

První kapitola úvod do problematiky

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

David Bednárek Jakub Yaghob Filip Zavoral.

Matematika v programovacích

Generické programování

Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář

ios Cvičení RSS čtečka

Motivace. Vstup a výstup. Minimální komunikace. Motivace. ÚDPJ - Vstup a výstup. Ing. Lumír Návrat katedra informatiky, A

Knot DNS Resolver. Modulární rekurzivní resolver. Karel Slaný

INTERAKTIVNÍ PUBLIKACE pro smartphony a tablety

Technologie Java Enterprise Edition. Přemek Brada, KIV ZČU

Lambda funkce Novinky v interfaces Streamy Optional - aneb zbavujeme se null. Java 8. Ondřej Hrstka

Statické proměnné a metody. Tomáš Pitner, upravil Marek Šabo

1. Programování proti rozhraní

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Čipové karty Lekařská informatika

Bázové třídy platformy.net

Programovací jazyk C# Úvod do programování v C#

Programovací jazyk Úvod do programování v C#

Programovací jazyk C# Úvod do programování v C#

Uživatelské rozhraní v ios. Martin Hrubý FIT VUT v Brně

Mac OS X z pohledu uživatele Linuxu. Klokan Petr Přidal klokan@seznam.cz

Mac OS X z pohledu uživatele Linuxu. Klokan Petr Přidal klokan@seznam.cz

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

DF FA Novinky v Simotion Scout

IRAE 07/08 Přednáška č. 2. atr1 atr2. atr1 atr2 -33

Ukázka knihy z internetového knihkupectví

Obsah. O autorech 9 Earle Castledine 9 Myles Eftos 9 Max Wheeler 9 Odborný korektor 10. Předmluva 11 Komu je kniha určena 12 Co se v knize dočtete 12

Multiplatformní GUI toolkity

ADT/ADS = abstraktní datové typy / struktury

Správa paměti. Karel Richta a kol. Katedra počítačů Fakulta elektrotechnická České vysoké učení technické v Praze Karel Richta, 2016

Příkazové skripty Procedurální jazyky Lua a ostatní

Groovy agilní Java. Pavel Kříž Filip Malý

APPLE IPAD IN EDUCATION. Jan LAVRINČÍK

UJO Framework. revoluční architektura beans. verze

PB161 Programování v jazyce C++ Přednáška 7

Základy objektové orientace I. Únor 2010

Ruby on Rails. Bc. Tomáš Juřík Bc. Bára Huňková

PB161 Programování v jazyce C++ Přednáška 7

Kolekce, cyklus foreach

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Úvod do programovacích jazyků (Java)

Návrh softwarových systém. Návrh softwarových systémů

Nové jazykové brány do Caché. Daniel Kutáč

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

NUR - Prototyping. Low Fidelity

Úvod. Karel Richta a kol. katedra počítačů FEL ČVUT v Praze. Karel Richta, Martin Hořeňovský, Aleš Hrabalík,2016

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Programování II. Třídy a objekty (objektová orientovanost) 2018/19

PB161 Základy OOP. Tomáš Brukner

Zápis programu v jazyce C#

IUJCE 07/08 Přednáška č. 1

Doxygen. Jakub Břečka

Dotazování nad stromem abstraktní syntaxe

Parsování v Haskellu, knihovna Parsec

C2184 Úvod do programování v Pythonu podzim Mgr. Stanislav Geidl Národní centrum pro výzkum biomolekul Masarykova univerzita.

Vývoj aplikací v Qt pro mobilní zařízení

Enterprise Java (BI-EJA) Technologie programování v jazyku Java (X36TJV)

IB111 Úvod do programování skrze Python Přednáška 13

IRAE 07/08 Přednáška č. 1

Uklízení odpadků a analýza úniku

KIV/PIA 2012 Ing. Jan Tichava

monolitická vrstvená virtuální počítač / stroj modulární struktura Klient server struktura

SUTOL 2012 konference

C2184 Úvod do programování v Pythonu podzim Stanislav Geidl Národní centrum pro výzkum biomolekul Masarykova univerzita. Úvod.

Úvod Třídy Rozhraní Pole Konec. Programování v C# Hodnotové datové typy, řídící struktury. Petr Vaněček 1 / 39

FAKULTA INFORMAČNÍCH TECHNOLOGIÍ

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové technologie

Obsah. Kapitola 1. Předmluva 11 O této knize 13 Konvence...13

Implementace hry Shannon switching game pro ios

III/2 Inovace a zkvalitnění výuky prostřednictvím ICT

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

public class Karel { private int position; public boolean issmiling; public int getposition() { return position;

Úvod. Únor Fakulta informačních technologií VUT. Radek Kočí Seminář Java Úvod 1/ 23

Návrhové vzory. Jakub Klemsa, Jan Legerský. 30. října Objektově orientované programování.

Pokud zadání nerozumíte nebo se vám zdá nejednoznačné, zeptejte se. Pište čitelně, nečitelná řešení nebudeme uznávat.

Bakalářská práce. Vývoj aplikací pro Apple ipad pomocí technologie.net Framework C#

Vláknové programování část V

Java a XML. 10/26/09 1/7 Java a XML

Automatické testování softwaru. Testujte svůj kód! Předpoklady: Příklad: sum_digits() Možnost 1: Zkusíme funkci použít v konzoli Pythonu.

KTE / ZPE Informační technologie

Transkript:

Současné trendy vývoje aplikací pro platformu ios Petr Zvoníček @zvonicek 27. 11. 2014 PV226

Proč je vývoj pro ios zajímavý? uzavřený ekosystém silná open source komunita roční vývojový cyklus major verzí rychlá adopce nových verzí OS

Osnova Historické kořeny ios Proměny programování pro ios Swift

ios iphone runs OS X! Why would we want to run such a sophisticated OS on a mobile device? It's got everything we need. Multitasking, networking, power management, security, video, graphics, audio, core animation. Steve Jobs, 2007

NeXTSTEP Unix-like OS vyvynutý společností NeXT roku 1989 Přímý předchůdce OS X a ios Vývoj aplikací: jazyk Objective-C a NeXT API (Cocoa Framework) Firma NeXT v roce 1997 koupena Applem

Objective-C objektově orientovaný jazyk, představen r. 1983 výrazná popularizace až s NeXT, OS X a ios rozšíření jazyka C o OOP OOP založeno na zasílání zpráv (na rozdíl od volání metod u C++) po vzoru Smalltalku třída 2 soubory (class.m a class.h)

C++: obj->method(argument); Objective-C: [obj method:argument];

C++: int method (int i) { return square_root(i); Objective-C: - (int)method:(int)i { return [self square_root:i];

iphone OS dědictví z NeXTstep a OS X Darwin (BSD-like základ NeXTstep a OS X) Objective-C Cocoa Framework Xcode + Interface Builder memory management

Počátky Leden 2007 představení iphone a iphone OS 1.0 Červen 2008 iphone OS 2.0, App Store Červen 2009 iphone OS 3.0 Červen 2010 ios 4.0 Červen 2014 ios 8.0

Automatic Reference Counting alternativa ke garbage collectoru založen na statické analýze kódu a udržování počtu referencí na instanci deterministický uvolnění paměti zajišťuje Apple LLVM kompilátor problém retain cyklů

zdroj: developer.apple.com

zdroj: developer.apple.com

zdroj: developer.apple.com

zdroj: developer.apple.com

zdroj: developer.apple.com

Storyboarding Návrh UI formou flow chartu Snadný prototyping Přizpůsobení rozhraní pro zařízení iphone a ipad

ios 7

ios 8 App Extensions Action Today Keyboard Handoff

Swift multi-paradigmatický jazyk inspirován jazyky Objective-C, Rust, Haskell, Ruby, Python, C# Snaha eliminovat programátorské chyby Moderní prvky: generics, closures, type inference Funkcionální prvky (map, reduce, filter, ) Rychlejší než Objective-C

Variables var languagename: String = "Swift"

Constants let languagename: String = "Swift"

Type inferrence let languagename = "Swift" // String let introduced = 2014 // Int let isawesome = true // Bool

Unicode names let = "dogcow"

Arrays and dictionaries var names = ["Anna", "Alex", "Brian", Jack"] var numberoflegs = ["ant": 6, "snake": 0, "cheetah": 4]

Optionals let numberoflegs = ["ant": 6, "snake": 0, "cheetah": 4] let possiblelegcount: Int? = numberoflegs["aardvark"] if possiblelegcount == nil { println("aardvark wasn't found") else { let legcount = possiblelegcount! println("an aardvark has \(legcount) legs")

Optionals let numberoflegs = ["ant": 6, "snake": 0, "cheetah": 4] let possiblelegcount: Int? = numberoflegs["aardvark"] if let legcount = possiblelegcount { println("an aardvark has \(legcount) legs")

Functions func buildgreeting(name: String = "World") -> String { return "Hello " + name let greeting: String = buildgreeting()

Closures let greetingprinter: () -> () = { println("hello World!") greetingprinter() //Hello world

Closures as Parameters func repeat(count: Int, task: () -> ()) { for i in 0..count { task() repeat(2, { println("hello!") )

Trailing closures func repeat(count: Int, task: () -> ()) { for i in 0..count { task() repeat(2) { println("hello!")

Closures struct Array<String> { func sort(order: (String, String) -> Bool) clients.sort({(a: String, b: String) -> Bool in return a < b )

Closures struct Array<String> { func sort(order: (String, String) -> Bool) clients.sort({ a, b in return a < b )

Closures struct Array<String> { func sort(order: (String, String) -> Bool) clients.sort({ $0 < $1 )

Properties class Vehicle { var description: String { get { return "Speed: \(speed)" set { var speed: Double = 0.0 { willset { if newvalue > 90.0 { println("careful now.")

Structures struct Rect { var width: Double var height: Double var area: Double { return width * height func isbiggerthanrect(other: Rect) -> Bool { return self.area > other.area

Generics struct Stack<T> { var elements = [T]() mutating func push(element: T) { elements.append(element) mutating func pop() -> T { return elements.removelast() var intstack = Stack<Int>() intstack.push(50) let lastin = intstack.pop()

Spolupráce mezi Swiftem a Objective-C Problém Systémové frameworky napsány v Objective-C (Cocoa) externí knihovny, legacy kód Řešení Objective-C -> Swift ručně: bridging header Swift -> Objective-C automaticky: generovaný header

Playgrounds Interaktivní prostředí pro vyzkoušení si kódu Možnost kombinace kódu s HTML textem (interaktivní učebnice)

Playgrounds demo

Díky!

Otázky?