Acesse seu IDE remotamente com o Projector
Estamos anunciando o lançamento inicial do Projector: uma ferramenta e framework para executar IDEs da JetBrains e aplicativos Swing remotamente na sua rede.
Como você deve saber, o Swing é um kit de ferramentas de widgets gráficos para Java. Os IDEs da JetBrains atuais usam o Swing para desenhar a UI. O mesmo é válido para outros IDEs baseados em IntelliJ, como o Android Studio.
Embora seja geralmente bom que os IDEs da JetBrains e os aplicativos Swing sejam aplicativos para área de trabalho, há uma série de situações excepcionais, como thin clients, que exigem uma abordagem especial. É aqui que entra o Projector.
O Projector é uma tecnologia autohospedada que executa IDEs baseados em IntelliJ e aplicativos baseados em Swing no servidor, permitindo que você os acesse de qualquer lugar usando navegadores e aplicativos nativos.
Casos de uso
Existe uma ampla variedade de condições especiais que podem exigir que você execute um IDE em um servidor. Alguns desses problemas são particularmente comuns em empresas grandes com enorme infraestrutura. Veja a seguir uma rápida lista dos problemas que o Projector é particularmente adequado para resolver:
- Executar código próximo ao tempo de execução ou banco de dados para reduzir idas e voltas.
- Ambientes corporativos de alta segurança.
- Projetos realmente grandes.
- A cópia local do código-fonte é proibida.
- Restrições de hardware do usuário.
- Thin clients.
- A necessidade de executar o IDE em um ambiente GNU/Linux em máquinas Windows ou mesmo em sistemas operacionais não convencionais, como o ChromeOS.
- A necessidade de desligar o computador enquanto o aplicativo continua a operar no servidor.
- Depuração remota no lado do servidor (devtest, devprod).
- Imagens de VM ou do Docker com origens de depuração e um IDE pré-configurado.
- Uma configuração que requer acesso remoto.
Lembre-se de que o Projector não oferece suporte para desenvolvimento colaborativo. Se você precisar de uma ferramenta de colaboração, experimente o Code With Me. Também estamos trabalhando em uma nova solução de desenvolvimento remoto que combina a funcionalidade do Code With Me com o Projector. Isso ajudará a resolver ainda mais os problemas de latência da rede.
Open source
Cada aspecto do Projector é publicado sob uma licença open source. Isso é muito importante para empresas que desejam criar soluções personalizadas com base nessa tecnologia. Usamos as três licenças mais populares:
- Cliente: MIT License (Expat)
- Servidor: GNU GPL v2.0 + Classpath Exception
- Dockerfiles: Apache License 2.0
Também convidamos você a contribuir com novos recursos e correções de bugs por meio de solicitações pull do GitHub. Você pode encontrar links do GitHub para projetos específicos abaixo.
Arquitetura
O Projector é um software cliente/servidor. Você executa o IDE no servidor e, em seguida, pode se conectar a ele pela rede. A conexão entre o cliente e o servidor é extremamente rápida e leve.
Imagine-o como uma solução de área de trabalho remota, como o VNC, com a diferença de que ele exibe apenas as janelas do IDE e é adaptado especificamente para rendimento máximo em aplicações baseadas em Java.
O Projector oferece várias opções para configurar um servidor ou cliente.
Aplicativos cliente
Você pode usar um navegador ou aplicativo nativo para se conectar ao IDE. O aplicativo nativo oferece melhor funcionalidade (por exemplo, atalhos de teclado), mas está disponível apenas para sistemas operacionais de desktop. Atualmente, usar um navegador é a única opção para dispositivos móveis, mas, no futuro, planejamos criar clientes nativos para plataformas móveis também.
Cliente Web
A experiência do navegador é muito semelhante ao uso de um site interativo. Porém, existe uma opção para entrar no modo de tela cheia, que oferece uma experiência mais semelhante à de um desktop.
Você pode controlar as propriedades do cliente Web alterando os parâmetros de URL. Por exemplo, em dispositivos móveis, você pode adicionar o parâmetro "mobile" à URL para ativar botões de sobreposição, incluindo a capacidade de abrir um teclado virtual.
O cliente Web é implementado usando a API Canvas HTML5 e deve funcionar em todos os navegadores compatíveis com essa API. Ele foi testado no Chrome/Chromium, Firefox e Safari.
Você não precisa instalar o cliente Web em qualquer lugar: ele já está incluído na parte do servidor Web do Projector. Tudo que você precisa fazer é inserir a URL. O código completo está disponível no GitHub.
Aplicativo nativo
Você pode usar um aplicativo nativo para macOS, Windows e Linux. Os binários estão disponíveis aqui, e os fontes estão publicadas no GitHub.
Além dos benefícios esperados, como integração com Dock/Barra de tarefas, esse aplicativo oferece suporte a atalhos de teclado, como Ctrl+ W/Cmd+W, que geralmente não estão disponíveis no cliente do navegador.
Lado do servidor
Script de instalação Python
Nosso script de instalação fornece flexibilidade para instalar componentes no lado do servidor. Esta é uma distribuição autônoma e atualmente está disponível apenas para hosts GNU/Linux. Você pode escolher qual IDE deseja instalar, junto com sua versão, opções de segurança e muito mais.
Imagens do Docker
O Docker é a maneira mais fácil de executar o Projector em um ambiente de nuvem. Temos um script de exemplo que permite gerar imagens do Docker que contêm IDEs da JetBrains e o Projector. Isso permite que você execute os IDEs em qualquer lugar em que o Docker esteja disponível. O IDE será executado sem controle e isolado, e você não precisará instalar o X11 no servidor. A imagem é independente.
Em vez de usarmos o DockerHub, publicamos imagens pré-construídas usando nosso Docker Registry personalizado. Por exemplo, este snippet permite que você obtenha o IntelliJ IDEA Community Edition:
docker pull registry.jetbrains.team/p/prj/containers/projector-idea-c
Plug-in de IDE
Por último, mas não menos importante, você pode instalar o plug-in diretamente no seu IDE sem precisar implantar elementos no lado do servidor em um servidor separado. Com esse plug-in, seu dispositivo é o servidor. Como sempre, você pode encontrar o código-fonte no GitHub.
No entanto, o plug-in é muito menos isolado, o que significa que você pode encontrar interações com o sistema operacional. Por exemplo, não podemos renderizar o menu global no macOS.
Faça você mesmo
O Projector é mais uma tecnologia do que uma solução para o usuário final. Você pode usá-lo para personalizar sua própria infraestrutura e atender às necessidades dos seus negócios. Ansible? Com certeza. Kubernetes? Sem problemas.
Você pode construir o que quiser, supondo que tenha conhecimento técnico suficiente. O código é open source, então não há nada que impeça você de mudar o que quiser, ou até mesmo de contribuir com ele! Você pode encontrar mais informações, junto com o código mais importante no lado do servidor, aqui no GitHub.
O Projector ainda é uma tecnologia muito jovem, mas acreditamos que ele tem potencial para se tornar uma das melhores soluções para acesso remoto a IDEs. Adoraríamos ouvir seus comentários. Você pode entrar em contato conosco a qualquer momento no YouTrack e no Twitter.
— A equipe do Projector