Qual seria a melhor solução para o meu Delphi aplicativos em Linux - Delphi + Vinho ou Lázaro?

StackOverflow https://stackoverflow.com/questions/891678

  •  23-08-2019
  •  | 
  •  

Pergunta

Eu preciso fazer minhas soluções Delphi disponível para Linux e eu testei-los em ambos vinho e Lázaro. Quais são as considerações técnicas que deve levar em conta (programação, implementação, manutenção etc.) no longo prazo, a fim de pouso evitar em um pesadelo de manutenção. Eu mantenho meus componentes do Windows usado bastante normal para evitar complexidades que podem se desenvolver em multi-plataforma. Estou à procura de alguns fatos que devem ir além de ser subjetiva. Eu não considerar .Net / Mono, porque isso vai me colocou de volta imediatamente (Delay enorme para o mercado) que eu não posso pagar.

Eu posso pensar de alguns:

  1. Lazaraus pode exigir algumas alterações () a programação para tornar o trabalho de código.
  2. O vinho é um ambiente mais difícil de manter em uma grande base de clientes.

Você contribuição sobre isso seria muito apreciado.

Foi útil?

Solução

Em primeiro lugar, você deve tentar certificar-se de seu código GUI e código de back-end não-GUI são claramente separados no aplicativo GUI e bibliotecas se eles já não estão. Isto faz para facilitar testes e implementação também mais fácil de interface de linha de comando, interface web, etc. Essas bibliotecas (arquivos de unidade com objetos e procedimentos) deve compilar facilmente em FreePascal na maioria dos casos, no entanto você deve verificar e depurar o código não-GUI em primeiro lugar.

Uma vez que está fora do caminho, é hora de dar uma olhada em sua GUI. Se você estiver usando um monte de componentes comerciais 3rd party de código fechado, então você pode estar fora de sorte com facilmente converter o GUI. Se você estiver usando principalmente componentes e / ou aqueles que foram portados para Lázaro de ações, então você pode realmente ser capaz de converter o GUI e usá-lo como está.

Note que, desde programas de Mac OS e Linux são muitas vezes deveria a olhar diferente, você pode querer considerar que, dependendo da sua aplicação. Possíveis abordagens incluem: 1. Use Lázaro mesmo no Windows, e usar o mesmo código GUI para todas as plataformas. 2. Use Lázaro somente no OS X e Linux, e personalizar o GUI para ser um pouco nativa procurando após a conversão. 3. Código de GUI nativa para OS X (Usando Cacau e talvez XCode), e, em seguida, link para o seu código Pascal para o tratamento não-GUI. Esse tipo de coisa é menos necessário no Linux, mas lá você tem uma escolha de kits de ferramentas para o LCL (VCL) back-end de fazer.

Existem fortes defensores de cada abordagem, mas qual é a certa depende de suas "circunstâncias" e os seus objectivos.

Se o seu interesse principal é OS X, considerar juntar-se a lista MacPascal.

O vinho é um enorme exagero a menos que você precisa para obter um aplicativo Linux / OS X amanhã com quase nenhuma modificação. (Nesse caso, por que não usar VMWare?)

Outras dicas

Eu diria que não há nenhuma regra de ouro lá. Ela realmente vai depender de quanto dos componentes que você usa são suportados com Lázaro.

eu começar a testar com Lázaro e manter o vinho como um backup no caso de você ficar desesperado.

Os planos CodeGear ainda são muito vagas (eles são apenas "olhando para ele", mas, ao mesmo tempo, eles manchar o lançamento de 64 bits mais de duas versões completas, por isso mesmo se isso faz progredir isso pode demorar um pouco)

O cronograma rápida faz-me pensar que a versão a Apple vai usar QT, apis não nativas.

Update: quase 4 anos, e ainda não há suporte Linux. As árvores crescem mais rápido.

Eu tenho que discordar com todos os outros aqui e sugerimos que você use o Wine. Google é o transporte Picassa com um vinho instalar e que você poderia fazer a mesma coisa. Em vez de depender da versão instalada pela distro eles têm uma cópia no diretório do programa que está pré-configurado e tem uma versão conhecida que você pode testar contra.

Basicamente, você só precisa perguntar o que uma porta nativa poderia prever que um invólucro de vinho não. Para a maioria dos aplicativos Delphi, a resposta é provavelmente themeing e muito pouco mais. Fizemos uma porta nativa para que pudéssemos acessar o sistema de arquivos em um nível inferior, mas antes que o nosso produto trabalhou no Wine quase perfeitamente durante anos.

