A Java Virtual Machine é a pedra angular da plataforma Java. É o componente de tecnologia responsável por sua independência de hardware e sistema operacional, o pequeno tamanho de seu código compilado e sua capacidade de proteger os usuários de programas maliciosos.
A Java Virtual Machine é uma máquina de computação abstrata. Como uma máquina de computação real, ela possui um conjunto de instruções e lida com várias áreas da memória em tempo de execução. É razoavelmente comum implementar uma linguagem de programação usando uma máquina virtual.
A forma mais facil de realizar a instalação é com utilização do Makefile disponível.
Sem a utilização do Makefile a instalação pode ser feita com o seguinte comando.
$ g++ -std=c++11 -I include ./src/*.cpp -o ./bin/jvm
Após a instalação será criado um arquivo executável jvm, dentro do diretório bin. Logo a execução deve ser realizada no diretório principal da JVM e ser chamado com ./bin/jvm.
Para facilitar a execução de diversos arquivos .class, o executável utiliza dos atributos argc e argv realizando assim entradas por linha de comando. Por padrão, os arquivos .class precisam estar dentro do diretório test_examples.
ARQUIVOS .class FORA DO test_examples NAO FUNCIONARÃO.
$ ./bin/jvm HelloWorld.class
$ ./bin/jvm Exceptions.class
- Utilize o cppcheck ao programar
- Use enum sempre que possivel
- Não usar Switch
- Não usar goto
- Não use cores em print
- Não use bibliotecas de teste
- Não utiliza tipos padrões de C, apenas cstdint
O Git Flow será um atributo de extrema importancia para o nosso repositório, evitando que builds funcionais não sejam perdidas na implementação de novas features, bem como códigos estáveis não sejam quebrados.
Um Git Workflow, ou Git Flow é uma recomendação de como usar o Git para realizar o trabalho de maneira consistente e produtiva. Os fluxos de trabalho do Git incentivam os usuários a usar o Git de maneira efetiva e consistente. Dado o foco do Git em flexibilidade, não existe um processo padronizado de como interagir com o Git.
Ao trabalhar com uma equipe em um projeto gerenciado pelo Git, é importante garantir que a equipe esteja de acordo sobre como o fluxo de alterações será aplicado. Para garantir que a equipe esteja na mesma página, um fluxo de trabalho Git acordado deve ser desenvolvido ou selecionado.
A Branch dev é a nossa branch principal e todos os merges requests devem ser feitos via Pull Request da branch feature que esta sendo desenvolvida para a dev. Quando uma versão da dev estiver usável, um Pull Request será submetido para a release.
Novas funcionalidades devem ser desenvolvidas em branches únicas, nenhuma feature deve ser desenvolvida na master e dev, nem na release.
Então como desenvolvo novas features? Com novas branches!
O intuito é que cada biblioteca seja construida em uma branch única. Por exemplo, se eu quero criar uma função de girar 90 graus, devo criá-la em uma biblioteca de movimentação, logo essa biblioteca deve ser construida em uma branch nova.
O comando para criar uma nova branch é :
git branch nome_da_branch
Para vizualisar todas as branches disponíveis:
git branch
E para mudar seu ambiente de desenvolvimento para a branch desejada:
git checkout nome_da_branch
Após ter adicionado mudanças e realizado o commit na sua branch, ao dar o push você pode se deparar com um possível erro. Este erro é porque sua branch ainda não existe no repositório remoto. Para corrigí-lo utilize o comando abaixo que realizará a ligação entre seu branch local e remoto.
git push --set-upstream origin nome_da_branch
Quando todas as mudanças respectivas à branch estiverem prontas e testadas, solicite uma aprovação de pull request no repositório do Github.
A modularização deve seguir esse guia
Os comentários serão escritos com o propósito de se criar um Doxygen
Utilize apenas o seguinte formato para comentário Doxygen:
/**
* ... text ...
*/
E para explicações inline que não irão para a documentação:
// Text