# Java para Arduino

**URL:** <https://forum.fazedores.com/t/java-para-arduino/432>\
**Category:** Arduino\
**Created:** [Agosto 15, 2014, 8:30pm UTC](https://forum.fazedores.com/t/java-para-arduino/432 "2014-08-15T20:30:53Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![contato\_angelomendes](https://avatars.discourse-cdn.com/v4/letter/c/f9ae1b/32.png) [@contato\_angelomendes](https://forum.fazedores.com/u/contato_angelomendes)\
**Post date:** [Agosto 15, 2014, 8:30pm UTC](https://forum.fazedores.com/t/java-para-arduino/432/1 "2014-08-15T20:30:53Z")

</div>

Fala galera, sou novo no fórum e estou trabalhando em um projeto de pesquisa com arduino, porém quero trabalhar com Java para programação. Comecei estudar umas bibliotecas já mas ainda não vi muita gente aplicando na prática. Alguém aqui já usou ?

---

<div class="post-metadata">

**Author:** ![mlemos](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.fazedores.com/mlemos/32/2526_2.png) [@mlemos](https://forum.fazedores.com/u/mlemos)\
**Post date:** [Agosto 15, 2014, 9:05pm UTC](https://forum.fazedores.com/t/java-para-arduino/432/2 "2014-08-15T21:05:37Z")

</div>

@contato_angelomendes você quer programar o Arduino usando JAVA ou quer interfacear um programa em JAVA com o Arduino?

---

<div class="post-metadata">

**Author:** ![sksdutra](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.fazedores.com/sksdutra/32/442_2.png) [@sksdutra](https://forum.fazedores.com/u/sksdutra)\
**Post date:** [Agosto 16, 2014, 1:25am UTC](https://forum.fazedores.com/t/java-para-arduino/432/3 "2014-08-16T01:25:20Z")

</div>

A pergunta do @mlemos é pertinente, você não pode escrever o programa que ficará na memória do microcontrolador diretamente em Java, a não ser que você altere a linguagem para compilar seus bytecodes para AVR, mesmo assim, é de se questionar se um microncontrolador com um espaço de memória reduzido vai ter o suficiente para armazenar um bootloader, uma máquina virtual alterada e finalmente o código e sua forma compilada.

Talvez se houvesse mais espaço ou um armazenamento externo seria possível fazer o que [Damien George fez com Micropython e a pyboard](http://micropython.org/). Ele criou um dialeto de Python com um interpretador bem diferente e inseriu no MCU, assim as pessoas podem programar diretamente em Micropython e sua API para o MCU utilizado.

Já se você pensa em interfacear o seu projeto com Java, ou seja, criar uma GUI ou mesmo um prompt para enviar ações para a plataforma, você apenas precisa de uma biblioteca para efetuar conexão Serial e nada mais e isso, a maioria das linguagens tem disponíveis.

---

<div class="post-metadata">

**Author:** ![contato\_angelomendes](https://avatars.discourse-cdn.com/v4/letter/c/f9ae1b/32.png) [@contato\_angelomendes](https://forum.fazedores.com/u/contato_angelomendes)\
**Post date:** [Setembro 16, 2014, 2:13am UTC](https://forum.fazedores.com/t/java-para-arduino/432/4 "2014-09-16T02:13:38Z")

</div>

Na verdade eu quero programar o Arduino em Java mesmo, fiz uma pesquisa rápida e achei esse link [http://www.drdobbs.com/jvm/control-an-arduino-from-java/240163864](http://www.drdobbs.com/jvm/control-an-arduino-from-java/240163864) e alguns mais … Pensei em usar JavaScript também com o NodeJS, porém prioridade para Java, usando um SD para armazenar o maquina virtual Java seria possível trabalhar ? E se armazena-lá em um repositório e fazer download com um shield ethernet ( não pesquisei sobre isso, desconsiderem caso seja besteira).

PS: Desculpa pela demora para responder, estou enrolado na faculdade e não estou recebendo notificações por e-mail.

---

<div class="post-metadata">

**Author:** ![sksdutra](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.fazedores.com/sksdutra/32/442_2.png) [@sksdutra](https://forum.fazedores.com/u/sksdutra)\
**Post date:** [Setembro 16, 2014, 11:54am UTC](https://forum.fazedores.com/t/java-para-arduino/432/5 "2014-09-16T11:54:18Z")

</div>

O que o cara está fazendo aí neste link não é programar o Microcontrolador em Java, o que ele está fazendo é o que foi informado no 3º parágrafo do meu post anterior: Uma conexão serial para controlar um sketch Arduino, ou seja, pelo que entendi da sua resposta, não é o que você quer fazer.

Você quer programar o MCU com Java diretamente e, para isso, você precisa ou reescrever a máquina virtual para que compile os bytecodes de Java para AVR (RISC) - isso se quiser manter a natureza interpretada de Java - ou criar uma linguagem com um dialeto semelhante ao do Java capaz de compilar para AVR (RISC).

Encontrei algumas soluções, como [NanoVM](http://www.harbaum.org/till/nanovm/index.shtml), [MicroJ](http://dmitry.gr/index.php?r=05.Projects&proj=12.%20uJ%20-%20a%20micro%20JVM) e [HaikuVM](http://haiku-vm.sourceforge.net/), se procurar, provavelmente encontrará outras.

---

<div class="post-metadata">

**Author:** ![contato\_angelomendes](https://avatars.discourse-cdn.com/v4/letter/c/f9ae1b/32.png) [@contato\_angelomendes](https://forum.fazedores.com/u/contato_angelomendes)\
**Post date:** [Setembro 19, 2014, 8:30pm UTC](https://forum.fazedores.com/t/java-para-arduino/432/6 "2014-09-19T20:30:29Z")

</div>

Andei lendo mais achei esse link aqui também [https://github.com/SINTEF-9012/JArduino](https://github.com/SINTEF-9012/JArduino), com um projeto bem interessante no github. Mas pelo que já li o desempenho do Arduino fica bem reduzido ao usar Java. Talvez para meu projeto ( estação meteorológica) seja mais interessante usar linguagem de baixo nível mesmo pois vamos precisar de comunicação com rede e processamento 24 horas dos dados recebidos pelos sensores. Mesmo assim obrigado pela ajuda, seguirei postando aqui o andamento do projeto junto à futuras dúvidas …  
Ps: Estamos no inicio ainda, vamos comprar os sensores este mês e no próximo começamos a programação.

---

<div class="post-metadata">

**Author:** ![sksdutra](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.fazedores.com/sksdutra/32/442_2.png) [@sksdutra](https://forum.fazedores.com/u/sksdutra)\
**Post date:** [Setembro 19, 2014, 10:22pm UTC](https://forum.fazedores.com/t/java-para-arduino/432/7 "2014-09-19T22:22:29Z")

</div>

Bom, o desempenho tem que cair mesmo e cair drásticamente, primeiro porque a pequena memória do MCU já está comprometida com um bootloader (se usar mesmo Arduino), você soca ainda uma VM que vai ocupar mais espaço desnecessariamente, além disso, a baixa velocidade de 16MHz com cristal tem que fazer a VM compilar o código para bytecode e, sempre que executar, a mesma VM deve interpretar a versão compilada do código. Imagino como a memória e velocidade de UNO ficam comprometidas com todo esse trabalho apenas para ter Java rodando.

Usar Arduino ou AVRLibc não quer dizer que está programando em baixo nível, programar em baixo nível é usar o Assembly do MCU (baseado em RISC) ou binário direto.

Se você quer mesmo usar Java num MCU AVR como o do UNO, a opção mais sensata seria criar uma linguagem com um dialeto de Java que sua compilação fosse externa, então você apenas enviaria o código já pronto para o MCU que o executaria nativamente.

---

<div class="post-metadata">

**Author:** ![contato\_angelomendes](https://avatars.discourse-cdn.com/v4/letter/c/f9ae1b/32.png) [@contato\_angelomendes](https://forum.fazedores.com/u/contato_angelomendes)\
**Post date:** [Setembro 21, 2014, 2:00am UTC](https://forum.fazedores.com/t/java-para-arduino/432/8 "2014-09-21T02:00:23Z")

</div>

Entendi, não iria valer a pena mesmo. Vou ter 7 sensores monitorando 24 horas e mandando os dados para um repositório, então não posso perder nada em processamento …
