Borland DevCon - USA - Report #5 – PreConference - Delphi 2006

Acompanhe em tempo real a cobertura exclusiva do maior evento do mundo para desenvolvedores Borland Delphi

Continuando nossa cobertura do evento, gostaria de comentar um pouco sobre a palestra que considero ser uma das principais do evento. Hoje à tarde, tive a oportunidade de conferir em primeiríssima mão uma apresentação do Delphi 2006, ministrada pelos próprios arquitetos e desenvolvedores do Delphi. Este foi um preConference Tutorial, destinado a um público seleto, incluindo jornalistas e personalidades da comunidade internacional. Teremos mais palestras durante a DevCon sobre o Delphi 2006, porém essa foi sem dúvida a que trouxe mais detalhes sobre a última versão da ferramenta, afinal, foram 5 horas seguidas de apresentação.

Vou comentar aqui um pouco do que vi por lá, como meu tempo aqui é curto e geralmente estamos correndo para não perder nada, vou colocar algumas coisas de forma sucinta, vou procurar abordar mais detalhes ao longo da cobertura e também em futuros artigos para a Revista ClubeDelphi. Durante a palestra, fiz uma versão “draft” deste documento, somente ao chegar ao hotel novamente é que conseguir complementá-lo um pouco.

A palestra foi conduzida por Anders Ohlsson, Staff Enginer / Developer Relations da Borland US. Também estavam presentes David Intersimone (que filmou toda a sessão) e Allen Bauer, que mais tarde iria apresentar algumas novidades da IDE. Antes de começar, gostaria de colocar o leitor a par da atual situação do Delphi.

Atenção: Solicitei autorização especial da Borland para publicar neste documento alguns screen-shots da IDE, visto que participi do beta-test do produto e ainda não foi liberada a versão comercial do produto. Agradeço desde já o Anders Ohlsson e John Kaster da Borland.

Borland Developer Studio 2006 (4.0)

Vou explicar um pouco a atual situação do Delphi para que eu possa conduzir o restante deste overview. A Borland, por volta de 2001, anunciou na época os seus planos para a criação de uma IDE única que suportasse várias linguagens, para competir com o Visual Studio da Microsoft. O codinome do projeto dado na época, para quem lembra, foi “Galileo”. O projeto veio à tona com o lançamento do C#Builder 1.0. O C#Builder, ferramenta Borland para desenvolvimento de aplicações .NET com o C#, usava o Galileo como IDE base. Nesse ponto, a IDE tomou um nome comercial, chamado Borland Developer Studio 1.0 (BDS). No ano seguinte, a Borland anunciou o Delphi 8, com suporte ao .NET Framework. O Delphi 8 estava “hospedado” na versão 2.0 do Borland Developer Studio.

Em 2005, a Borland “unificou” o Delphi for .NET (D8) e o C#Builder no BDS, na sua versão 3.0. Além disso, foi adicionado o suporte ao Delphi Win32 (D7), além de uma série de outras novidades como vimos na edição 57 da Revista ClubeDelphi, incluindo ECO 2, novos componentes ASp.NET, ALM, StarTeam, Refactoring, Deploy Manager, History Manager etc. Apesar da nova IDE ser uma “união” de 3 linguagens (chamadas de “personalidades”), o nome comercial dado foi “Delphi 2005”, suportando C#, Delphi for .NET e Delphi Win32.

A partir de agora o nome utilizado para referenciar a IDE é Borland Developer Studio 2006 (a versão 4.0), previamente conhecido pelo codinome “Dexter”. O BDS 2006 comporta agora quatro produtos em um só (ao adquirir qualquer um deles, você tem direito a utilizar os demais gratuitamente):

É claro, devido a popularidade da “marca” Delphi, muitas referências ao BDS 4.0 são feitas com o nome “Delphi 2006”. O “DeXter”, conforme enfatiza o próprio nome, é a décima (10ª) versão do Delphi.

Delphi 2006: Missão

Anders falou da “missão” do Delphi 2006, ou seja, os principais objetivos e novidades da ferramenta. Em linhas gerais, no Delphi 2006 temos:

O que não está no Delphi 2006

