Delphi Tour 2015

Delphi Tour 2015

Fui no evento deste ano da Embarcadero chamado Delphi Tour, onde o foco era o lançamento do Delphi XE8.

Alguns recursos foram novidade para mim, mas já existiam nas vesões XE6, XE7 ou até anteriores, mas como eu só usei o Delphi das versões 3 até a 2007, tratarei tudo como novidade neste artigo.

O Delphi XE8 suporta compilação nativa para Android e iOS, incluindo suporte a IoT (Internet of Things) e Beacons.

 

 

Um Beacon é um pequeno dispositivo que emite um sinal Bluetooth Low Energy, e pode ser fixado em qualquer local. Quando alguém com um aplicativo configurado para suportar determinado Beacon se aproxima ou se afasta são disparados eventos, e isso possibilita uma infinidade de aplicações práticas.
Citando os próprios exemplos do palestrante, em uma industria seria possível saber onde determinado funcionário, veículo ou equipamento está, fazer check-in em hospitais ou clínicas e controlar quando o paciente será atendido, se está na recepção, em triagem, em atendimento, em que sala, obter informações turísticas e uma série de outra ideias.

Foi a primeira vez que ouvi falar do framework para aplicações multidispositivos chamado FireMonkey (FMX) (sério? "macaco de fogo"? me lembrei do professor Garcia da Ulbra e os macaquinhos),
e achei excelente. Em um MESMO PROJETO é possível fazer aplicativos com interfaces responsivas, distintas para vários dispositivos, sem programação, no bom e velho estilo RAD do Delphi, arrastando, soltando e selecionando propriedades de componentes, tudo visual e prático.
Tenho testado o Intel XDK, que também possui um designer de interface de usuário drag and drop e, apesar de alguns travamentos e lentidão, tenho conseguido alguns resultados interessantes, mas o
detalhe é que o Delphi gera aplicativos NATIVOS para iOS e Android, não tem PhoneGap por trás. O Intel XDK possibilita criar aplicativos híbridos ou HTML 5 puro.

O grande diferencial do Delphi destacado pela Embarcadero é realmente a performance dos aplicativos. Os elementos de interface, denominados FireUI, renderizam de forma nativa em cada sistema operacional (Windows, Android, iOS, Mac OS).

Em uma breve explicação, o apresentador mencionou que antigamente havia os arquivos .PAS e .DFM para um form, e agora há o .PAS e um .FMX para cada device, que herda (estende) do form principal.

O componente Multi View reúne todas as tranqueiras que um programador Java Android precisa montar para fazer listas e detalhes de registros (master - detail), com mais uma penca de códigos e configurações de projetos. No Delphi é só arrastar, soltar, clicar. Veja este vídeo de exemplo.

Uma ferramenta extremamente útil contida na IDE é o Multi Device Preview, onde em uma mesma janela é possível pré-visualizar como ficará a interface em cada dispositivo suportado em design time [foto]. Com o uso de dois monitores é possível usar a IDE em um e pré-visualizar tudo em outro, por exemplo.

E, claro, tem componente para trabalhar com mapas (Map View), onde é possível definir coordenadas, fazer marcações e uma série de recursos que quem trabalha com a API do Google Maps já conhece.

Para os desenvolvedores de jogos que necessitam recursos de física como tratamento de colisão, é disponibilizado o Box2d:

Outro recurso interessante é o App Tethering, que permite comunicação entre aplicativos, sejam eles Windows, Android, iOS ou Mac OS. Não é necessário ter um servidor de aplicação, ou acessar um banco de dados, para executar ações que estejam programadas em outra aplicação. Ou seja, a regra de negócio não precisa ficar no client, e ao mesmo tempo não é necessário desenvolver um server.
Pode-se programar uma vez para Windows (VCL), por exemplo, e fazer uma espécie de "controle remoto" pelos dispositivos móveis (FireMonkey).

Uma nova biblioteca de componentes HTTP Client Library foi criada, que utiliza os recursos nativos de cada plataforma para realizar requisições web, como acessar web services, suportando SSL e tudo o mais que a plataforma oferece.

Falando em web, foi demonstrado o EMS (Enterprise Mobile Services), que é um middleware que suporta chamadas REST e trabalha com dados em JSON, além de se conectar com os principais bancos de dados. A novidade são as notificações Push para dispositivos.

Foi demonstrado, ainda, um recurso ótimo e inovador do Interbase, chamado Change Views, onde é possível gerenciar alterações em bases distintas. É possível fazer "subscrições" para monitorar alterações em tabelas ou colunas, e trafegar pela rede somente os dados que foram alterados entre diferentes cópias do banco de dados. Imagine uma aplicação descentralizada, onde é necessário sincronizar dados a todo momento (ex.: controle de estoque). Há inúmeras formas de fazer isso, com triggers, logs, flags, mas realmente achei muito fácil da forma como foi apresentado.

Foi, ainda, mencionado que o TField está 25% mais rápido nesta versão.

E também foi lançado um recurso, chamado GetIt, para instalação de componentes à partir da própria IDE. Conforme o palestrante, isso deve evoluir para um marketplace de componentes futuramente, onde os desenvolvedores de componentes poderão vender os seus:

 

Assista a esta apresentação disponibilizada pela Embarcadero, em português.


Agora sintetizo minhas impressões pessoais:

  • O fato de o FireMonkey gerar interfaces nativas para cada dispositivo é realmente útil. Eu não conhecia nada parecido, parece funcionar bem, e agiliza muito o desenvolvimento de uma solução. O Change Views também: inúmeras vezes já implementei na mão sincronismos entre bases. Com o Delphi sempre foi assim: tem outras formas de fazer com outras tecnologias, mas com ele é mais fácil, mais rápido e funciona (na ampla maioria das vezes), e isso é inegável.
  • Eu quero muito colocar a mão nisso, mas o preço da licença é pornográfico. OK, o custo se paga pela economia de tempo de desenvolvimento, blablabla, mas os desenvolvedores entusiastas e estudantes são simplesmente deixados de lado. De novo, o Delphi foi sempre assim, e eu conheci centenas de desenvolvedores Delphi em mais de 15 anos de desenvolvimento, mas posso contar nos dedos de uma mão os que possuíam licença. Tudo pirateado. Até que ponto essa política é interessante para os stakeholders da Embarcadero? Em 2015 não conheço sequer uma universidade que ensine Delphi aqui no Rio Grande do Sul (se existir, me falem).

Bem, a meu ver, essa política levou a esse tipo de resultado:


Eu hoje utilizo Lazarus, tanto para projetos comerciais quanto para lecionar. Obviamente, está muito aquém do Delphi e não possui todos estes recursos multidispositivos (ainda), mas veja as estatísticas de download disponíveis na página da ferramenta no Sourceforge:

12 mil downloads em uma semana.


Em conversa com o comercial da Aquasoft, representante da Embarcadero, tomei conhecimento da licença educacional, que é realmente atraente para instituições de ensino, e espero conseguir através dessa licença achar um caminho para poder aproveitar todos esses "recursos encantadores" e repassar aos alunos, sem nos tornarmos piratas fora da lei.

Mas, se a Embarcadero popularizasse um pouco a sua adoção (legal) para desenvolvedores independentes e entusiastas, o mundo do desenvolvimento multiplataforma/multidispositivos ficaria bem melhor (minha opinião).