SlideShare ist ein Scribd-Unternehmen logo
1 von 16
Downloaden Sie, um offline zu lesen
desenvolvimento	
  
para	
  iPhone	
  
Helder	
  da	
  Rocha	
  
(helder@argonavis.com.br)	
  
TDC	
   2010	
  
Helder	
  da	
  Rocha	
  
•  Java,	
  since	
  1995	
  
•  Objec6ve-­‐C	
  &	
  iPhone	
  since	
  2008	
  
•  HTML,	
  JavaScript,	
  Web	
  
•  www.argonavis.com.br	
  
•  www.helderdarocha.com.br	
  
Apple	
  vs.	
  Java	
  
•  Java	
  roda	
  no	
  Mac	
  desde	
  primeira	
  versão	
  (1995)	
  
•  Relação	
  diLcil	
  
Tipos	
  de	
  aplicações	
  iPhone	
  
•  Aplicações	
  WebKit	
  
	
  
•  Aplicações	
  naOvas	
  
Cocoa	
  Touch	
  
ObjecOve-­‐C	
  
iOS4	
  /	
  iPhoneOS	
  
HTML	
  
JavaScript	
  
CSS	
  
Java	
  no	
  iPhone?	
  
•  Não	
  suporta	
  	
  
(de	
  forma	
  naOva)	
  
•  Não	
  há	
  planos	
  ou	
  
interesse	
  da	
  Apple	
  para	
  
suporte	
  a	
  Java	
  no	
  iPhone,	
  
iPod,	
  iPad	
  
•  Soluções	
  alternaOvas	
  são	
  
limitadas	
  
iPhone	
  com	
  Java:	
  cenários	
  
•  Aplicações	
  WebKit	
  
	
  
•  Aplicações	
  naOvas	
  
Cocoa	
  Touch	
  
ObjecOve-­‐C	
  
iOS4	
  /	
  iPhoneOS	
  
HTML	
  
JavaScript	
  
CSS	
  
EJB	
  
JSF	
  
Plataforma	
  de	
  desenvolvimento	
  
•  Somente	
  em	
  computador	
  Apple	
  Intel	
  
•  Mac	
  OS	
  X	
  Leopard	
  /	
  Snow	
  Leopard	
  
•  IDE	
  XCode	
  
•  Várias	
  ferramentas	
  naOvas	
  
Apple	
  Store	
  
•  Loja	
  de	
  aplicaOvos	
  da	
  Apple	
  
•  Domina	
  o	
  mercado	
  de	
  aplicaOvos	
  para	
  disposiOvos	
  
móveis	
  
•  PolíOca	
  de	
  negócios	
  
–  70%	
  das	
  vendas	
  para	
  o	
  desenvolvedor,	
  	
  
–  30%	
  para	
  a	
  Apple	
  
•  AplicaOvos	
  baratos,	
  mihões	
  de	
  downloads,	
  alguns	
  
desenvolvedores	
  milionários	
  da	
  noite	
  para	
  o	
  dia	
  
•  Aplicações	
  à	
  venda	
  no	
  Apple	
  Store	
  são	
  escritas	
  em	
  
Objec6ve-­‐C	
  
iPhone	
  Developer	
  Program	
  
•  Para	
  desenvolver	
  :	
  XCode	
  e	
  iPhone	
  Simulator	
  
•  Para	
  transferir	
  uma	
  aplicação	
  para	
  um	
  iPhone,	
  
iPod	
  ou	
  iPad	
  é	
  preciso	
  
– Ou	
  fazer	
  parte	
  do	
  IDP	
  	
  
(99	
  USD	
  por	
  ano;	
  	
  
Apple	
  Store)	
  
– Ou	
  usar	
  um	
  S.O	
  	
  
alternaOvo	
  (Cydia)	
  
ObjecOve-­‐C	
  
#import "Hello.h"
@implementation Hello
-(NSString *) texto {
return texto;
}
-(void) setTexto: (NSString *) t {
[t retain];
[texto release];
texto = t;
}
-(void) sayHello {
[self setTexto:@"Hello!"];
NSLog([self texto]);
char *t = [[self texto] UTF8String];
printf(t);
}
@end
#import <Cocoa/Cocoa.h>
@interface Hello : NSObject {
NSString *texto;
}
-(NSString *) texto;
-(void) setTexto: (NSString *) t;
-(void) sayHello;
@end
•  Linguagem	
  OO	
  baseada	
  em	
  C	
  /	
  Smalltalk-­‐80	
  
