Conforme anunciado pela Embarcadero em seu Roadmap (agosto de 2016), a próxima versão de Delphi (10.2, codinome Godzilla), trará o suporte à compilação para Linux. Você já está se preparando? Veja aqui como já pode fazer isso:
1. Instale um Linux Server
Instale uma versão de Linux Server em um computador ou máquina virtual. Aqui estou trabalhando com VMWare rodando em Windows. Criei uma nova VM (2 cores, 1 GB de RAM e 20 GB de HD) e instalei o Ubuntu Server 16.04.1 LTS* (uma das distribuições que está nos planos para ser oficialmente suportada). A instalação foi muito tranquila e um vídeo (em inglês) de um processo similar pode ser visto aqui.
* LTS significa Long Term Support, isto é, uma versão com “suporte oficial prolongado”
É importante mencionar que até o momento a Embarcadero planeja suportar oficialmente a distribuição Red Hat / Fedora family também. As tantas outras demais distribuições devem funcionar sem problemas, mas o suporte oficial provavelmente (pois ainda está indefinido) fique nestas duas distros (Ubuntu e Red Hat).
2. Atualize seu Linux Server
Após concluir sua instalação do Ubuntu você notará que vários pacotes precisam ser instalados. Aqui vai uma lista de comandos úteis para isso:
sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
Alguns outros comandos para a instalação de ferramentas úteis e/ou necessárias para o desenvolvimento:
sudo apt-get install joe wget p7zip-full curl
sudo apt-get install openssh-server
sudo apt-get install build-essential
sudo apt-get install zlib1g-dev
sudo apt-get install libcurl4-gnutls-dev
E aqui dois comandos para uma “limpeza rápida” da bagunça feita com os comandos acima:
sudo apt-get autoremove
sudo apt-get autoclean
3. Conheça os principais comandos do “cmd do Linux”
Se você passou a maior parte da vida em contato com o mundo Windows somente, esta é uma ótima hora para expandir os horizontes 🙂 …aqui vai uma relação rápida dos principais comandos:
- ls – listar arquivos (equivalente ao dir, no Windows)
- cd – acessar um diretório
- rm – apagar arquivos
- cp – copiar arquivos
- mv – deletar arquivos
- mkdir/rmdir – criar/apagar diretórios
- shutdown – desligar ou reiniciar o sistema (vide parametros)
- last – últimos logins efetuados no servidor
- kill – matar processos
- top – lista os processos em execução
- vi – editor de textos padrão. Para sair, digite:
- “:q!” sair sem salvar; e
- “:wq!” sair salvando
- tecla TAB – ao digitar nomes, para auto-completar
Essa é uma lista pessoal dos comandos que eu mais utilizo, mas neste post do VOL (Viva o Linux) tem uma relação bem completa dos comandos básicos. E um guia oficial dos comandos do Ubuntu você encontra aqui.
4. Revise e refatore seu código
Certifique-se de isolar todo o código específico do Windows. Você pode tentar encontrar funções alternativas na RTL ou simplesmente utilizar diretivas de compilação:
{$IFDEF MSWINDOWS} ... {ENDIF}
Revise todos os códigos que especificam caminhos de arquivos, pois no Linux usa-se “/” (barra normal) e não “\” (barra invertida) como no Windows. A dica é usar a constante PathDelim da unit System.SysUtils, já que ela é definida em tempo de compilação (conforme a plataforma selecionada). Dê uma olhada também na unit System.IOUtils, que possui uma série de funções úteis para manipulação de arquivos e pastas.
E por último, implementar testes unitários certamente vai lhe ajudar nesta etapa, evitando muitas surpresas e dificuldades na hora de botar seu servidor pra rodar no Linux. Você pode usar o DUnit ou o DUnitX para isso.
Mas por que me preparar?
Bem, não é de hoje que o Linux é o Sistema Operacional mais usado pelos servidores mundo a fora! É amplamente conhecido por ser mais estável, mais rápido e mais seguro. Alguns podem dizer que “há controversas”, mas isto é um fato!
Outro apelo muito relevante é o custo de licenciamento, o que pode ser facilmente comprovado ao orçar uma máquina em um provedor cloud, como a Amazon EC2. Sendo assim, por que não colocar suas aplicações pra rodar neste mundo também? 😉
Dúvidas frequentes:
P: Vou poder instalar o Linux no Delphi?
R: Não. O Delphi continuará sendo uma ferramente para Windows somente. O que você compila com o Delphi é que poderá ser executado em Linux 64 bit.
P: Vou poder compilar minhas aplicações FireMonkey para o Linux?
R: Não. O objetivo é ter aplicações servidoras, ou seja, somente aplicações do tipo “service” ou console. Isso inclui, por exemplo, aplicações datasnap, webbroker, intraweb e webservices. Nenhum tipo de suporte a interação com o usuário de forma gráfica está planejada no momento, apesar da possibilidade estar sendo considerada para o futuro.
P: Quais edições do Delphi suportarão a compilação para Linux?
R: Até o momento, somente as edições Enterprise e Architect suportarão a compilação para Linux. Se você está usando a edição Professional e tem interesse em compilar para Linux, é hora de fazer um upgrade!
P: Posso participar do Beta do Godzilla?
R: Qualquer cliente com plano de subscrição/manutenção ativo pode participar do Beta e, além disso, clientes com subscrição ativa receberão a versão sem custo quando for lançada 😉
P: E quando a versão será lançada?
R: Bem, prazo não é algo muito bem definido na nossa área, não é mesmo?! 😛 …de qualquer forma, segundo o Roadmap isso deve acontecer no início de 2017.
E aí? Tá esperando o que? Corre preparar tudo aí e, se precisar de alguma ajuda, é só dar um grito! 😉
Um forte abraço!
Isso me parece ótimo, acredito que o unigui então será compatível para Linux \”/, já que o intraweb será suportado…
Provavelmente sim, Marlon! Se os devs do UniGUI seguirem os “pré-requisitos” do compilador, tudo deve funcionar 😉
excelente artigo Kelver .. obrigado .. 😉
Muito obrigado pelo feedback, João! 😉
[…] você já começou a se preparar para compilar suas aplicações servidoras para Linux com Delphi, provavelmente sentiu alguma dificuldade em relação à administração do novo sistema […]
boa, já é o inicio para o mundo linux porém vou aguardar para aplicações desktop.
Pois é! Interação gráfica com o usuário é interessante sim, sem dúvida! Entretanto, a maior demanda para Linux no mundo corporativo hoje em dia certamente é do lado server, não é mesmo?! Eu já estou me mexendo aqui ;P
Show de bola Mestre. Esperando ansioso por essa versão.
Somos 2, amigo! E muito obrigado pelo feedback 😉
Por hora não tenho interesse em aplicações para servidores, se fosse para estações de trabalho já seria outra conversa. Me parece que não há interesse da Embarcadero no desenvolvimento para estações de trabalho… Demanda corporativa do lado server ? Discordo… peguemos apenas 1 exemplo, as casas Bahia que não utilizam windows em suas estações de trabalho a anos, tudo Linux, e nós tendo que escrever códigos para Windows XP, Vista, 7, 8,0, 8.1, 10 e sabe-se lá o que vem por aí. A VCL literalmente abandonada, (atualização de um componente que só roda no Windows 10 por exemplo não conta) não tempos uma grid decente até hoje, nem um checkbox na grid algo tão importante, me parece que há um grande acordo com a Microsoft para não tocarem nesse assunto (delphi com estações Linux). Infelizmente a Embarcadero está deixando a desejar versões repletas de bugs e para corrigir… tem que comprar a próxima…. ridículo.
Muito obrigado pela interação, Abel!
Respeito sua opinião, apesar de discordar de alguns pontos.
Aproveite para dar suas opiniões na pesquisa anual da Embarcadero: https://www.surveymonkey.com/r/2017RADStudioSurvey
Um forte abraço!