460 likes | 649 Views
Borland Kylix. Alunos: Arthur Alonso Breno Peixoto Gustavo Soares Vinicius Falseth. Kylix - Apresentação da linguagem. Sintaxe Object Pascal Oferece um ambiente de desenvolvimento rápido
E N D
Borland Kylix Alunos: Arthur Alonso Breno Peixoto Gustavo Soares Vinicius Falseth
Kylix - Apresentação da linguagem • Sintaxe Object Pascal • Oferece um ambiente de desenvolvimento rápido • biblioteca de componentes cross-platform, denominada CLX (Component Library Cross-Platform), o objetivo principal dessa nova biblioteca é criar uma grande portabilidade para os controles
CLX (Component Library Cross-Platform) • VisualCLX • DataCLX • Local • Cliente/Servidor • N-Tier • NetCLX • Apache DSO e CGI WebBroker • XML e DHTML • TCP/IP socket • BaseCLX
Kylix - Apresentação da linguagem • Compatível com a arquitetura Corba, que permite a integração com diversas linguagens, e funciona com qualquer distribuição Linux • Desenvolvimento de projetos corporativos • Características como BizSnap, WebSnap e DataSnap
Kylix - Apresentação da linguagem • BizSnap é a plataforma de desenvolvimento de serviços web que permite conectar e integrar aplicações business-to-business (B2B) entre si através de padrões como SOAP (Simple Object Access Protocol) e XML (eXtensible Markup Language)
Kylix - Apresentação da linguagem • WebSnap, permite a criação de sites em Linux e trabalha bem com os servidores Apache, conferindo maior velocidade ao desenvolvimento para a web • DataSnap garante acesso em vários bancos de dados, como DB2, Informix, Oracle, PostgreSQL, MySQL
Kylix - IDE • A GUI do Windows permanece encapsulada num conjunto de API´s denominada Win32, que é a mesma para o Win9x, NT e o 2000 • No Linux existem várias GUIs, escritas com diversas bibliotecas. As mais conhecidas são a QT do KDE e a GTK+ do Gnome
Case Design Studio • Use Case (UML) • Modelagem de Classes • Geração de código fontes Delphi/Kylix (VCL/CLX) • Geração do Banco de Dados • Engenharia reversa de projetos e fontes já existentes
Case Design Studio • Engenharia reversa de Banco de Dados • Herança de entidades para geração de Banco de Dados • DFD • Lista de Eventos • Suporte a Plugin's
Case Design Studio • A principal vantagem é a conciliação de todos os modelos E-R, OO e UML em uma única ferramenta integrada de baixo custo e alta performance. Sem a necessidade de manter o sincronismo entre diversas ferramentas com diversos modelos incompatíveis entre si.
Kylix X Delphi • A sintaxe está praticamente inalterada • Pequenos detalhes serão configurados, como: • Chave de compilação condicional {LINUX} • Caminhos de arquivos deverão levar em consideração maiúsculas/minúsculas e a barra de diretório do Linux. • As classes TwinControl e TwinCustomControl serão convertidas para TwidgetControl e TwidgetCustomControl • Units específicas serão banidas, como Windows e ShellObj
Kylix X Delphi - IDE • A IDE do Kylix é muito semelhante a do Delphi • Object Inspector está no mesmo lugar • A primeira diferença que salta à vista é a falta da guia Win32 (como era de se esperar). Ela foi substituída pela Common Controls
Kylix X Delphi – Banco de Dados • Grande diferença entre o Kylix / Delphi • A Borland aproveitou a oportunidade do lançamento do Kylix para criar uma nova engine de banco de dados: o dbExpress • dbExpress • engine muito leve • com uma API interna muito simples
Kylix X Delphi – Banco de Dados • Voltado a bancos de dados SQL, por isso não há acesso a dBase ou Paradox. • Acesso unidirecional • estamos acostumados a mostrar os dados no formato de grades, que não poderiam ser usadas, neste caso. Para solucionar isto, a Borland pegou emprestado do Midas o componente TClientDataset
Kylix X Delphi - Aplicação • Construímos um simples projeto no Delphi que adiciona Itens em um listbox. Salvamos a unit como Cidade.pas e o projeto como Cidades.dpr • Depois copiamos os arquivos e salvamos em uma pasta no linux.
Kylix X Delphi - Aplicação • Ao compilar, o Kylix exibirá vários erros. Que erros são esses?
Kylix X Delphi - Aplicação • Erros na unit principal que é a cidade.pas. • Algumas units colocadas na seção uses no Delphi não são usadas no kylix, como por exemplo a unit windows e a system. Outras possuem o nome diferente.
Kylix X Delphi - Aplicação • Teremos problemas também na diretiva de compilação que mostra a extensão dos arquivos de formulário, que fica na primeira linha da seção implementation. No Delphi os arquivos de formulário possuem extensão DFM, mas no Kylix a extensão é XFM
Kylix X Delphi - Aplicação • Tentando compilar novamente, o Kylix ainda irá gerar outro erro, agora na unit do projeto. Ocorre o mesmo erro da unit principal, ou seja as units e a diretiva de compilação. • São problemas simples de resolver. A diretiva de compilação do arquivo de recurso (*.RES) no Delphi é colocada em letra maiúscula, e no Kylix deve ser em letra minúscula (lembrando que o Linux é case-sensitive quando trabalha com nome de arquivo) .
Kylix - Portabilidade • Se você tiver programas que não utilizem bancos de dados, API do Windows e só utilizem componentes padrões do Delphi, o trabalho de portar a aplicação será muito suave: provavelmente, com a mudança das cláusulas Uses, o programa poderá ser recompilado no Kylix.
Kylix - Portabilidade • Os nomes das units que contém os componentes foram alteradas, incluindo-se um caractere Q no início do nome. Assim, Forms virou QForms, Controls tornou-se QControls e assim sucessivamente. • Poderá ocorrer problemas com características diferentes entre o Linux e o Windows, como a inexistência do conceito de drives ou a mudança de separadores de caminho, por exemplo.
Kylix - Portabilidade • Os programas que utilizam bancos de dados sofrerão alterações mais profundas: • Paradox e dBase não são mais suportados - o ideal é converter a base de dados para Interbase e usar suas características. • Como o dbExpress é baseado em Sql, é interessante converter o uso de Tables para Queries, minimizando o tráfego na rede • Os componentes TTable, TQuery e TStoredProc devem ser convertidos para TSqlTable, TSqlQuery e TSqlStoredProc. Todo o acesso que não seja unidirecional deve contar ainda com um componente TDatasetProvider e um TClientDataset. Os componentes dataware devem estar ligados ao TClientDataset
Kylix X Eiffel - Variáveis • Em Eiffel e em Kylix a manipulação de objetos é sempre por referência, isso permite que a utilização dos objetos seja desacoplada da sua dimensão e da sua declaração interna. A declaração por valor permite gerar código mais eficiente, mas com prejuízo da polimorfia • Para linguagens híbridas como o Kylix e o Java, as variáveis dos tipos primitivos como inteiros e reais, que não são classes, são acedidos por valor.
Kylix X Eiffel - Unicidade • A unicidade de identificação das operações diverge de linguagem para linguagem. Em C++ e Java podem existir operações distintas com o mesmo nome, desde que tenham lista de parâmetros distintas. Em C++ os tipos de retorno não distinguem, mas em Java sim. Em Eiffel e em Kylix a unicidade é garantida apenas pelo nome, assim como em Smalltalk.
Kylix X Eiffel - Ambiquidade • Para desfazer a ambigüidade em C++ ou se utiliza um operador de resolução do âmbito(“::”) ou se redefine na classe descendente o atributo ou operação que é alvo de colisão. • Em Eiffel, no caso geral, a colisão de nomes obriga que se utilize uma clausula especial de renomeação (rename) para mudar pelo menos um dos designadores do atributo ou operação em colisão. Em Kylix este problema não ocorre porque a herança múltipla não é suportada.
Kylix X Eiffel - Polimorfia • Em C++, Java, Smaltalk, Kylix e Eiffel a implementação de uma operação pode ser alterada nos descendentes. • Em Eiffel existe a possibilidade adicional de mudar o nome a um membro herdado (operação ou atributo), ou mesmo cancelá-lo.
Kylix X Eiffel - Classes Genéricas • A parametrização de classes está disponivel nas linguagens C++ (aí designadas de templates) e Eiffel, mas não em Java, Smaltalk ou Kylix. • A parametrização de classes não é uma inovação do paradigma dos objetos. Uma construção semelhante, designada de generics, já existia, por exemplo, na linguagem Ada.
Kylix X Eiffel - Garbage Collection • O Eiffel tem um mecanismo de Garbage Collection. • A Garbage Collection no Kylix deve ser implementado a cargo do programador.