•  Curva	
  de	
  aprendizado	
  é	
  baixa,	
  para	
  programadores	
  
com	
  experiência	
  prévia	
  em	
  Java,	
  C#,	
  C++	
  
Cocoa	
  Touch	
  
•  Coleção	
  de	
  frameworks	
  para	
  desenvolvimento	
  
iPhone	
  /	
  iPod	
  /	
  iPad	
  
– Integram	
  com	
  recursos	
  intera6vos	
  do	
  iPhone	
  /	
  iPad	
  
– API	
  de	
  produOvidade	
  como	
  persistência	
  automá6ca	
  
(Core	
  Data),	
  frameworks	
  MVC	
  para	
  interface	
  do	
  
usuário,	
  etc.	
  
– Integram	
  3D	
  (Open	
  GL),	
  	
  
animação,	
  etc.	
  
ObjecOve-­‐C	
  
FoundaOon	
  Framework	
  
UI	
  Kit	
  
C	
  
Programação	
  iPhone:	
  dificuldades	
  para	
  
programadores	
  de	
  outras	
  linguagens	
  
•  ObjecOve-­‐C	
  
– Gerência	
  de	
  memória	
  (ObjecOve-­‐C	
  suporta	
  garbage	
  
collecOon	
  mas	
  não	
  no	
  iPhone)	
  –	
  leaks!	
  
– Aritmé6ca	
  de	
  ponteiros	
  
•  Framework	
  para	
  aplicações	
  
– Mistura	
  de	
  linguagens	
  (código	
  Obj	
  C,	
  C	
  e	
  C++)	
  
– Framework	
  gigante	
  (FoundaOon,	
  Core	
  FoundaOon,	
  
etc.)	
  –	
  demora	
  para	
  ganhar	
  experiência	
  
Demonstração:	
  Hello	
  World	
  
•  Usando	
  XCode	
  e	
  Interface	
  Builder	
  
•  Usando	
  recursos	
  básicos	
  do	
  ambiente	
  e	
  iPhone	
  
Simulator	
  
•  Padrões	
  upicos	
  de	
  uma	
  aplicação	
  gráfica	
  
– View	
  controllers	
  
– Interface	
  Builder	
  resources	
  
– Ligações	
  entre	
  o	
  IB	
  e	
  o	
  código	
  
Roadmap:	
  como	
  aprender?	
  
Explore	
  e	
  experimente	
  
ObjecOve-­‐C	
   C	
  
FoundaOon	
  
Cocoa	
  /	
  Cocoa	
  Touch	
  
Som,	
  Gráficos,	
  Imagem,	
  
Animação,	
  OpenGL,	
  ..	
  
Explore	
  a	
  plataforma	
  de	
  desenvolvimento:	
  baixe	
  exemplos,	
  monte	
  e	
  
compile	
  usando	
  o	
  Xcode,	
  faça	
  alterações	
  no	
  Interface	
  Builder,	
  leia	
  e	
  
aplique	
  tutoriais	
  rápidos	
  de	
  Objec6ve-­‐C,	
  Cocoa,	
  iPhone;	
  familiarize-­‐
se	
  com	
  o	
  ambiente.	
  
Aprenda	
  ObjecOve-­‐C.	
  Se	
  esOver	
  realmente	
  disposto	
  a	
  levar	
  a	
  sério	
  o	
  
desenvolvimento	
  para	
  Apple,	
  estude	
  também	
  C,	
  e	
  C++.	
  Essas	
  
linguagens	
  estão	
  presentes	
  em	
  várias	
  bibliotecas.	
  
Aprenda	
  a	
  usar	
  bem	
  as	
  principais	
  classes	
  do	
  framework	
  FoundaOon:	
  
arrays,	
  dicionários,	
  strings;	
  explore;	
  conheça	
  os	
  métodos,	
  funções,	
  
protocolos,	
  boas	
  práOcas;	
  aplique	
  convenções,	
  padrões	
  de	
  design;	
  
saber	
  usar	
  BEM	
  este	
  framework	
  faz	
  TODA	
  a	
  diferença.	
  
Estes	
  frameworks	
  são	
  essenciais	
  para	
  construir	
  aplicações	
  para	
  
Macs	
  e	
  iPhones.	
  São	
  simples	
  para	
  quem	
  conhece	
  bem	
  FoundaOon,	
  C	
  
