Introdução
Este artigo apresenta as principais novidades da linguagem Delphi no que diz respeito a desenvolvimento para Mobile, disponibilizado recentemente através do Delphi XE4. Porém antes dos detalhes da linguagem, vamos entender o motivo e a abrangência destas alterações.
Novo Compilador
Para oferecer suporte aos dispositivos móveis foram criados dois novos compiladores, um para o simulador do iOS e outro para o dispositivo físico (ARM), já que as arquiteturas são distintas.Desta forma agora temos:
- Win32 compiler (DCC32)
- Win64 compiler (DCC64)
- Mac compiler (DCCOSX)
- iOS Simulator compiler (DCCIOS32)
- iOS ARM compiler (DCCIOSARM)
A novidade está nos dois últimos, os quais seguem um desenho totalmente novo, baseados em um padrão chamado LLVM (http://llvm.org). Podemos entender o LLVM como um conjunto de módulos e ferramentas reutilizáveis para compiladores, utilizados amplamente por diversos compiladores nativos, entre eles o próprio Xcode, nativo da Apple.
Mudanças no Delphi Language
Para suportar dispositivos móveis, o novo compilador (acima) impõe algumas mudanças de linguagem, as quais vou listar a seguir. Na verdade, mais do que mudanças, trata-se de uma grande evolução da linguagem Delphi. No futuro, estes e outros avanços serão portados também para os compiladores Win32, Win64 e OSX.
Automatic Reference Counting (ARC)
O ARC traz o melhor dos dois mundos: gerenciamento automático de memória sem a necessidade de um garbage collection, tido como um grande vilão de performance nas linguagem que o utilizam. Em resumo o ARC gerencia o ciclo de vida de objetos sem que você tenha que se preocupar com o “Free”.
No exemplo acima, o objeto MyObj será removido da memória assim que sair do escopo. Importante ressaltar que a sintax tradicional (try/finally fazendo o Free manual do objeto) continua suportada, portanto as migrações de código estão garantidas.
Também estão disponíveis o pattern Dispose e suporte a [Weak] References. Você pode encontrar mais sobre isso aqui: http://edn.embarcadero.com/article/43073.
Tipo String
Todos os tipos string existentes (AnsiString, UTF8String, RawByteString, WideString, AnsiChar, PAnsiChar, PWideChar, OpenString, ShortString
) agora estão simplificados em um único: String. Além disso, as strings agora são 0-based ao invés de 1-based. Isso significa que alguns códigos podem precisar de revisão, mas as funções de manipulação de strings já estão preparadas para esta mudança.
Uma outra – importante – mudança é que as strings passarão a ser “imutáveis”, devido ao gerenciamento de memória dos dispositivos móveis. Nesta versão do compilador tudo continua conforme anteriormente, você receberá apenas uma warning alertando que, futuramente, construções como a exibida abaixo não será mais suportada:
str1[3]:=’w’;
Portanto é altamente recomendado que, para seus novos códigos, você faça uso de construções como TStringBuilder e TStringHelper para a manipulação de strings. Um trecho de código utilizando estas classes para ilustrar:
Outras mudanças
- Ponteiros não são suportados no mundo mobile
- Não há suporte para Inline assemby
- Evite chamadas a APIs diretamente, esteja pronto para as novas plataformas que virão
- Prefira utilizar as units cross-plataform, especialmente ao manipular arquivos (unit IOUtils)
Informações e recursos para pesquisa
- Páginas principais dos produtos: RAD Studio, Delphi, C++ Builder, HTML5 Builder
- Documentação on line: http://docwiki.embarcadero.com/RADStudio/XE4/en
- Tutorial Delphi para iOS: Delphi iOS Application Development
- Link para download do trial: https://downloads.embarcadero.com/free/rad-studio
- Trial via Instant Trial (AppWave): http://windowsapps.com/rad-studio-trial.html?trial=1
- Tudo o que há de novo no Delphi e C++ Builder XE4
- O que há de novo especificamente no C++ Builder 64 bit
- Lista de correções do Delphi e C++ Builder XE4: http://edn.embarcadero.com/article/43068
- White Paper do Marco Cantu sobre todas as mudanças na linguagem: http://www.embarcadero.com/resources/white-papers/application-development
É isso aí pessoal, apesar de resumida, esta é a lista do que considero ser o mais importante. De qualquer maneira, não deixe de acessar os materiais disponíveis e estudar o assunto em todos os seus detalhes. Abraços e até o próximo!