E falando da experiência, portas nativas não são um passeio no parque:

  • Os componentes de terceiros são, provavelmente, não apoiada por Lázaro.
  • A menos que você mude a sua versão do Windows para Lázaro, você também vai precisar para manter os arquivos .lfm parallal, e se você mudar você vai perder o Delphi IDE. Tão agradável como Lázaro, é muito para trás as últimas Delphis em polonês e apresenta.
  • Testing vai exigir muito mais esforço, se você tem um programa completamente separada com um conjunto de widgets diferentes. Testes em vinho seria mais perto de testar a versão existente em uma nova versão do Windows.
  • Você não será capaz de usar todos os novos recursos que os introduz compilador Delphi (genéricos, métodos anônimos) até FPC tem algo equivalente.
  • A maioria das instalações Linux de 64 bits não incluem versões do Gtk / Qt de 32 bits, e instalá-los pode ser complicado e propenso a erros, então você precisa para compilar versões do seu aplicativo de 64 bits também.

Eu geralmente recomendo usar Lázaro. Se depender de vinho, você também estão à mercê de bugs vinho, que podem afectar a sua qualidade do produto. Pode até ser útil para usar Lázaro + FPC no ambiente Windows.

Uma alternativa seria a utilização de virtualização, mas isso depende do tipo de aplicação que você está escrevendo.

Olhando para os planos de Codegear - procurar algumas das sugestões do roteiro no DelphiLive 2009 - para fornecer Delphi nativa em Linux e Mac, eu agora ir com Lázaro. Você poupar-se da administração Vinho e porta lata depois que seu aplicativo nativo. (Como alguém colocá-lo:. Delphi será como grande zoológico com pinguins, tigres, leopardos e leopardos da neve)

Claro, portando desenvolva de vontade sair algum trabalho. Mas se você tem um olhar cuidadoso sobre questões como unicode e evitar fazer as falhas mais comuns, deve ser bastante fácil.

delphifeeds para unicode e roteiro para mais dicas.

Eu acho que qualquer vinho ou Lázaro provavelmente iria funcionar para você. Eu testei alguns dos nossos muito grande Apps Delphi (controles Muitos 3o partido) com vinho, e eles têm trabalhado muito bem. Houve alguns problemas de fontes irritantes. Os dois coisa que realmente não majorly foi onde eu costumava TWebBrowser (que parecia que quase funcionou, acho que estava usando o motor de renderização Gecko em vez do IE). O outro era um servidor muli-tier (DataSnap), que funcionou, mas, eu não poderia trabalhar para fora como se conectar.

Eu acho que esperando por suporte Mac / Linux para Delphi seria um erro, o fato de que eles podem compilar um aplicativo de console "Olá mundo" para OS / X é impressionante - mas acho que portar o VCL é uma história diferente ( a menos que você tenha escrito um aplicativo de console).

Se você já tem um aplicativo de trabalho, em seguida, dar vinho a go -. Teste não pode ferir

A outra coisa a considerar é que são seus usuários (e quantos)? Se eles são geeks Linux, então eles vão ter nenhum problema na configuração e ajustes de vinho (embora possam encontrá-lo ofensivo para usar um aplicativo nativo do Windows). Se é um grupo de avós, então isso é uma história diferente.

Free Pascal Compiler / Lázaro não é perto da mais recente Delphi apresenta, mas é bastante estável, embora ainda existem bugs para descobrir.

Além disso, os executáveis ??produzidos parece maior, mas é definitivamente menor do que usando uma VM ou implantando com o próprio vinho.

Mas ele faz algo que Delphi / Kylix tentei uma vez. Cruz construção ! Ao usá-lo, você pode compilar a partir de uma plataforma para outra.

Na verdade, usamos vinho para o nosso produto ShareTeam ... Nós temos uma versão on-teste em Lázaro, que é uma ferramenta boa e tem um monte de vantagens, mas não é realmente completo no momento. Eu acho que no momento é melhor vinho uso, se o trabalho não é simples, a conversão de um aplicativo Delphi para Lazarus / FreePascal não é simples. Pessoalmente espero que Embarcadero fazer uma versão multi-plataforma de Delphi, não como prisma que tem muita diferença com Delphi.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top