e	
  ObjecOve-­‐C.	
  Aplicam	
  padrões	
  de	
  design	
  conhecidos.	
  
Se	
  você	
  ficar	
  no	
  Cocoa	
  Touch	
  (UIKit)	
  básico,	
  suas	
  aplicações	
  ficarão	
  
parecidas	
  com	
  todas	
  as	
  outras,	
  e	
  não	
  vão	
  vender.	
  Para	
  fazer	
  a	
  
diferença	
  é	
  preciso	
  ir	
  além.	
  Se	
  sua	
  base	
  for	
  boa,	
  não	
  vai	
  ser	
  diLcil.	
  
Seja	
  criaOvo!	
  
Saia	
  da	
  zona	
  de	
  conforto!	
  
•  Navegue	
  por	
  mares	
  desconhecidos	
  
•  Explore	
  outras	
  plataformas	
  
•  Aprenda	
  outras	
  línguas	
  
•  Aprenda	
  outras	
  linguagens	
  
•  Faça	
  coisas	
  diferentes!	
  
“Stay	
  hungry,	
  Stay	
  foolish!”	
  
Onde	
  aprender	
  mais	
  
•  developer.apple.com/iphone	
  
•  cocoadevcentral.com	
  
helder@argonavis.com.br	
  

Weitere ähnliche Inhalte

Ähnlich wie iPhone Java 40

Desenvolvendo para iOS em linux
Desenvolvendo para iOS em linuxDesenvolvendo para iOS em linux
Desenvolvendo para iOS em linuxErisvaldo Junior
 
Java: o que estudar para o mercado de trabalho
Java: o que estudar para o mercado de trabalhoJava: o que estudar para o mercado de trabalho
Java: o que estudar para o mercado de trabalhoPedro Cavalero
 
Introdução ao JavaFX
Introdução ao JavaFXIntrodução ao JavaFX
Introdução ao JavaFXjesuinoPower
 
TDC2018SP | Trilha Mobile - Learn once, code anywhere
TDC2018SP | Trilha Mobile - Learn once, code anywhereTDC2018SP | Trilha Mobile - Learn once, code anywhere
TDC2018SP | Trilha Mobile - Learn once, code anywheretdc-globalcode
 
Desenvolvimento de Apps e Games para iOS - Parte 2
Desenvolvimento de Apps e Games para iOS - Parte 2Desenvolvimento de Apps e Games para iOS - Parte 2
Desenvolvimento de Apps e Games para iOS - Parte 2Erisvaldo Junior
 
Introdução ao PhoneGap e Sencha Touch
Introdução ao PhoneGap e Sencha TouchIntrodução ao PhoneGap e Sencha Touch
Introdução ao PhoneGap e Sencha TouchRafael Neri
 
Desenvolver aplicações C# para o iPhone
Desenvolver aplicações C# para o iPhoneDesenvolver aplicações C# para o iPhone
Desenvolver aplicações C# para o iPhoneBruno Pires
 
Jenkins por dentro e por fora - Oracle Code São Paulo 2018
Jenkins por dentro e por fora - Oracle Code São Paulo 2018Jenkins por dentro e por fora - Oracle Code São Paulo 2018
Jenkins por dentro e por fora - Oracle Code São Paulo 2018Fernando Boaglio
 
DC2012 - First steps with Firemonkey and iOS apps in Delphi XE2
DC2012 - First steps with Firemonkey and iOS apps in Delphi XE2 DC2012 - First steps with Firemonkey and iOS apps in Delphi XE2
DC2012 - First steps with Firemonkey and iOS apps in Delphi XE2 Vic Fernandes
 
Guia para o Profissional Java
Guia para o Profissional JavaGuia para o Profissional Java
Guia para o Profissional Javaarmeniocardoso
 
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO ILIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO IOs Fantasmas !
 
Novo Apple TV (tvOS) - Cocoaheads Blumenau - Douglas Fischer.
Novo Apple TV (tvOS) - Cocoaheads Blumenau - Douglas Fischer.Novo Apple TV (tvOS) - Cocoaheads Blumenau - Douglas Fischer.
Novo Apple TV (tvOS) - Cocoaheads Blumenau - Douglas Fischer.Douglas Fischer
 
