Você está na página 1de 9

Kylix - O Delphi para Linux

Desde que foi anunciado, em 1999, o Kylix vem gerando uma grande expectativa na comunidade de desenvolvedores. O nome Kylix originalmente era o nome do projeto que portaria o Delphi e o C++ Builder para Linux e transformou-se no nome do novo produto lanado pela Borland para desenvolvimento rpido de aplicaes no ambiente Linux. O Kylix era esperado pela comunidade Delphi pois significava a oportunidade de portar os programas Windows para o Linux com um mnimo de esforo e tambm pela comunidade Linux, por ser uma ferramenta que facilitaria muito o desenvolvimento em Linux. Finalmente, em 31 de janeiro deste ano, a Borland lanou o Kylix na LinuxExpo em Nova York. Ser que a ferramenta tudo o que os desenvolvedores esperavam? Ser que ela ser uma nova Killer Application (aplicao que revoluciona a maneira existente de trabalhar)? Este artigo tentar trazer as respostas a estas questes.

Iniciando a execuo Aps instalar o Linux e instalar o Kylix, ao abri-lo, vemos uma tela como o da figura 1.

Tela Kylix

Os desenvolvedores Delphi imediatamente reconhecero esta tela e vero que ela muito semelhante do Delphi 5. Ponto para a Borland: nada de interfaces diferentes entre os ambientes Linux e Windows - os usurios de Delphi no tero problemas para aprender a usar o Kylix. Em seguida, colocamos alguns componentes, configuramos suas propriedades e

teclamos no boto com a seta verde, para compilar e executar o programa. Em poucos segundos, o programa est rodando, como mostra a figura 2.

Programa Kylix em Execuo

Este um legitimo programa Linux e como tal, no necessita de nenhum runtime. At aqui, tudo se comporta exatamente como no Delphi. Se no tivssemos com uma interface grfica um pouco diferente, poderamos dizer que estamos usando o prprio Delphi. Passado o primeiro contato, vamos nos aprofundando um pouco no programa e examinando as semelhanas e as diferenas. A IDE A IDE do Kylix muito semelhante quela do Delphi: os menus so muito parecidos, o Object Inspector est no mesmo lugar, o editor de cdigo e a Form esto l. As caixas de dilogo e as configuraes de personalizao so semelhantes. Como o Delphi 5, o Kylix tambm tem o recurso de complementao de cdigo em seu editor. Voc pode tambm configurar as teclas do editor usando mapas de teclas personalizados.

Tela de Personalizao do Editor

A paleta de componentes semelhante quela do Delphi 5. A primeira diferena que salta vista a falta da guia Win32 (como era de s esperar). Ela foi substituda pela Common Controls. Foi adicionada uma nova guia, dbExpress, com os novos componentes de acesso a dados. Falaremos sobre isso adiante. Uma ausncia notada foi a guia QReport, com os componentes de impresso do QuickReport.

Paleta de Componentes do Kylix Aprofundando um pouco mais Aparentemente, a Borland quis deixar o desenvolvedor Delphi vontade, mantendo a aparncia e a maneira de trabalho semelhante. E os programas? Ao colocar um componente qualquer na Form, vemos que as suas propriedades so muito parecidas as dos componentes Delphi. Os editores destas propriedades tambm so muito semelhantes. Mais um ponto para a Borland: os programas Windows que usam os componentes padro do Delphi devero ser portados facilmente.

Object Inspector com propriedades de um TEdit Para chegar a isso, a Borland teve de percorrer um longo caminho: a VCL, biblioteca de componentes do Delphi completamente baseada na API do Windows e seria muito complicado port-la para o Linux pois, a menos que se use alguma biblioteca de emulao, como a WineLib, as funes da API do Windows no esto disponveis. A Borland optou por um outro caminho: reescrever completamente a VCL, mantendo o aspecto bsico e os componentes da VCL. Para isso, ela usou uma biblioteca de classes em C++, chamada Qt, criada por uma companhia norueguesa, chamada Troll Tech. Ele deu o nome de CLX (pronuncia-se CLIKS) nova biblioteca de componentes. Embora costumemos chamar de CLX a esta biblioteca visual de componentes, isto no correto. A CLX engloba mais que apenas a biblioteca visual. Esta biblioteca de componentes visuais chamada de VisualCLX. A CLX o conjunto da VisualCLX, da BaseCLX, classes e rotinas bsicas da CLX, da DataCLX, componentes de acesso a bancos de dados e da NetClx, componentes de acesso Internet. A biblioteca Qt uma biblioteca portvel, disponvel para Linux, Windows, diversos tipo de Unixes, Mac e at tem uma verso disponvel para Palm. Com este enfoque, a Borland ganhou

