07 maio 2013

Delphi XE4: Principais mudanças na linguagem para o ambiente Mobile




    Pessoal! O Delphi XE 4 está aí e vem com muitas novidades bacanas: A principal delas é o compilador 100% nativo para o iOS e em breve teremos Android e Windows Phone, além do tradicional Win32, 64 e MacOSx das versões XE2 e X3.

    Para quem pensou que o Delphi não ia durar tá ai: 18 anos e crescendo!

    O artigo abaixo mostra as principais mudanças no Delphi Language que devem ser consideradas para a evolução de sua aplicação. Considere, a partir de agora, desenvolver e pensar sempre em "Multi-Device".
Faço alguns comentários em verde no artigo.

Créditos do artigo: Fernando Rizzato. Embarcadero Brasil.


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 (ou seja, o primeiro caractere na string tem índice 0, ao invés de 1).  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. (Ex: o comando Copy no seu código antigo)

    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 (como disse no começo, o mesmo código poderá gerar apps iOS, Android e Windows Phone em breve)
  • 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
Tutorial Delphi para iOS: Delphi iOS Application Development
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


Não deixe de acessar os materiais disponíveis e estudar o assunto em todos os seus detalhes. 

Abraços e até a próxima!

Nenhum comentário:

Postar um comentário