Linguagens de Programação para Ficar de Olho em 2019 - DevRocks
Linguagens de Programação para Ficar de Olho em 2019 - DevRocksLinguagens de Programação para Ficar de Olho em 2019 - DevRocks
Linguagens de Programação para Ficar de Olho em 2019 - DevRocksRodrigo Wanderley de Melo Cardoso
 

Ähnlich wie iPhone Java 40 (20)

Desenvolvendo para iOS em linux
Desenvolvendo para iOS em linuxDesenvolvendo para iOS em linux
Desenvolvendo para iOS em linux
 
Java: o que estudar para o mercado de trabalho
Java: o que estudar para o mercado de trabalhoJava: o que estudar para o mercado de trabalho
Java: o que estudar para o mercado de trabalho
 
Introdução ao JavaFX
Introdução ao JavaFXIntrodução ao JavaFX
Introdução ao JavaFX
 
Introdução Ao Desenvolvimento Para Iphone
Introdução Ao Desenvolvimento Para IphoneIntrodução Ao Desenvolvimento Para Iphone
Introdução Ao Desenvolvimento Para Iphone
 
TDC2018SP | Trilha Mobile - Learn once, code anywhere
TDC2018SP | Trilha Mobile - Learn once, code anywhereTDC2018SP | Trilha Mobile - Learn once, code anywhere
TDC2018SP | Trilha Mobile - Learn once, code anywhere
 
Desenvolvimento de Apps e Games para iOS - Parte 2
Desenvolvimento de Apps e Games para iOS - Parte 2Desenvolvimento de Apps e Games para iOS - Parte 2
Desenvolvimento de Apps e Games para iOS - Parte 2
 
Introdução ao PhoneGap e Sencha Touch
Introdução ao PhoneGap e Sencha TouchIntrodução ao PhoneGap e Sencha Touch
Introdução ao PhoneGap e Sencha Touch
 
Desenvolver aplicações C# para o iPhone
Desenvolver aplicações C# para o iPhoneDesenvolver aplicações C# para o iPhone
Desenvolver aplicações C# para o iPhone
 
Titanium appacelerator
Titanium appaceleratorTitanium appacelerator
Titanium appacelerator
 
Jenkins por dentro e por fora - Oracle Code São Paulo 2018
Jenkins por dentro e por fora - Oracle Code São Paulo 2018Jenkins por dentro e por fora - Oracle Code São Paulo 2018
Jenkins por dentro e por fora - Oracle Code São Paulo 2018
 
DC2012 - First steps with Firemonkey and iOS apps in Delphi XE2
DC2012 - First steps with Firemonkey and iOS apps in Delphi XE2 DC2012 - First steps with Firemonkey and iOS apps in Delphi XE2
DC2012 - First steps with Firemonkey and iOS apps in Delphi XE2
 
Guia para o Profissional Java
Guia para o Profissional JavaGuia para o Profissional Java
Guia para o Profissional Java
 
8 d iniciando_iphone_ios4
8 d iniciando_iphone_ios48 d iniciando_iphone_ios4
8 d iniciando_iphone_ios4
 
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO ILIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
LIVRO PROPRIETÁRIO - PROGRAMAÇÃO I
 
EVOLUÇÃO DA LINGUAGEM DELPHI - ARTIGO
EVOLUÇÃO DA LINGUAGEM DELPHI - ARTIGOEVOLUÇÃO DA LINGUAGEM DELPHI - ARTIGO
EVOLUÇÃO DA LINGUAGEM DELPHI - ARTIGO
 
POO - Aula 1 introducao
POO - Aula 1   introducaoPOO - Aula 1   introducao
POO - Aula 1 introducao
 
Novo Apple TV (tvOS) - Cocoaheads Blumenau - Douglas Fischer.
Novo Apple TV (tvOS) - Cocoaheads Blumenau - Douglas Fischer.Novo Apple TV (tvOS) - Cocoaheads Blumenau - Douglas Fischer.
Novo Apple TV (tvOS) - Cocoaheads Blumenau - Douglas Fischer.
 
Csharp
CsharpCsharp
Csharp
 
Linguagens de Programação para Ficar de Olho em 2019 - DevRocks
Linguagens de Programação para Ficar de Olho em 2019 - DevRocksLinguagens de Programação para Ficar de Olho em 2019 - DevRocks
Linguagens de Programação para Ficar de Olho em 2019 - DevRocks
 
Delphi Prism 2011
Delphi Prism 2011Delphi Prism 2011
Delphi Prism 2011
 

Mehr von Helder da Rocha