muito no aspecto portabilidade: caso tivesse usado a WineLib, o Delphi encontraria o mesmo problema de converso se a Borland quisesse desenvolver um Delphi para outro ambiente, como o Mac ou o Solaris. Usando a biblioteca Qt, no necessrio reescrever a CLX para portar para um novo ambiente. Por uma questo de velocidade de desenvolvimento, a IDE no foi completamente reescrita usando a CLX: a Borland optou por usar a WineLib, recompilando o cdigo em Linux usando esta biblioteca de emulao e reescrevendo apenas algumas pores usando a CLX. Provavelmente, na prxima verso do Kylix, a IDE dever estar completamente reescrita usando-se a CLX e, portanto, estar pronta para ser portada para outros ambientes. Neste caso, o trabalho dever ser muito menor. Embora sua aparncia seja muito semelhante da VCL por fora, internamente, a CLX completamente diferente: a CLX completamente independente da API do Windows, dependendo apenas da biblioteca Qt. Por exemplo, o componente TEdit da VCL nada mais era que o encapsulamento com componente Edit do Windows. Na CLX, o componente TEdit encapsula um componente QEdit do Qt. Isto, para o desenvolvedor de aplicaes no significa nada: um TEdit continua sendo um TEdit e usado da mesma maneira, tanto no Delphi quanto no Kylix. Para um desenvolvedor de componentes, esta alterao significativa: internamente, o QEdit muito diferente do Edit do Windows e a maneira de modificar o comportamento deste componente no a mesma. Bancos de dados A grande diferena entre o Kylix e o Delphi est aqui. A Borland aproveitou a oportunidade do lanamento do Kylix para criar uma nova engine de banco de dados: o dbExpress. O dbExpress uma engine muito leve, com uma API interna muito simples. Por ser uma camada muito fina, o acesso a banco de dados muito rpido, muito semelhante ao acesso nativo. As desvantagens do dbExpress so o acesso unidirecional e o fato dele ser essencialmente voltado a bancos de dados SQL. O acesso unidirecional faz com que voc s possa posicionar os registros para a frente, como se estivesse gerando um relatrio. Por ser voltado a bancos de dados SQL, no h acesso a dBase ou Paradox. Isto no de todo uma desvantagem, pois com o Interbase OpenSource, os desenvolvedores tm uma opo de excelente qualidade e baixo custo para substituir esses bancos de dados. J o acesso unidirecional uma dificuldade real, pois estamos acostumados a mostrar os dados no formato de grades, que no poderiam ser usadas, neste caso. Para solucionar isto, a Borland "emprestou" do Midas o componente TClientDataset. Este um componente muito flexvel, que permite o trabalho de diversas maneiras, inclusive independente de bancos de dados. Embora o TClientDataset introduza uma camada a mais no acesso aos dados, como mostram as figuras 6 e 7, com o TClientDataset, o acesso volta a ser bidirecional: os dados provenientes do banco de dados so lidos e guardados em memria, permitindo a movimentao em todas as direes.

Acesso tradicional a bancos de dados com o Delphi

Acesso a bancos de dados com o TClientDataset

