Linux, Mac, Portabilidade, SO, Tecnologia, Ubuntu, VM, Windows

Escreva uma vez, rode aonde quiser; promete a VM Lina

Que tal ter aplicações do tipo Java escritas diretas em binários para Linux?

É o que promete a Máquina Virtual Lina. Escreva o código em C/C++ ou até mesmo em Perl e Python, compile os binários especificamente para o Lina, assim como você compilaria para qualquer distro, e rode este executável no Linux, Windows e Mac usando a VM Lina.

Parece cópia do Java? Não, o projeto OpenLina tem a intenção de fazer com o que o OpenSource esteja mais presente em todas as arquiteturas. O código original é escrito para Linux, então pode também ser compilado direto para o Linux além de compilado para o Lina. Na verdade o Lina aumenta a portabilidade de um software do Linux para o Windows e Mac.

Como isso funciona? O Lina funciona usando um Kernel modificado que é responsável por “entender” o código que pode usar bibliotecas Qt e GTK, além de outras. Isso cria uma camada de compatibilidade com o código originalmente escrito para o Linux, com o SO em que o código compilado para o Lina está sendo executado. O responsável pela compatibilidade é a VM Lina para aquele SO em específico. Tudo é explicado nesse diagrama de funcionamento do Lina, mostrado abaixo:

LINA Stack Diagram

Encare o Lina como um “tchan” a suas aplicações para o Linux, que agora pode não ficar mais restritas a eles, e atingir outras plataformas.

Fonte: http://www.linuxdevices.com/news/NS6279947776.html

Anúncios
Padrão

6 comentários sobre “Escreva uma vez, rode aonde quiser; promete a VM Lina

  1. guigouz disse:

    Vaporware. Você pode garantir, de alguma forma, que as aplicações compiladas para linux rodem em windows e mac, desde que tenham sido compiladas para a mesma arquitetura em que roda o cliente (não pense que você compilará um sistema LINA em x86_64 e vai executá-lo em i386 ou PPC sem emulação).
    Uma VM desse tipo (baseada num kernel linux) lembra http://www.colinux.org, só que provavelmente com bindings dos principais toolkits (GTK, QT, talvez XLib) para a plataforma em questão.

    – GTK e QT pra Windows existem há anos, e também, a maioria dos projetos FOSS já possuem versão para Windows: Pidgim, Xchat, Openoffice, Firefox, só para citar alguns.

    – Mac OS X é um BSD modificado. Qualquer aplicação compila sem problemas nele. Existe um port alpha do GTK em cima do Quartz (camada de apresentação do mac) e o QT4 já a suporta nativamente. Mesmo se sua aplicação utilizar algum toolkit obscuro, basta executá-la sob o X11, presente em qquer instalação do OS X.

    Se você está iniciando um projeto multiplataforma, a primeira decisão sana é escolher uma linguagem suportada em várias plataformas, e não depender de uma gambiarra para que ela funcione.

    – Python está presente nos principais sistemas, e aliado às libs mencionadas acima, garante interoperabilidade sem alterar uma linha de código.
    – A máquina virtual Java, agora GPL, está em desenvolvimento há mais de 10 anos e tem performance comparável a aplicações nativas graças a seu compilador JIT, garantindo compatibilidade não só entre sistemas operacionais, como também entre tipos de processador , ou seja, escreva seu código em um i386, e ao rodar em um micro 32, 64 ou 128bits ele vai aproveitar todos os recursos disponíveis.

  2. Pode até no final das contas ser um Vaporware, mas pareceu muito interessante.

    Na verdade qualquer programa rodado no Linux, tendo-se o código-fonte do mesmo, é possível gerar um “bytecode” para a VM Lina, o que não atrapalha em nada no desenvolvimento nem causa dependência da mesma. Adiciona uma liberdade.

    Compilar para outros sistemas é complicado exatamente por causa de bibliotecas. Cada uma dessas aplicações está usando GTK ou alguma outra lib. Seria interessante ter a VM e não ficar se preocupando em mandar o usuário baixar isso.

    Pra mim, Java é uma ótima linguagem multi-plataforma, mas pode ser que o cara desenvolva para C/C++ e queria manter esse mesmo programa funcionando no Linux, Unix, Windows, sem ter que ficar preocupando com GTK, Qt pro Windows, fora outras bibliotecas. Então ele simplesmente compila pra essa VM e implanta nos clientes que não são Linux.

    O problema que eu vejo no JIT é a compilação a todo momento de execução, e só quando ela compensa em termos de carga de sistema. Ela só ocorre depois de X threads de execução e quando ela ocorre leva-se alguns segundos para compilar. Seria legal que o Java fizesse isso na primeira vez que o programa executa no SO e depois nunca mais, ai sim eu diria que o Java é um substituto para C++.

    Em todo caso, o Lina é uma alternativa interessante, coisa a ser olhada, pois pode ser algo muito usado (como também pode nunca ser muito usado).

  3. Paulo,

    pois é. Mas como o guigouz disse já existia algo do tipo. Na verdade acho que a vantagem do Lina é a integração e praticiadade, pois isto tudo já existia de alguma forma.

    A vantagem que vejo nisso tudo, é a compatibilização dos sistemas. Tem muita gente que acha isso ruim, mas como o mercado é do adversário, a compatibilização é boa para nós que temos a menor fatia [geral]. Também vejo com bom olhos por que tudo que compatibiliza várias coisas tende a priorizar o melhor, o mais barato e o que suporta todos (no caso, o Linux). Por isso vejo com bom olhos também o Wine.

    Além disso, tira produtos ruins do mercado, ajudando o OpenSource se fixar, e ajudando assim o Linux.

  4. Só um comentário, Lucas…

    Você disse que parece Java? Isso dá a entender que apenas Java usa máquina virtual. =P

    Java (1993) não é nem a única nem a primeira linguagem a rodar sobre uma máquina virtual.

    Outros exemplos de linguagens que rodam em máquina virtual: Lua (1993), Python (1991) e Smalltalk (1971).

    Portanto, isso acrescido aos comentantários anteriores, só podemos concluir que o Lina é mais uma enrolação.

    []’s

  5. Rodrigo,

    destes que você falou não sabia que SmallTalk rodava em Máquina Virtual. Usei o Java por ser o maior exemplo de VM, pelo menos no popular, desculpe se pareceu generalizado, mas não foi essa a intenção.

    Bom, pode ate ser um enrolação, mas ela vem padronizar uma coisa que já vem sendo feita, que é portar aplicações do Linux para outros sistemas.

    É claro que a mídia exagera na notícia, mas isso não quer dizer que o Lina não possa ser bom.

    []s

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s