Como criar um mapa temático interativo com dados abertos e D3.js
Como criar um mapa temático interativo com dados abertos e D3.jsComo criar um mapa temático interativo com dados abertos e D3.js
Como criar um mapa temático interativo com dados abertos e D3.jsHelder da Rocha
 
Transforming public data into thematic maps (TDC2019 presentation)
Transforming public data into thematic maps (TDC2019 presentation)Transforming public data into thematic maps (TDC2019 presentation)
Transforming public data into thematic maps (TDC2019 presentation)Helder da Rocha
 
TDC 2019: transformando 
dados
públicos
em mapas interativos
TDC 2019: transformando 
dados
públicos
em mapas interativosTDC 2019: transformando 
dados
públicos
em mapas interativos
TDC 2019: transformando 
dados
públicos
em mapas interativosHelder da Rocha
 
Padrões essenciais de mensageria para integração de sistemas
Padrões essenciais de mensageria para integração de sistemasPadrões essenciais de mensageria para integração de sistemas
Padrões essenciais de mensageria para integração de sistemasHelder da Rocha
 
Visualização de dados e a Web
Visualização de dados e a WebVisualização de dados e a Web
Visualização de dados e a WebHelder da Rocha
 
Eletrônica Criativa: criando circuitos com materiais alternativos
Eletrônica Criativa: criando circuitos com materiais alternativosEletrônica Criativa: criando circuitos com materiais alternativos
Eletrônica Criativa: criando circuitos com materiais alternativosHelder da Rocha
 
Introdução à Visualização de Dados (2015)
Introdução à Visualização de Dados (2015)Introdução à Visualização de Dados (2015)
Introdução à Visualização de Dados (2015)Helder da Rocha
 
API de segurança do Java EE 8
API de segurança do Java EE 8API de segurança do Java EE 8
API de segurança do Java EE 8Helder da Rocha
 
Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)Helder da Rocha
 
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Helder da Rocha
 
Introdução a JPA (2010)
Introdução a JPA (2010)Introdução a JPA (2010)
Introdução a JPA (2010)Helder da Rocha
 
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)Helder da Rocha
 
Minicurso de Segurança em Java EE 7
Minicurso de Segurança em Java EE 7Minicurso de Segurança em Java EE 7
Minicurso de Segurança em Java EE 7Helder da Rocha
 
Curso de WebServlets (Java EE 7)
Curso de WebServlets (Java EE 7)Curso de WebServlets (Java EE 7)
Curso de WebServlets (Java EE 7)Helder da Rocha
 
Atualização Java 8 (2014)
Atualização Java 8 (2014)Atualização Java 8 (2014)
Atualização Java 8 (2014)Helder da Rocha
 
Curso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e StreamsCurso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e StreamsHelder da Rocha
 
Threads 07: Sincronizadores
Threads 07: SincronizadoresThreads 07: Sincronizadores
Threads 07: SincronizadoresHelder da Rocha
 

Mehr von Helder da Rocha (20)

Como criar um mapa temático interativo com dados abertos e D3.js
Como criar um mapa temático interativo com dados abertos e D3.jsComo criar um mapa temático interativo com dados abertos e D3.js
Como criar um mapa temático interativo com dados abertos e D3.js
 
Transforming public data into thematic maps (TDC2019 presentation)
Transforming public data into thematic maps (TDC2019 presentation)Transforming public data into thematic maps (TDC2019 presentation)
Transforming public data into thematic maps (TDC2019 presentation)
 
TDC 2019: transformando 
dados
públicos
em mapas interativos
TDC 2019: transformando 
dados
públicos
em mapas interativosTDC 2019: transformando 
dados
públicos
em mapas interativos
TDC 2019: transformando 
dados
públicos
em mapas interativos
 
Padrões essenciais de mensageria para integração de sistemas
Padrões essenciais de mensageria para integração de sistemasPadrões essenciais de mensageria para integração de sistemas
Padrões essenciais de mensageria para integração de sistemas
 
Visualização de dados e a Web
Visualização de dados e a WebVisualização de dados e a Web
Visualização de dados e a Web
 
Eletrônica Criativa: criando circuitos com materiais alternativos
Eletrônica Criativa: criando circuitos com materiais alternativosEletrônica Criativa: criando circuitos com materiais alternativos
Eletrônica Criativa: criando circuitos com materiais alternativos
 
