Iniciando no Symbian C++ para Serie 60 – Parte 01
- Introdução.
- estrutura do OS
- estrutura do SDK
- IDE´s
- testando no emulador vs testando no device
- esqueleto de uma aplicação básica
- conclusão
Introdução:
Motivações para este artigo:
Os smartphones estão chegando. Estes incríveis telefones multifuncionais são o maior expoente da nova tecnologia convergente. Absorvendo tanto dos computadores, quando dos walkmans e mp3 players, quanto dos videogames, estes novos aparelhos oferecem a chance ao usuário de ter mais qualidade de vida, de se divertir mais e de poder mostrar um aparelho bonito para os amigos. Então nada melhor que mostrar o aparelho para os amigos com ele rodando um programa feito por você, não?! Com este artigo, pretendo falar um pouco sobre o que aconteceu até agora, um pouco sobre o que esta por vir e por fim devo falar um pouco sobre o que você pode fazer com uma familia de smartphones da nokia, os Series 60. Vamos começar nossa viagem falando sobre algumas definições e sobre o coração da Series 60: sua funcionalidade
O que é o Symbian OS:
Symbian OS é um sistema operacional focado em pequenos dispositivos alimentados por baterias e com capacidades de comunicação. Mobilidade é um fator marcante de seu projeto.
Originalmente, o sistema Symbian chamava-se EPOC. Neste período, ele era usado unicamente pela Psion Computers, para gerenciar seus handhelds. Até o momento que as grandes empresas do ramo de
telefonia celular formaram um consorcio chamado Symbian, de forma a padronizar o middleware a equipar a nova geração de celulares que estava por nascer.A geração dos Smartphones.
O que são os Smartphones:
Na era da mobilidade, esta nova geração de celulares incorporou o EPOC. Seu primeiro representante foi o Ericson R380, lançado ainda com o EPOC32 Release 5.0, e por isso com uma UI muito semelhante a dos computadores de mão da Psion. Do R380 até os Series 60, que são o objetivo de estudo deste artigo, o EPOC32 Release 5.0 evoluiu até o ponto de surgir o EPOC 6.0 que foi rebatizado então como Symbian 6.0.
Desde o R380, muitas evoluções já foram incorporadas aos Smartphones,como capacidades multimídia e dispositivos de entrada dos mais diversos, como reconhecimento de voz, telas sensíveis ao toque e até mesmo câmeras.
Para acompanhar esta evolução, o Symbian OS vem evoluindo rapidamente, incorporando suporte as mais novas tecnologias de transmissão de dados, facilidades para Games de grande impacto visual e sonoro, e armazenamento (a crescente quantidade de dados demanda uma grande preocupação com a tecnologia de armazenamento - fato que levou a Nokia a decidir-se por usar Discos Rígidos recentemente).
O que são os dispositivos Series 60:
Os Series 60 são uma família de celulares que procura manter um mínimo de compatibilidade entre si esta família , por isso, é toda baseada em uma UI comum e em uma série de engines de uso comum, visando a facilidade de programação para terceiros.
Para tanto, a família Series 60 tem uma série de requerimentos e padrões pré-estabelecidos:
· tela de no mínimo 176x208
· no mínimo 4096 cores (cores com 12 bits de profundidade)
· navegação com apenas uma mão
e por ai vai.
Estrutura do OS:
O que o consorcio Symbian Ltd. realmente fornece a quem o licencia é o middleware, que conforme mostra a figura (rascunho.bmp), consiste na base do sistema (kernel, sistema de arquivos,etc) , alguns servers, alguns appplication engines,uma java KVM , e uma implementação de UIKON genérica.
Cabe a cada uma das componentes do consórcio fazer seus device drivers, implementar uma UI e modificar o sistema para rodar no seu aparelho.Não raramente, uma empresa licensia as modificações da outra, como aconteceu com a própria Serie 60 da nokia, que foi licenciada para empresas como Sendo, Siemens
Do ponto de vista do usuário, o SymbianOS é quase invisível, pois não existe acesso direto do usuário a qualquer uma das camadas de sistema que correspondem ao Symbian puro. Do ponto de vista do desenvolvedor, o Symbian é, geralmente,algo remoto ao qual se tem acesso a um punhado de classes.
Ainda no ponto de vista do desenvolvedor, a aplicação symbian vive dentro do framework fornecido pela UI Series 60. Fazer um executável fora deste framework, lidando com as camadas mais intermediárias do sistema, e entrando em mais contato com o Core do sistema. Este tipo de programação é extremamente desaconselhável, pois expõe o sistema (na medida que se faz um executável com forma não previsível para o sistema) e não aproveita um framework sólido e confiável, e ao mesmo tempo poderoso.
Diferenças do SymbianOS para outras plataformas , do ponto de vista do programador:
Programação para dispositivos móveis, em especial telefones, é certamente muito diferente da programação para computadores. Em um celular, é necessário preparar a aplicação para a qualquer momento ser interrompida por um evento externo, como uma ligação recebida, ou uma mensagem SMS; Assim como a aplicação tem que ser muito cuidadosa em termos de uso da memória, pois trata-se de um ambiente que pode ficar semanas sem ser reiniciado. Apesar de o Symbian fornecer sistemas que facilitam estas tarefas, ainda cabe ao desenvolvedor tomar estes cuidados.
Estes novos conceitos são responsáveis pelo surgimento de algumas estruturas que os desenvolvedores que começam a programar em Symbian OS normalmente se deparam e que podem esticar a curva de aprendizado:
- o Framework
- descritores
- TRAP´s e Leave´s
- a Cleanup Stack
- compilação plataforma cruzada (criação de pacote para executar no device)
- containers
- PANICS
- convenções de nome
- UID´s
O Framework:
Conforme explicado acima, a UI Series 60 fornece um framework, comumente chamado de CONE Framework, composto de uma série de classes com funções muito bem definidas, de forma que resultam no esqueleto de uma aplicação comparável aos esqueletos de managed application do Java, como os modelos Applet e Midlet. no caso do CONE framework, são no mínimo 3 classes: Application, Document e AppUi . embora a esta construção seja incomum, é o mínimo necessário. o recomendável é usar uma quarta classe, View, para encapsular todas as inicializações para saída em "janela". o modelo final:
Application -> Document -> AppUi -> View
Descritores :
Para gerenciar melhor o armazenamento de recursos (lembrando da escassez de memória de um handheld médio), a estratégia tomada pelos criadores do Symbian foi criar classes de container para dados binários. Assim, tanto texto quanto dado binário são armazenados nestes containers chamados descritores (Descriptors em inglês) e por isso recebem o mesmo tratamento interno. Normalmente os desenvolvedores iniciantes evitam o uso de descritores ao máximo, o que pode ser algo interessante (evitar uso de dados em excesso de forma geral), mas chega o momento que se torna impossível evitar, pois estes estão espalhadas por quase todas as camadas do Symbian.
TRAP´s e Leave´s:
Quando o Symbian foi concebido, sua ferramenta de compilação de plataforma cruzada , o compilador GNU C++, ainda não suportava com eficiência satisfatória (checar) o método tradicional da linguagem C++ para tratamento de exceções - try, throw e catch -. Por isso, os projetistas do sistema acabaram por criar uma alternativa viável e mais econômica para um ambiente de recursos escassos: Leaves.
Este sistema acaba por funcionar de forma quase idêntica ao adotado pelo ANSI C++: TRAP corresponde a um try , e uma chamada a User::Leave corresponde a throw. a parte de tratamento do erro fica a cargo do programador final. Este é outro fator que um programador iniciante pode tentar evitar, mas que leva a criação de código pouco confiável.
PANICS:
Enquanto uma exceção (a regra do funcionamento correto do sistema) é uma condição especial da qual nem sempre podemos garantir que vai acontecer, um PANIC é um erro certeiro. determinada condição anormal que SEMPRE vai resultar num erro, e neste caso, a culpa quase sempre é do programador. Um panic sempre denota algum problema com a aplicação executada. Enquanto com Leaves, o programa tem como se recuperar e tratar-se, com um PANIC, o programa é fechado para evitar causar problemas à integridade do sistema e ponto final.
A cleanup stack:
Sempre que ocorre um Leave, o sistema automaticamente sai da função problemática e vai descendo na pilha de chamadas de função até encontrar um TRAP , de modo a tratar o erro em questão. qualquer recurso alocado em Heap que estivesse alocado nestas funções seria perdido, se não fosse a cleanup stack. no caso de haver um Leave, a cleanup stack vai desempilhando ponteiros e liberando a memória destes , de modo a evitar que recursos se tornam órfãos.Logo, sempre que acorrer alguma manipulação passível de executar um Leave, é implorante empilhar os ponteiros dos dados alocados.
A compilação em plataforma cruzada:
Uma das maiores complicações para o programador (mesmo o experiente) que nunca testou sua aplicação fora do emulador é justamente obter os mesmos resultados no hardware alvo. Como se trata de métodos de compilação diferenciados para o hardware alvo e o emulador, diversos cuidados devem ser tomados. Em geral, o compilador GNU C++, usado para compilar a aplicação para o hardware tende a ser mais rígido quanto a completude do código e rende muitas dores de cabeça para os mais inexperientes. Convém usar a compilação em Release o emulador para não ter que usar a aspirina depois..
Containers:
Justamente pelo tipo de ambiente no qual o seu programa vai rodar , os containers próprios são um componente importante do ambiente Symbian.Em outras plataformas, a escolha da STL, conforme é comum ao ANSI C++, pode ser a mais confortável, para um ambiente mais restrito, STL pode ser pesado demais.Para não ficar o Gap, a Symbian fornece uma serie de containers mais apropriados para um ambiente mais restrito.estes containers costumam ser um dos tópicos que mais afastam os iniciantes de criar seus
killer games nos Series 60.
UIDs:
As UID´s são números usados para a identificação da sua aplicação. é uma espécie de registro único - tanto que para obter um, você deve entrar em contato com a Symbian Ltd , mas não se desespere, o processo é gratuito - de modo que o OS vai associar os arquivos da sua aplicação somente a ela.Na prática, temos que acertar o numero , ou a aplicação não funcionara no aparelho.