Alm disso, o uso do TClientDataset traz diversas vantagens: O acesso e modificao aos dados feito em memria, sendo muito mais rpido. As modificaes fsicas no banco de dados so feitas em lote. TClientDataset permite desfazer alteraes, usando inclusive pontos de marcao, onde todas as alteraes a partir deste ponto so desfeitas Pode-se trabalhar inclusive em modo "briefcase" - desconecta-se do servidor de dados e trabalha-se localmente. Quando houver uma reconexo ao banco de dados, h a reconciliao das alteraes Pode-se filtrar e ordenar os dados rapidamente na estao cliente, sem necessidade de uma nova consulta Se voc quiser, pode inclusive usar o TClientDataset sem o uso de Bancos de Dados. A isto, a Borland deu o nome de MyBase. Caso voc use o MyBase para acesso aos dados, dever distribuir ao cliente, alm do executvel, apenas uma dll de aproximadamente 100K. Os dados sero salvos em formato XML, podendo ser lidos por qualquer programa que acesse este tipo de dados. O dbExpress, sendo essencialmente baseado em servidores SQL no suporta, nesta primeira verso, o Paradox e o dBase. O Kylix distribudo com uma verso do Interbase, e pode ser tambm usada a verso Open Source deste banco de dados. A Borland fornece tambm os drivers para MySql, na verso Desktop e Db/2 e Oracle, na verso Server. Como a interface para o dbExpress muito simples e j est aberta, com certeza rapidamente aparecero drivers para outros bancos de dados. J est inclusive disponvel um driver dbExpress para conexo com ODBC, em http://www.easysoft.com. Interface com o Linux Da mesma maneira que o Delphi acessa a API do Windows, o Kylix pode acessar a API do Linux. As funes da biblioteca C padro do Linux esto disponveis quando se inclui a unit Libc na clusula Uses. Desta maneira, voc pode usar todos os recursos e funes do sistema operacional, permitindo executar outros programas, obter dados do usurio, entre outras coisas. Caso a funo desejada no esteja na unit Libc, voc pode criar uma declarao para ela e us-la, como num programa em Delphi. A nica observao que deve ser feita quanto portabilidade: as funes da Libc, em geral, no sero portveis para outros ambientes e devero ser convertidas, mesmo quando o Delphi 6 estiver disponvel. Em outras palavras, se voc quiser 100% de compatibilidade com o Delphi 6, deve fugir das funes da API do Linux. Alm do acesso a funes do Linux, o Kylix tambm permite o acesso s classes do Qt. O Qt uma biblioteca de classes C++, incompatvel com o Kylix. Porm os desenvolvedores da

Borland fizeram um "achatamento" destas classes e colocaram as declaraes na unit Qt.pas. Desta maneira, voc pode usar tudo o que o Qt oferece, estendendo os componentes do Kylix. A utilizao da API Qt tem a vantagem de ser portvel: quando o Delphi 6 estiver disponvel, estas funes tambm estaro l e no precisaro de converso. Estilos O uso da API do Qt trouxe um novo conceito em desenho personalizado de componentes: estilos. O Qt no usa os controles do ambiente em que est, desenhando inteiramente seus prprios componentes. Isto faz que ele possa mudar facilmente o estilo de desenho de um componente ou mesmo de toda a aplicao. O Kylix expe esta facilidade e permite que voc mude o estilo de desenho de toda a aplicao com apenas uma linha de programa: se voc usar Application.Style.DefaultStyle := dsMotif; sua aplicao fica com a aparncia de uma aplicao Linux. Ao usar Application.Style.DefaultStyle := dsWindows; ela fica com a aparncia de uma aplicao Windows. Esta modificao de aparncia no limitada aparncia deste ou daquele sistema operacional. Application.Style.DefaultStyle := dsPlatinum; d aplicao a aparncia no encontrada em outro sistema.

Aplicao com estilo Windows

Aplicao com estilo Motif

Aplicao com estilo Platinum Alm destas modificaes, voc tambm pode criar um desenho personalizado para componentes individuais, como botes ou textos.

Boto personalizado