Introdução à Visualização de Dados (2015)
Introdução à Visualização de Dados (2015)Introdução à Visualização de Dados (2015)
Introdução à Visualização de Dados (2015)
 
API de segurança do Java EE 8
API de segurança do Java EE 8API de segurança do Java EE 8
API de segurança do Java EE 8
 
Java 9, 10, 11
Java 9, 10, 11Java 9, 10, 11
Java 9, 10, 11
 
Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)Curso de Java Persistence API (JPA) (Java EE 7)
Curso de Java Persistence API (JPA) (Java EE 7)
 
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
Curso de Enterprise JavaBeans (EJB) (JavaEE 7)
 
Introdução a JPA (2010)
Introdução a JPA (2010)Introdução a JPA (2010)
Introdução a JPA (2010)
 
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
Curso de RESTful WebServices em Java com JAX-RS (Java EE 7)
 
Minicurso de Segurança em Java EE 7
Minicurso de Segurança em Java EE 7Minicurso de Segurança em Java EE 7
Minicurso de Segurança em Java EE 7
 
Curso de WebServlets (Java EE 7)
Curso de WebServlets (Java EE 7)Curso de WebServlets (Java EE 7)
Curso de WebServlets (Java EE 7)
 
Curso de Java: Threads
Curso de Java: ThreadsCurso de Java: Threads
Curso de Java: Threads
 
Atualização Java 8 (2014)
Atualização Java 8 (2014)Atualização Java 8 (2014)
Atualização Java 8 (2014)
 
Curso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e StreamsCurso de Java: Introdução a lambda e Streams
Curso de Java: Introdução a lambda e Streams
 
Threads 07: Sincronizadores
Threads 07: SincronizadoresThreads 07: Sincronizadores
Threads 07: Sincronizadores
 
Threads 09: Paralelismo
Threads 09: ParalelismoThreads 09: Paralelismo
Threads 09: Paralelismo
 

