Android

Alguns Conceitos Básicos de Programação Android

O objetivo deste tutorial (uma tradução livre de http://mobile.tutsplus.com/tutorials/android/java-tutorial/) é o de treinar quem já esteja familiarizado com uma linguagem de programação (C++, VB, PHP, etc) para trabalhar com a linguagem de programação Java e a sua utilização no contexto de desenvolvimento de aplicação Android. O uso da língua inglesa é também aqui relativamente comum, porque – francamente – não acredito na tradução literal de termos técnicos e muito particularmente informáticos.

Pré-requisitos:
Conhecimentos básicos de programação são esperados assim como um ambiente de desenvolvimento (IDE) como o Eclipse, provavelmente o IDE mais utilizado em Android Development. O Eclipse é gratuito e está disponível para Windows, MacOSX e Linux. Igualmente útil será o Android SDK:
http://www.eclipse.org/downloads/
http://developer.android.com/sdk/index.html

O que é o Java?
As aplicações Android são desenvolvidas utilizando a linguagem Java. Originalmente criada pela Sun Microsystems, a Java inclui muitas das caraterísticas das linguagens de programação modernas. O Java é relativamente fácil de aprender, é independente da plataforma onde o seu código será executado, seguro graças ao uso de virtual machines e é uma linguagem de programação orientada por objetos. O Android SDK incorpora a maioria das libraries standard do Java (data structure libraries, math libraries, graphics libraries, networking libraries, etc) para além de várias Android libraries.
A linguagem Java é facilmente compreendida pelo leigo. Por exemplo:

char character = ‘a’;
if(character==’a’)
{
doSomething();
} else {
doSomethingElse();
}

Mostra que existe uma variável chamada “character” com o conteúdo “a”. Sendo este “a”, é chamado o método “doSomething()”, se não fosse, seria invocado o doSomethingElse()

Independente da Plataforma:
A maioria das linguagens de programação exigem um compilador para transformar o código fonte (como o acima) numa linguagem que a máquina possa interpretar. Isto significa que essa linguagem muda de sistema para sistema e de processador para processador, logo, não será portável… Isto não acontece com o Java. Os compiladores Java convertem o código fonte em algo chamado de “bytecode” que a Java Virtual Machine consegue ler e executar. A execução é relativamente rápida e eficiente, muito semelhante aos níveis de desempenho de um compilação C ou C++ tal é o nível de sofisticação implementado hoje pelas Java VMs.
As aplicações Android são executadas numa máquina virtual conhecida como Dalvik VM que permite que todo o código seja executado de forma muito idêntica (mas não completamente igual…) em todos os devices Android.

Segurança:
O Java é seguro porque tudo corre dentro da bolha que é a virtual machine, isolada do hardware do computador. A plataforma Android aumenta ainda mais este nível de segurança ao correr dentro de uma bolha mas também porque estão sempre sob monitorização do sistema operativo que as desliga se ultrapassarem determinados padrões de normalidade (excesso de uso de CPU, desperdício de recursos, etc).

Compilando:
Ainda que o Java não compile até ao ponto do código-máquina, o Java continua a ser uma linguagem compilada: isto é, o programador compila os projetos Android e faz o seu package até ao device. O Eclipse (com o plug-in Android) torna este processo relativamente simples. No Eclipse, a compilação automática está ligada por defeito, o que significa que cada vez que um projeto é guardado, ele é recompilado. O Eclipse também mostra erros de digitação à medida que se escreve o código. Com a opção “Build Automatically” ligada, é possível escolher o “Clean…” para realizar um full rebuild de todos os ficheiros. Se a opção “Build Automatically” estiver desligada, as opções “Build All” e “Build Prokect” tornam-se disponíveis. “Build All” significa fazer o build de todos os projetos situados no workspace, o que pode demorar muito tempo se tiver muitos projetos no workspace…
O processo de build, num projeto Java, produz um ficheiro com a extensão .JAR (Java ARchive) que depois resulta num Android PacKage (.apk) que tem o código Java compilado, assim como código Java compilado, texto, imagens e ficheiros de sons. Incluído está também o importante ficheiro AndroidManifest.xml requerido por todas as aplicações Android e que inclui os detalhes de configuração sobre a aplicação.

O que é uma linguagem de programacao orientada por objetos?
Uma linguagem “object oriented programing” é uma forma de programar em que, por exemplo um objeto “cão” terá nome, raça e género. Podemos criar várias instâncias do objeto “cão”, cada um dos quais tem que ser criado pelo método constructor (um método que tem o mesmo nome que o próprio objeto), nomeadamente, um objeto “cão” usa um constructor com três parametros: nome, raça e género:

Dog dog1 = new Dog(“Lassie”, collie, female);
Dog dog2 = new Dog(“Fifi”, poodle, female);
Dog dog3 = new Dog(“Asta”, foxterrier, male);

Este exemplo expõe alguns dos traços fundamentais da Java. Observa-se que uma classe oferece uma definição para um objeto e, consequentemente, existira algures uma classe “cão” algures, ou definida pelo programador ou em alguma library. Normalmente, uma classe será definida no seu próprio ficheiro (por exemplo dog.java). Existem algumas excepções a esta regra, como classes definidas dentro de outras classes (quando uma classe é declarada dentro de outra classe, estas são definidas na classe pai). Quando se deseja referenciar a um objeto a partir de outra classe, é necessário incluir um import statement no topo do ficheiro.

Uma classe tipicamente descreve os dados e o comportamento de um objeto. O comportamento é definido com class methods, sendo um method o termo comum para uma subrotina numa linguagem OOP. As classe comuns são definidas em shared class libraries como os software development kits (SDKs) ou pelo programador.

Um dos termos mais usados na Java é o de herança “inheritance”, que significa que as classes Java (e objetos) podem ser organizadas em hierarquias com as classes mais baixas recebendo por herança comportamentos (behaviour) e outros traços das classes mais altas e genéricas. Vamos ilustrar este conceito através do exemplo de um aquário: o aquário tem alguns peixes, logo, podemos definir uma classe que representa um ficheiro. Esta classe, chamada Peixe, inclui alguns data fiels (ou atributos) que descrevem um peixe: espécie, cor e tamanho; assim como o seu comportamento na forma de métodos (também chamados de subrotinas ou funções, noutras linguagens de programacao), como Come(), Dorme() e FazerBebesPeixe(). Um tipo especial de método, designado como Constructor é usado para criar ou inicializar um objeto. Os constructors sao nomeados da mesma forma que a sua classe podem incluir (ou não) parâmetros. A classe Peixe, por exemplo, tem dois constructors: um para criar e outro para construir um peixe específico com alguns dados iniciais.

O objeto Peixe pode ter dois métodos: um Comer() para comer aleatoriamente alguma coisa e outro para comer outros peixes, a saber, outras instâncias da classe Peixe:

public class Fish {

private String mSpecies;
private String mColor;
private int mSize;

Fish() {
// generic fish
mSpecies = “unknown”;
mColor = “unknown”;
mSize = 0;
}

Fish(String species, String color, int size) {
mSpecies = species;
mColor = color;
mSize = size;
}
public void eat() {
// eat some algae
};

public void eat(Fish fishToEat) {
// eat another fish!
};

public void sleep() {
// sleep
};

public void makeBabyFish(Fish fishSpouse, int numBabies) {
// Make numBabies worth of baby fish with Fish spouse
};
}

As Classes podem ser organizadas por hierarquias, onde uma classe derivada ou subclasse inclui todas as carateristicas da classe pai ou superclasse, mas refina e adiciona-as para um objeto mais especifico. A isto se chama de herança ou inheritance. Por exemplo, a classe Fish pode ter duas subclasses: FreshwaterFish e SaltwaterFish. Estas subclasse terão todas as carateristicas da classe Fish, mas vão levar mais longe os behaviours da classe pai Fish. Por exemplo, a classe FreshwaterFish pode incluir informação sobre o tipo de ambiente de água doce (rio, lado, ribeiro, etc). De forma idêntica, a SaltwaterFish pode personalizar o método makeBabyFish() de forma a que o peixe coma o seu par depois de procriar com ele usando um mecanismo de override:

public class SaltwaterFish extends Fish
{
@Override
public void makeBabyFish(Fish fishSpouse, int numBabies) {
// call parent method
super.makeBabyFish(fishSpouse, numBabies);
// eat mate
eat(fishSpouse);
}
}

Na linguagem Java é possível organizar comportamentos usando Interfaces:

Enquanto uma classe define um objeto, uma interface define algum behaviour que pode ser aplicado a um objeto. Por exemplo, podemos definir uma interface Swimmer (mergulhador) que providencia um grupo de métodos que são comuns a todos os objetos que podem nadar, quer sejam peixes, quer não. A interface Swimmer pode assim especificar quatro métodos: startSwimming(), stopSwimming(), dive(), e surface():

public interface Swimmer
{
void startSwimming();
void stopSwimming();
void dive();
void surface();
}

Uma classe como Fish pode assim implementar a interface Swimmer e oferecer implementações ao comportamento Swimmer:

public class Fish implements Swimmer {
// oferece implementacoes para os quatro métodos da Swimmer interface
}

Organizando Classes e Interfaces com Packages:

As hierarquias de classes, como as nossas Fish podem organizadas em packages. Um package é simplesmente um conjunto de classes e interfaces juntas. Os programadores usam namespaces para identificarem de forma única packages. Por exemplo, podemos usar com.mamlambo.aquarium ou com.ourclient.project.subproject como o nosso package para agregar todas as nossas classes relacionadas com peixes.

Em suma:

Os parágrafos anteriores foram relativamente intensos e extensos… ma segunda lição deste curso vamos abordar os detalhes da sintaxe da Java.

Fonte:
http://developer.android.com/sdk/index.html

Anúncios
Categories: Android, Informática | Deixe um comentário

Conceitos básicos de programação em Android

Vantagens de aplicações baseadas na Web:

Acesso universal:
.os browsers estão em todo o lado
.qualquer device na rede pode aceder ao conteúdo: PCs, Macs, Linux, Android, iPhone, etc
.As atualizações sao automáticas
.Todos os conteúdos proveem do servidor, por isso estão sempre atualizados.
.Existem várias linguagens de programacao disponíveis: Java, PHP,  Ruby/Rails, etc
.Desvantagens:
..Fraca interface e GUI: apenas estão disponíveis os controlos mais básicos como o textfield, text area, butoes, checkbos, radio buttons, list box e comboboxes… somente com o HTML5 existe capacidade de desenho direto.
..não é possível interagir com recursos locais
..não é possível ler ficheiros, chamar aplicações ou aceder a devices locais
..comunicação deficiente dependente do HTTP
..desenhado para grandes écrans e computadores com rato

Vantagens das aplicações móveis:
.muitos controlos GUI modernos: textfield, text area, botões, checbox, radio, list box, combo box, clock, calendar, date picker, dialog box, image gallery, entre outros.
.suporta direct drawing
.pode interagir com recursos locais
.pode ler ficheiros locais, aceder a uma base dados local, aceder ao GPS, iniciar chamadas, obter dados diretos do microfone, ler a orientação do telefone, etc
.comunicacao eficiente com a possibilidade de usar vários protocolos além do HTTP
.linguagens de programacao: java for Android, Objective C for iPhone
.desenhado para pequenos écrans com touch screen
.muitos controlos GUI otimizados para smartphones

Desvantagens das Mobile Apps:
.não existe acesso universal, as apps têm que ser instaladas em cada um dos smartphones onde vao correr
.uma app android não pode correr num iPhone e vice-versa
.existe alguma dificuldade em gerir as atualizações
.tem que ser o utilizador a desencadear as atualizações doo seu software
.menos ferramentas de desenvolvimento disponíveis

Instalando Apps:
.iPhone: tem maior disponibilidade de aplicações, mas o Android está a crescer. As aplicações corporativas só podem ser instaladas a partir da App Store e logo é preciso submete-las e isto mesmo para aplicações que sejam utilizadas unicamente na intranet.
Android apps: podem ser instaladas através de vários meios:
.google app store
.amazon app store
.ligação usb a um computador
.email
.website corporativo

Linguagens disponíveis para mobile:
iPhone
.objective C, semelhante a C++
Android
.java

Necessário para desenvolver para Mobile:
iPhone:
.MacOSX
Android:
.qualquer computador com Java e Eclipse

Durante muito tempo a dominação no mercado foi dividida entre a Blackberry (RIM): na segunda metade de 2010, dados da A. C. Nielsen colocavam a Blackberry como líder, com 33% da quota de mercado e o Android com 27% (vários fabricantes) e o iOS do Apple iPhone com 23%
Android VS iPhone:
.o iPhone tem hoje uma quota de mercado maior que o iPhone, uma App Store com mais ofertas e utilizadores extremamente fiéis, mas o Android continua a crescer a bom ritmo, não havendo hoje forma de antecipar de uma forma minimamente segura um “vencedor” neste duelo das plataformas móveis.
O que usar para aplicações corporativas:
.nos ambientes corporativos não é fácil instalar aplicações num iPhone, ao contrário do que acontece nos Android, por outro lado, esta plataforma usa como ambiente de desenvolvimento o Java, uma linguagem dominada e usada na maioria das organizações, ao contrário do Objective C do iPhone. Esses dois fatores tornam o Android na plataforma preferida no mundo empresarial.

Em suma, ainda que os smartphones possam correr web apps, estas não oferecem os mesmos controlos de apps feitas para Android, as quais, assim, conseguem oferecer uma experiência do utilizador de maior qualidade. Além do mais, as Android Apps conseguem aceder aos recursos locais do telemóvel, como a câmara, o GPS ou o telefone, algo que é impossível nas web apps.

A grande questão no mundo do desenvolvimento para Mobile está em saber quem dominara num futuro próximo: iPhone ou Android?… no mercado doméstico a vantagem não pertence claramente a nenhuma das plataformas, mas no mundo corporativo, o Android aparece como o vencedor claro.

Links para desenvolvedores Android:
http://developer.android.com/
http://stackoverflow.com/questions/tagged/android
Galeria de widgets android
http://www.droiddraw.org/widgetguide.html

Categories: Android, Informática | Deixe um comentário

Site no WordPress.com.

TRAVÃO ao Alojamento Local

O Alojamento Local, o Uniplaces e a Gentrificação de Lisboa e Porto estão a destruir as cidades

Não aos Serviços de Valor Acrescentado nas Facturas de Comunicações !

Movimento informal de cidadãos contra os abusos dos SVA em facturas de operadores de comunicações

Vizinhos de Alvalade

Movimento informal, inorgânico e não-partidário (nem autárquico independente) de Vizinhos de Alvalade

anExplica

aprender e aprendendo

Subscrição Pública

Plataforma independente de participação cívica

Rede Vida

Just another WordPress.com weblog

Vizinhos do Areeiro

Movimento informal, inorgânico e não-partidário (nem autárquico independente) de Vizinhos do Areeiro

Moradores do Areeiro

Movimento informal, inorgânico e não-partidário (nem autárquico independente) de Moradores do Areeiro

AMAA

Associação de Moradores e Amigos do Areeiro

MDP: Movimento pela Democratização dos Partidos Políticos

Movimento apartidário e transpartidário de reforma da democracia interna nos partidos políticos portugueses

Operadores Marítimo-Turísticos de Cascais

Actividade dos Operadores Marítimo Turísticos de Cascais

MaisLisboa

Núcleo MaisDemocracia.org na Área Metropolitana de Lisboa

THE UNIVERSAL LANGUAGE UNITES AND CREATES EQUALITY

A new world with universal laws to own and to govern all with a universal language, a common civilsation and e-democratic culture.

looking beyond borders

foreign policy and global economy

O Futuro é a Liberdade

Discussões sobre Software Livre e Sociedade

Parece piada... fatos incríveis, estórias bizarras e outros micos

Tem cada coisa neste mundo... e todo dia surge uma nova!

O Vigia

O blog retrata os meus pensamentos do dia a dia e as minhas paixões, o FLOSS, a política especialmente a dos EUA, casos mal explicados, a fotografia e a cultura Japonesa e leitura, muita leitura sobre tudo um pouco, mas a maior paixão é mesmo divulgação científica, textos antigos e os tais casos ;)