Impresso no Kylix Nesta primeira verso, o Kylix no vem com um gerador de relatrios, como o QuickReport. Isto no quer dizer que no ser possvel imprimir com programas Kylix. Pelo contrrio, todo o suporte de impresso est implementado no Kylix, da mesma maneira que no Delphi: o Kylix tem o componente TPrinter, que permite imprimir da mesma maneira que no Delphi. O trecho de programa abaixo desenha um texto na posio 100, 100 da impressora: with Printer do begin BeginDoc; try Canvas.TextOut(100,100, 'Teste de impresso'); finally EndDoc; end; end; Alm da impresso com o TPrinter, podemos ainda usar outros mtodos, como o AssignPrn, ou mesmo ousar mtodos exclusivos do Linux, como abrir a porta da impressora como um arquivo normal e gravar neste arquivo, ou ento abrir uma comunicao (pipe) com o spool de impresso e gravar neste duto de dados. Apesar de no ter um gerador de relatrios includo no produto, o fato da Borland ter portado toda a interface de impresso para o Kylix muito promissor: sem dvida, muito em breve, os principais geradores de relatrios devero ser portados para o Kylix, estando disponveis para o usurio. Portabilidade dos programas Windows Uma preocupao muito grande a todo desenvolvedor Windows que quer portar suas aplicaes para o Linux a dificuldade que encontrar nesta tarefa. Isto depende do programa que est sendo portado. Se voc tiver programas que no utilizem bancos de dados, API do Windows e s utilizem componentes padres do Delphi, o trabalho de portar a aplicao ser muito suave: provavelmente, com a mudana das clusulas Uses, o programa poder ser recompilado no Kylix. Os nomes das units que contm os componentes foram alteradas, incluindo-se um caractere Q no incio do nome. Assim, Forms virou QForms, Controls tornou-se QControls e assim sucessivamente. Sem dvida, voc ter alguns problemas com caractersticas diferentes entre o Linux e o Windows, como a inexistncia do conceito de drives ou a mudana de separadores de caminho, por exemplo. Os programas que utilizam bancos de dados sofrero alteraes mais profundas: Paradox e dBase no so mais suportados - o ideal converter a base de dados para Interbase e usar suas caractersticas. Caso a base de dados seja muito pequena, o MyBase uma alternativa vivel. Como o dbExpress baseado em Sql, interessante converter o uso de Tables para Queries, minimizando o trfego na rede Os componentes TTable, TQuery e TStoredProc devem ser convertidos para TSqlTable, TSqlQuery e TSqlStoredProc. Todo o acesso que no seja unidirecional deve contar ainda com um componente TDatasetProvider e um TClientDataset. Os componentes data aware devem estar ligados ao TClientDataset

No existe mais o componente TUpdateSql, nem a figura de CachedUpdates, que devem ser substitudos pelo TClientDataset Quando seu programa usar componentes de terceiros, se voc tiver o fonte, dever tentar recompil-lo e convert-lo para o Kylix. Caso isto no seja possvel, deve tentar obter um substituto ou mesmo uma verso compatvel com o Kylix, junto ao fabricante do componente. Se o programa usar caractersticas especficas do Windows, como o uso de API, ou componentes ActiveX, automao Ole, podem ocorrer quatro hipteses: Converso usando a API do Linux - esta menos recomendvel, pois introduzir incompatiblidades quando voc quiser transformar o programa em multiplataforma Converso usando a API do Qt - esta opo a ideal, pois ser completamente portvel quando o Delphi 6 estiver disponvel Substituio das caractersticas especficas por outras disponveis no Linux, como a mudana de comunicao entre programas via COM ou mensagens por TCP/IP ou named pipes Eliminao destas caractersticas no programa Linux Uma vez convertido, o programa estar pronto para ser novamente portado para o Delphi 6: a menos que use caractersticas especficas do Linux, um programa Kylix poder ser recompilado sem modificaes no Delphi 6. Caso voc queira introduzir caractersticas especficas, poder utilizar as variveis de compilao LINUX e MSWINDOWS, como no exemplo a seguir: {$IFDEF LINUX} // coloque aqui o cdigo especfico Linux {$ENDIF} {$IFDEF MSWINDOWS} // coloque aqui o cdigo especfico Windows {$ENDIF} Concluses Sem dvida, a Borland fez um excelente trabalho ao portar o Delphi para o Linux. Embora os dois sistemas operacionais sejam muito diferentes, ela trouxe a mesma funcionalidade e maneira de trabalho para o Linux, de maneira a no intimidar o desenvolvedor Windows. Apesar das diferenas entre os dois sistemas operacionais, estimo que o trabalho de portar grande parte das aplicaes ser relativamente pequeno, alm da curva de aprendizado da nova ferramenta ser praticamente zero, para usurios do Delphi. Para os desenvolvedores Linux, o Kylix, sem dvida, traz a possibilidade de desenvolver aplicaes robustas, em menos tempo e com menor custo (aqui no estamos falando no custo da ferramenta: obviamente, no se pode competir com o custo do compilador gcc, mas sim do nmero de homens/hora necessrios para o desenvolvimento da aplicao). Acredito que o Kylix a ferramenta que faltava ao Linux: embora o Linux tenha inmeras ferramentas, e um nmero muito grande de desenvolvedores, no era um ambiente muito propcio para o desenvolvedor mdio de aplicaes comerciais. Com o Kylix, este desenvolvedor passa a ter uma excelente ferramenta para portar suas aplicaes e criar novas, especficas para o Linux, impulsionando seu uso.