iPhone Java 40

  • 1. desenvolvimento   para  iPhone   Helder  da  Rocha   (helder@argonavis.com.br)   TDC   2010  
  • 2. Helder  da  Rocha   •  Java,  since  1995   •  Objec6ve-­‐C  &  iPhone  since  2008   •  HTML,  JavaScript,  Web   •  www.argonavis.com.br   •  www.helderdarocha.com.br  
  • 3. Apple  vs.  Java   •  Java  roda  no  Mac  desde  primeira  versão  (1995)   •  Relação  diLcil  
  • 4. Tipos  de  aplicações  iPhone   •  Aplicações  WebKit     •  Aplicações  naOvas   Cocoa  Touch   ObjecOve-­‐C   iOS4  /  iPhoneOS   HTML   JavaScript   CSS  
  • 5. Java  no  iPhone?   •  Não  suporta     (de  forma  naOva)   •  Não  há  planos  ou   interesse  da  Apple  para   suporte  a  Java  no  iPhone,   iPod,  iPad   •  Soluções  alternaOvas  são   limitadas  
  • 6. iPhone  com  Java:  cenários   •  Aplicações  WebKit     •  Aplicações  naOvas   Cocoa  Touch   ObjecOve-­‐C   iOS4  /  iPhoneOS   HTML   JavaScript   CSS   EJB   JSF  
  • 7. Plataforma  de  desenvolvimento   •  Somente  em  computador  Apple  Intel   •  Mac  OS  X  Leopard  /  Snow  Leopard   •  IDE  XCode   •  Várias  ferramentas  naOvas  
  • 8. Apple  Store   •  Loja  de  aplicaOvos  da  Apple   •  Domina  o  mercado  de  aplicaOvos  para  disposiOvos   móveis   •  PolíOca  de  negócios   –  70%  das  vendas  para  o  desenvolvedor,     –  30%  para  a  Apple   •  AplicaOvos  baratos,  mihões  de  downloads,  alguns   desenvolvedores  milionários  da  noite  para  o  dia   •  Aplicações  à  venda  no  Apple  Store  são  escritas  em   Objec6ve-­‐C  
  • 9. iPhone  Developer  Program   •  Para  desenvolver  :  XCode  e  iPhone  Simulator   •  Para  transferir  uma  aplicação  para  um  iPhone,   iPod  ou  iPad  é  preciso   – Ou  fazer  parte  do  IDP     (99  USD  por  ano;     Apple  Store)   – Ou  usar  um  S.O     alternaOvo  (Cydia)  
  • 10. ObjecOve-­‐C   #import "Hello.h" @implementation Hello -(NSString *) texto { return texto; } -(void) setTexto: (NSString *) t { [t retain]; [texto release]; texto = t; } -(void) sayHello { [self setTexto:@"Hello!"]; NSLog([self texto]); char *t = [[self texto] UTF8String]; printf(t); } @end #import <Cocoa/Cocoa.h> @interface Hello : NSObject { NSString *texto; } -(NSString *) texto; -(void) setTexto: (NSString *) t; -(void) sayHello; @end •  Linguagem  OO  baseada  em  C  /  Smalltalk-­‐80   •  Curva  de  aprendizado  é  baixa,  para  programadores   com  experiência  prévia  em  Java,  C#,  C++  
  • 11. Cocoa  Touch   •  Coleção  de  frameworks  para  desenvolvimento   iPhone  /  iPod  /  iPad   – Integram  com  recursos  intera6vos  do  iPhone  /  iPad   – API  de  produOvidade  como  persistência  automá6ca   (Core  Data),  frameworks  MVC  para  interface  do   usuário,  etc.   – Integram  3D  (Open  GL),     animação,  etc.   ObjecOve-­‐C   FoundaOon  Framework   UI  Kit   C  
  • 12. Programação  iPhone:  dificuldades  para   programadores  de  outras  linguagens   •  ObjecOve-­‐C   – Gerência  de  memória  (ObjecOve-­‐C  suporta  garbage   collecOon  mas  não  no  iPhone)  –  leaks!   – Aritmé6ca  de  ponteiros   •  Framework  para  aplicações   – Mistura  de  linguagens  (código  Obj  C,  C  e  C++)   – Framework  gigante  (FoundaOon,  Core  FoundaOon,   etc.)  –  demora  para  ganhar  experiência  
  • 13. Demonstração:  Hello  World   •  Usando  XCode  e  Interface  Builder   •  Usando  recursos  básicos  do  ambiente  e  iPhone   Simulator   •  Padrões  upicos  de  uma  aplicação  gráfica   – View  controllers   – Interface  Builder  resources   – Ligações  entre  o  IB  e  o  código  
  • 14. Roadmap:  como  aprender?   Explore  e  experimente   ObjecOve-­‐C   C   FoundaOon   Cocoa  /  Cocoa  Touch   Som,  Gráficos,  Imagem,   Animação,  OpenGL,  ..   Explore  a  plataforma  de  desenvolvimento:  baixe  exemplos,  monte  e   compile  usando  o  Xcode,  faça  alterações  no  Interface  Builder,  leia  e   aplique  tutoriais  rápidos  de  Objec6ve-­‐C,  Cocoa,  iPhone;  familiarize-­‐ se  com  o  ambiente.   Aprenda  ObjecOve-­‐C.  Se  esOver  realmente  disposto  a  levar  a  sério  o   desenvolvimento  para  Apple,  estude  também  C,  e  C++.  Essas   linguagens  estão  presentes  em  várias  bibliotecas.   Aprenda  a  usar  bem  as  principais  classes  do  framework  FoundaOon:   arrays,  dicionários,  strings;  explore;  conheça  os  métodos,  funções,   protocolos,  boas  práOcas;  aplique  convenções,  padrões  de  design;   saber  usar  BEM  este  framework  faz  TODA  a  diferença.   Estes  frameworks  são  essenciais  para  construir  aplicações  para   Macs  e  iPhones.  São  simples  para  quem  conhece  bem  FoundaOon,  C   e  ObjecOve-­‐C.  Aplicam  padrões  de  design  conhecidos.   Se  você  ficar  no  Cocoa  Touch  (UIKit)  básico,  suas  aplicações  ficarão   parecidas  com  todas  as  outras,  e  não  vão  vender.  Para  fazer  a   diferença  é  preciso  ir  além.  Se  sua  base  for  boa,  não  vai  ser  diLcil.   Seja  criaOvo!  
  • 15. Saia  da  zona  de  conforto!   •  Navegue  por  mares  desconhecidos   •  Explore  outras  plataformas   •  Aprenda  outras  línguas   •  Aprenda  outras  linguagens   •  Faça  coisas  diferentes!   “Stay  hungry,  Stay  foolish!”  
  • 16. Onde  aprender  mais   •  developer.apple.com/iphone   •  cocoadevcentral.com   helder@argonavis.com.br