para deixar de fora qualquer dúvida inicial, veja o que não está no Delphi 2006:

Roadmap

A seguir, Anders expôs o “Roadmap” do produto, política que a Borland adotou para o Delphi, permitindo que os desenvolvedores saibam como a Borland planeja conduzir o desenvolvimento da ferramenta para os próximos 3 anos.

Resumindo o RoadMap:

Analisando o RoadMap, vemos uma clara preocupação da Borland com a VCL, o que acho muito bom. pelo que vemos no Roadmap, está nos planos colocar a VCL sob o .NET Compact Framework. Isso vai permitir que portemos nossas atuais aplicações Delphi para rodarem em dispositivos portáteis e wire-less, como pocket pCs, Smartphones etc. É claro, levando em consideração as limitações impostas pela plataforma. Isso é interessante porque não será necessário reescrever tudo em Windows Forms, por exemplo, para suportar esse tipo de aplicação.

Além disso, temos a VCL para Avalon prevista para 2007. Avalon, para quem não sabe, é a nova tecnologia da Microsoft (como parte do Windows Vista) destinada a criação de interfaces gráficas. Ela usa o XAML par definir elementos gráficos, semelhante a um ASpX / DFM, com isso, poderemos portar nossas aplicações Delphi VCL para Avalon sem muita recodificação. Só por curiosidade, o ex-arquiteto do Delphi 2->8, Chuck J, é hoje um dos arquitetos do Avalon na Microsoft (de forma semelhante ao Anders Hejs*, criador do Delphi, que é arquiteto do .NET e C#).

para finalizar essa parte da palestra, Anders comparou o comparou a plataforma SDp da Borland (Software Delivery Optimization) com o Borland Developer Studio.

Delphi 2006: “All in One”

Anders comentou em alto nível sobre as tecnologias suportadas na nova IDE. Temos:

A VCL continua suportando as principais tecnologias das versões anteriores, inclusive na versão .NET: dbExpress, BDE, DbGo (ADO), IBX (Interbase Express), Indy, IntraWeb etc.

Como apoio ao desenvolvimento e parte integrante do Application LifeCycle Management, temos as ferramentas CaliberRM (para gerenciamento de requisitos), StarTeam (para controle de configuração) e Together (para Design e Modelagem).

Dica: para uma introdução ao CaliberRM com Delphi, consulte as edições 58 e 59 da Revista ClubeDelphi. para conhecer o StarTeam, veja as edições 57 e 60.

Delphi 2006 – Qualidade, performance, Bug Report e pacotes

Muitos desenvolvedores criticaram problemas de performance e qualidade do Delphi 2005, conforme posts reportados pela própria Borland. Um intensivo esforço foi feito na nova versão do produto para garantir melhores resultados nesse sentido, principalmente pela adição de um novo Memory Manager.

Mas o que é um Memory Manager? Toda alocação e gerenciamento de variáveis e objetos em memória em aplicações Delphi é feito por um Memory Manager, basicamente uma “classe”. Nós nunca usamos essa classe diretamente, mas ela tem um papel importantíssimo. por exemplo, quando você chama rotinas e métodos como Create, NewInstance, GetMen, Finalize, FreeMem, New etc., o Delphi em baixo nível delega a alocação e liberação para um ponteiro que referencia um Memory Manager.

No Delphi 2006, o Memory Manager foi totalmente substituído. Devido ao uso de ponteiros, você não precisa se preocupar com isso, pois a mudança acontece em baixo nível e não tem impacto no código existente. O novo Memory Manager aloca e gerencia memória de forma mais rápida e otimizada. Como o Delphi foi construído em Delphi, claro, a própria IDE faz uso do novo gerenciador. Ou seja, a IDE está mais rápida tanto para inicializar, para operar, abrir projetos etc. Suas aplicações VCL, quando compiladas no Delphi 2006, também ficarão mais rápidas devido ao novo Memory Manager.

Dica: Caso tenha se interessado pelo assunto e queira saber mais sobre Memory Manager, deixo aqui uma ótima sugestão de leitura que me veio em mente agora. Certa vez li o livro “Delphi in a Nutshell”, de todos os livros de Delphi que li foi o único que abordou em detalhes o uso de Memory Managers, inclusive mostrando como construir seu próprio.

Além do novo Memory Manager, foram resolvido muitos BUGs da versão anterior do produto (Delphi 2005 Update 3). A IDE está respondendo bem mais rapidamente a ações do desenvolvedor, como reforçou Anders. Além disso, temos agora suporte integrado a um sistema automático de “Bug Report”. Isso é, se ao trabalhar no Delphi 2006 você observar um BUG, ele será poderá ser automaticamente reportado à equipe do Delphi, através do Quality Central (qc.borland.com). Você poderá acompanhar o plano de resolução e status de correção do problema reportado.

Além disso, agora você pode acessar diretamente as personalidades da IDE a partir do menu Iniciar. Antes, ao abrir a IDE, tudo era inicializado em conjunto (Delphi, C#, .NET etc.). Tínhamos que configurar pacotes ou o Delphi Configuration Manager para personalizar a IDE (como vimos na ed. 57). Agora isso já vem previamente definido, ou seja, ao abrir o ícone “Delphi 2006 Win32” o BDS vai carregar somente os pacotes necessários para o desenvolvimento Win32 com o Delphi, por exemplo, o que tornar mais rápida a inicialização e operação.

D2006 – produtividade ao desenvolvedor - Melhorias na IDE

Esta parte da palestra foi apresentada por Allen Bauer, atual arquiteto-chefe do Delphi. para aumentar a produtividade no desenvolvimento de aplicações com o Delphi, temos algumas novas melhorias no Designer, conforme destaco a seguir:

Dica: para saber mais sobre o Remote Debugger, consulte um artigo que fiz para a edição 32 da Revista ClubeDelphi.

Algumas outras novidades:

Novos components na VCL

C++

A personalidade C++ da IDE suporta a maioria dos recursos citados anteriormente, incluindo ChangeBar, Regions, Surround, Templates etc. Além disso, temos vários opções exclusiva para desenvolvimento com a linguagem. por exemplo, clicando em project>Build Configurations, podemos escolher qual o compilador a ser usado pela IDE. Em project>Options, existem centenas de opções adicionais.

Together

Dando continuidade a apresentação, subiu ao palco Jason da Borland, que falou sobre uma das principais características da nova IDE. Temos agora suporte completo ao Together, tanto para as linguagens Delphi quanto C#. Outra vantagem é que você pode usar esse suporte sem necessariamente ter que usar o ECO. para quem nunca ouviu falar em Together, essa ferramenta é bem semelhante (mas bem mais poderosa) ao ModelMaker que vinha com o Delphi 7.

Abrindo o Object Repository, temos agora o item New Design project, que permite criar projetos para design UML versões 1.5 e 2.0, além de importar modelos (MDL). Você pode assim importar modelos construídos em outras ferramentas para poder gerar uma implementação em Delphi, por exemplo.

O recurso de LiveSource permite que mudanças no código reflitam automaticamente no modelo UML, e vice-versa. Faça um teste, crie um projeto VCL e acione o Model View: você deverá ver a classe TForm1 representada no modelo (engenharia-reversa). Adicione uma propriedade no código e veja que já aparece no diagrama de classes. O contrário também é verdadeiro.

Além disso, você pode usar agora a IDE do Delphi 2006 para criar praticamente qualquer tipo de diagrama UML: Classes, Use Cases, Sequência, Colaboração, Estado, Deployment, Atividade e Component. A IDE também suporta o uso de Design patterns e Refactoring no Together.

Um recurso realmente interessante e que apreciei bastante é o Audits e Metrics (Auditorias e Métricas de código), feitas pelo Together. podemos fazer auditoria no código-fonte da aplicação para verificar itens como:

Ou seja, esse recurso permite que você faça um “check-up” no seu código Delphi procurando por eventuais problemas, detectando código duplicado, falhas no código, como acesso inválido a arrays, loops infinitos, variáveis não usadas etc.

De forma semelhante, as Métricas de código permitem:

Dica: para uma introdução a métricas de código, veja o artigo da edição 63 da Revista ClubeDelphi.

E não pára por aí: o Together pode gerar a documentação completa do seu código e diagramas UML em formato HTML.

A seguir Jason fez um exemplo prático no Delphi 2006. primeiramente, criou uma aplicação VCL e ativou o Model View, que já mostrou o diagrama de classes. Clicou em uma propriedade da classe no diagrama e a IDE já navegou até o código. Definiu uma nova unit com várias classes (criou na verdade uma hierarquia de classes TFoo, TFoo2, TFoo3 etc.). Foi para o model view e mostrou que a IDE já representou a hierarquia no modelo UML diagrama. Salientou que mudanças no código refletem no modelo, fez um exemplo inclusive, criou uma property no código, que já apareceu no modelo. Ao contrário, criou uma property no modelo, que virou código. Uma opção interessante é que, clicando de direita na classe e chamando refactoring, podemos acionar opções como mover classes, extrair interface etc. para finalizar, apresentou o recurso de Design patterns e fez auditoria no código.

ECO

Muitas novidades no ECO, que está na terceira versão no Delphi 2006. Henrik Jondell começou falando sobre o que é o ECO e a relação com a UML. A seguir, destacou as novidades da versão que acompanhar o Delphi 2006:

Fez então uma aplicação prática em 20 min. Apresentou os requisitos de uma aplicação (“Travel Demo”), criando o diagrama de classes no ECO e compilando o código gerado em um Assembly .NET que foi compartilhado por duas interfaces distintas: Windows Forms e ASp.NET.

ASp.NET

O próximo a subir ao palco foi Nick Hodges. A apresentação foi bem básica, mostrou uma aplicação simples ASp.NET no BDS 2006, explicando fundamentos da criação de aplicações ASp.NET com Delphi, como uso de code-behind, Server Controls, ASpX etc.

Novidades no acesso a banco de Dados

John Kaster da Borland falou sobre as novidades no acesso a banco de dados no Delphi 2006, o que destaco:

O que é Connection pool:

Connection pooling é o mecanismo que possibilita o “reaproveitamento” de conexões com o banco de dados. Imagine a seguinte situação: um usuário acessa a aplicação, conectamos ao BD para extrair informações e a exibimos no formulário. A seguir, fechamos a conexão e devolvemos o resultado ao browser. Como aplicações Web são stateless (sem estado), se esse mesmo ou outro usuário se conectar a aplicação, uma nova conexão precisará ser restabelecida. Conectar ao BD a cada requisição de usuário é literalmente um “suicídio” em ambiente Web, onde uma aplicação pode ter centenas e até milhares de conexões simultâneas.

O BDp resolve isso de forma bastante elegante, com o novo suporte a Connection pooling nativo (não suportado no BDp do Delphi 2005). Após a página ser enviada ao browser, a conexão com o BD não é liberada, mesmo que você tenha chamado explicitamente o método Close do BdpConnection. O BDp guarda automaticamente a conexão em pool (imagine isso como uma espécie de cache de conexões). Ou seja, a conexão fica aberta com o banco de dados e persiste entre requisições. Quando outro usuário conectar na aplicação, o BDp verifica se existe uma conexão disponível no pool e caso a encontre, passa a utilizá-la. Com isso, todo o tempo necessário para localizar o servidor de BD, estabelecer uma conexão, autenticar um usuário e verificar permissões não será mais consumido a cada requisição. E o melhor de tudo, você não precisa fazer nada para usar esse recurso, pois ele já é ativado por padrão no BDp do Delphi 2006.

O Connection pooling só pode ser usado em ambiente multi-threading (uma aplicação Web, por exemplo), onde temos várias threads simultâneas processando solicitações clientes. Não faz sentido, por exemplo, usar Connection pooling em uma aplicação Windows Forms tradicional (duas camadas).

Depois do término da sessão, conversei um pouco com o Anders e Kaster, comentando um pouco sobre o nosso trabalho junto a comunidade Delphi brasileira. Conversando com David I, comentou vários e interessantes assuntos relacionados ao futuro do Delphi, que estarei comentando em futuros posts aqui no site.

Não perca os próximos artigos desta cobertura, até lá!

Apresentação do Borland Developer Studio 2006
ECO em ação

Artigos relacionados