![Page 1: Symbian C++ vs.NET Compact Framework C# Leonardo Kunz](https://reader036.vdocuments.com.br/reader036/viewer/2022062411/570638441a28abb8238f25c6/html5/thumbnails/1.jpg)
Symbian C++ vs
.NET Compact Framework C#
Leonardo Kunz
![Page 2: Symbian C++ vs.NET Compact Framework C# Leonardo Kunz](https://reader036.vdocuments.com.br/reader036/viewer/2022062411/570638441a28abb8238f25c6/html5/thumbnails/2.jpg)
Sumário Introdução (Symbian OS)
Características História
Symbian C++ vs .NET Compact C# Convenções Exceções Objetos ativos Threads Sincronização
Conclusões
![Page 3: Symbian C++ vs.NET Compact Framework C# Leonardo Kunz](https://reader036.vdocuments.com.br/reader036/viewer/2022062411/570638441a28abb8238f25c6/html5/thumbnails/3.jpg)
Symbian OS - Introdução
Características PrincipaisSO para dispositivos móveis e PDAsDesenvolvido para arquitetura ARMÊnfase na economia de recursosSuporte para aplicações de tempo realMultitarefas e proteção de memóriaEquipa maioria dos smartphones atuaisVárias plataformas (S60, UIQ, MOAP)
![Page 4: Symbian C++ vs.NET Compact Framework C# Leonardo Kunz](https://reader036.vdocuments.com.br/reader036/viewer/2022062411/570638441a28abb8238f25c6/html5/thumbnails/4.jpg)
Symbian OS - Introdução
HistóriaEricsson, Nokia, Motorola e Psion fundaram a
Symbian Ltd. em 1998Baseado no EPOC da PsionSymbian Ltd. desenvolve SO base e licencia
para fabricantesEm 24 de junho de 2008, anuncia compra da
Symbian e criação da Symbian Foundation
![Page 5: Symbian C++ vs.NET Compact Framework C# Leonardo Kunz](https://reader036.vdocuments.com.br/reader036/viewer/2022062411/570638441a28abb8238f25c6/html5/thumbnails/5.jpg)
Symbian OS - Introdução
Symbian FoundationUnificar plataformas SymbianTornar plataforma open-sourceParceiros: Nokia, Sony Ericsson, Motorola,
NTT DoCoMo, AT&T, LG Electronics, Samsung Electronics, STMicroelectronics, Texas Instruments e Vodafone
![Page 6: Symbian C++ vs.NET Compact Framework C# Leonardo Kunz](https://reader036.vdocuments.com.br/reader036/viewer/2022062411/570638441a28abb8238f25c6/html5/thumbnails/6.jpg)
Symbian OS - Introdução
Linguagens suportadasSymbian C/C++JavaMEFlashLitePerlPythonRubyLua
![Page 7: Symbian C++ vs.NET Compact Framework C# Leonardo Kunz](https://reader036.vdocuments.com.br/reader036/viewer/2022062411/570638441a28abb8238f25c6/html5/thumbnails/7.jpg)
Symbian C++
Baseada em C++ Otimizada para dispositivos móveis com
recursos limitados Principais características
CleanupStack Trap/Leave Modelo cliente/servidor – chamadas assíncronas Objetos ativos
![Page 8: Symbian C++ vs.NET Compact Framework C# Leonardo Kunz](https://reader036.vdocuments.com.br/reader036/viewer/2022062411/570638441a28abb8238f25c6/html5/thumbnails/8.jpg)
Symbian C++ - Convenções
Conveção de Nomes - baseada na funcionalidade das classesClasses TClasses CClasses RClasses M
![Page 9: Symbian C++ vs.NET Compact Framework C# Leonardo Kunz](https://reader036.vdocuments.com.br/reader036/viewer/2022062411/570638441a28abb8238f25c6/html5/thumbnails/9.jpg)
Symbian C++ - Convenções
Classes Tipo T Normalmente alocadas na pilhaDesalocadas quando função de chamada
retornar
![Page 10: Symbian C++ vs.NET Compact Framework C# Leonardo Kunz](https://reader036.vdocuments.com.br/reader036/viewer/2022062411/570638441a28abb8238f25c6/html5/thumbnails/10.jpg)
Symbian C++ - Convenções
Classes Tipo CAlocadas em heapSempre derivam da classe CBaseOperador newManipuladas por ponteiro
![Page 11: Symbian C++ vs.NET Compact Framework C# Leonardo Kunz](https://reader036.vdocuments.com.br/reader036/viewer/2022062411/570638441a28abb8238f25c6/html5/thumbnails/11.jpg)
Symbian C++ - Convenções
Classes Tipo RHandles para recursos mantidos em outro
lugar
![Page 12: Symbian C++ vs.NET Compact Framework C# Leonardo Kunz](https://reader036.vdocuments.com.br/reader036/viewer/2022062411/570638441a28abb8238f25c6/html5/thumbnails/12.jpg)
Symbian C++ - Convenções
Classes Tipo MDefinem classes abstratas Implementação em classes derivadas
![Page 13: Symbian C++ vs.NET Compact Framework C# Leonardo Kunz](https://reader036.vdocuments.com.br/reader036/viewer/2022062411/570638441a28abb8238f25c6/html5/thumbnails/13.jpg)
.NET Compact Framework
Baseado no .NET Desenvolvimento para Windows CE C# ou Visual Basic
![Page 14: Symbian C++ vs.NET Compact Framework C# Leonardo Kunz](https://reader036.vdocuments.com.br/reader036/viewer/2022062411/570638441a28abb8238f25c6/html5/thumbnails/14.jpg)
Symbian C++ - Exceções
Try / Catch do C++ não suportado em versões anteriores à versão 9.0
Mecanismo Leave / Trap é semelhanteMenor overheadMétodos com Leave devem terminar em L
![Page 15: Symbian C++ vs.NET Compact Framework C# Leonardo Kunz](https://reader036.vdocuments.com.br/reader036/viewer/2022062411/570638441a28abb8238f25c6/html5/thumbnails/15.jpg)
Symbian C++ - Exceçõesint InsertL(){//... other codes ...if (!myObject) User::Leave(KErrNoMemory);//... more codes...}
TInt errcode;TRAP(errcode, InsertL());if (errcode == KErrNoMemory){ // threats exceptions throwed by "InsertL()" }
![Page 16: Symbian C++ vs.NET Compact Framework C# Leonardo Kunz](https://reader036.vdocuments.com.br/reader036/viewer/2022062411/570638441a28abb8238f25c6/html5/thumbnails/16.jpg)
Symbian C++ - Exceções
Sinalização de erros fatais – Panic User::Panic(). Resulta na finalização da thread
![Page 17: Symbian C++ vs.NET Compact Framework C# Leonardo Kunz](https://reader036.vdocuments.com.br/reader036/viewer/2022062411/570638441a28abb8238f25c6/html5/thumbnails/17.jpg)
.NET Compact C# - Exceções
Try / Catch / Finally Idêntico à .NET Mais legível do que mecanismo de
exceções (Trap / Leave) do Symbian
![Page 18: Symbian C++ vs.NET Compact Framework C# Leonardo Kunz](https://reader036.vdocuments.com.br/reader036/viewer/2022062411/570638441a28abb8238f25c6/html5/thumbnails/18.jpg)
Symbian C++ - Objetos Ativos
Modelo baseado em eventos Objetos Ativos fazem chamadas
assíncronas e se preemptam Escalonador Ativo aciona execução Menor overhead do que threads Sincronização não é necessária
![Page 19: Symbian C++ vs.NET Compact Framework C# Leonardo Kunz](https://reader036.vdocuments.com.br/reader036/viewer/2022062411/570638441a28abb8238f25c6/html5/thumbnails/19.jpg)
Symbian C++ - Objetos Ativos
![Page 20: Symbian C++ vs.NET Compact Framework C# Leonardo Kunz](https://reader036.vdocuments.com.br/reader036/viewer/2022062411/570638441a28abb8238f25c6/html5/thumbnails/20.jpg)
Symbian C++ - Threads
Classe RThread provê funcionalidade das threads
Criadas através da instanciação da classe RThread e do método create()
Método resume() inicia execução Estados: running, ready, waiting, e suspended Método kill() finaliza thread
![Page 21: Symbian C++ vs.NET Compact Framework C# Leonardo Kunz](https://reader036.vdocuments.com.br/reader036/viewer/2022062411/570638441a28abb8238f25c6/html5/thumbnails/21.jpg)
Symbian C++ - Threads
RThread thread; thread.Create(KThreadName, threadFunction, 4096,
KMinHeapSize, 256*KMinHeapSize, &iParameter); thread.Resume();
Criando uma thread:
![Page 22: Symbian C++ vs.NET Compact Framework C# Leonardo Kunz](https://reader036.vdocuments.com.br/reader036/viewer/2022062411/570638441a28abb8238f25c6/html5/thumbnails/22.jpg)
.NET Compact C# - Threads Semelhante ao Symbian Desenvolvedor deve controlar finalização
das threads - comando abort()
Thread myThread = new Thread(new ThreadStart(MyThread)); myThread.Start();
![Page 23: Symbian C++ vs.NET Compact Framework C# Leonardo Kunz](https://reader036.vdocuments.com.br/reader036/viewer/2022062411/570638441a28abb8238f25c6/html5/thumbnails/23.jpg)
Symbian C++ - Sincronização
SemáforosWait() e Signal()Classe RSemaphoreLocais ou globais
MutexWait() e Signal()Classe RMutexLocais ou globais
![Page 24: Symbian C++ vs.NET Compact Framework C# Leonardo Kunz](https://reader036.vdocuments.com.br/reader036/viewer/2022062411/570638441a28abb8238f25c6/html5/thumbnails/24.jpg)
Symbian C++ - Sincronização
Seções críticasRegião do código em que apenas uma thread
pode entrar por vezClasse RCriticalSectionWait() e Signal() IsBlocked()
![Page 25: Symbian C++ vs.NET Compact Framework C# Leonardo Kunz](https://reader036.vdocuments.com.br/reader036/viewer/2022062411/570638441a28abb8238f25c6/html5/thumbnails/25.jpg)
1: class CMessageBuffer2: {3: public:4: CMessageBuffer();5: void AddMessage(const TDes &aMsg);6: void GetMessages(TDes &aMsgs);7:8: public:9: RMutex iMutex;10: TDes iMsgs;11: };12:13: CMessageBuffer::CMessageBuffer()14: {15: iMutex.CreateLocal();16: }17:18: void CMessageBuffer::AddMessage(const TDes &aMsg)19: {20: iMutex.Wait();21: iMsgs.Append(aMsg);22: iMutex.Signal();23: }
Symbian C++ - Sincronização
![Page 26: Symbian C++ vs.NET Compact Framework C# Leonardo Kunz](https://reader036.vdocuments.com.br/reader036/viewer/2022062411/570638441a28abb8238f25c6/html5/thumbnails/26.jpg)
25: void CMessageBuffer::GetMessages(TDes &aMsgs)26: {27: iMutex.Wait();28: aMsg.Copy(iMsgs);29: iMsgs.Zero();30: iMutex.Signal();31: }32:33: static void CMyClass::threadFunction(TAny *aPtr)34: {35: CMessageBuffer *msgBuffer = (CMessageBuffer *)TAny;36: TInt count = 0;37: TBuf<40> msg;38: 39: while (TRUE)40: {41: msg.Format(“ID: %d, count: %d\n”, RThread().Id(), count++);42: msgBuffer->AddMessage(msg);43: User::After(1000 * 1000);44: }45: }
Symbian C++ - Sincronização
![Page 27: Symbian C++ vs.NET Compact Framework C# Leonardo Kunz](https://reader036.vdocuments.com.br/reader036/viewer/2022062411/570638441a28abb8238f25c6/html5/thumbnails/27.jpg)
.NET Compact C# - Sincronização Mutex
Mutex.WaitOne Mutex.Release
Monitores Monitor.Enter(this); Monitor.Exit(this);
Interlocked Interlocked.Increment(ref counter); Interlocked.Decrement(ref counter);
![Page 28: Symbian C++ vs.NET Compact Framework C# Leonardo Kunz](https://reader036.vdocuments.com.br/reader036/viewer/2022062411/570638441a28abb8238f25c6/html5/thumbnails/28.jpg)
Conclusões
Múltiplas plataformas dificultam a portabilidade de código
Documentação das APIs é pouco detalhada
Não possui monitores Programação com modelos não usuais
(Ex. Trap/Leave e Objetos Ativos)
![Page 29: Symbian C++ vs.NET Compact Framework C# Leonardo Kunz](https://reader036.vdocuments.com.br/reader036/viewer/2022062411/570638441a28abb8238f25c6/html5/thumbnails/29.jpg)
Bibliografia Symbian OS
- http://en.wikipedia.org/wiki/Symbian_OS Symbian.com
- http://www.symbian.com/ NewLC
- http://www.newlc.com/ Symbian Developer Network
- http://developer.symbian.com/main/index.jsp Forum Nokia
- http://www.forum.nokia.com/ Symbian Tutorial
- http://www.symbiantutorial.org/ .NET Compact Framework Documentation
- http://msdn.microsoft.com/en-us/library/ms950380.aspx