Rodrigo Kumpera Weblog

Meus achados sobre tecnologia

Nas entranhas de uma máquina virtual Java

May 5th, 2006 · 1 Comment

Parece que foi ontem quando eu decidi tentar escrever uma máquina virtual Java. Eu já tinha me aventurado anteriormente em escrever interpretadores simples com C++ para o bytecode dessa linguaguem, mas nada além disso, e agora minha meta era conseguir rodar algum programa não trivial naquilo que será um dia uma máquina virtual.

Só que dessa vez não queria meter a mão em código C++, queria fazer tudo em Java, ou quase tudo. A idéia é muito boa, dado que existem pelo menos 3 projetos assim. O problemão é que logo no inicio você já precisa de uma infraestrutura enorme.

O esforço não é pequeno, e a maior barreira é sair do zero. Para começar a vm tem que ser capaz de compilar a sí própria, para só então pensar no hello world, isso envolve por baixo assemblador, gerador de arquivos objeto e compilador. O problema que mais me incomoda é testar o trambolho todo, como vou testar algo que não funciona mas supostamente deveria produzir algum resultado?

Dai a importancia de escrever testes unitários e funcionais. Testes automatizados são a coisa mais util no desenvolvimento de qualquer software que vá além do trivial. Quando você tem muitas partes moveis, é muito facil deixar uma delas escorregar e como resultado tudo apresenta defeito.

Junta isso com um sistema de controle de versões, que te da segurança em experimentar com o código a vontade, e pronto, tua produtividade aumenta uma ordem de magnitude.

Essa foi a melhor decisão que eu tomei no projeto todo, implementei o mais cedo possivel a infraestrutura de testes, que hoje são uma mistura de junit e código C gerado que faz os testes funcionais. Ter o poder de executar em poucos minutos os testes que uma pessoa manualmente levarias horas não pode ser ignorado.

Tags: Programming

1 response so far ↓

  • 1 Phillip Calçado "Shoes" // May 9, 2006 at 4:07 pm

    O Gavin King falou algo que me fez pensar um pouco em como projetamos aplicações. Não sei se você lembra mas ele falou que simplesmente cria uma aplicação web/persistente/sei lá e vai vendo o que um framework deveria oferecer baseado nas necessidades que encontra. Assim surgiu, por exemplo, o Seam.

    Não faltam aos desenvolvedores de aplicação um comportamento semelhante em algum nível?

Leave a Comment