19
mar 14

Explicando os preços para Java Embedded

Esse texto é a tradução desse post do Jim Connors que explica como calcular o preço dos produtos Oracle Java para usar em seus projetos embarcados. Também atualizei alguns dados.

Você provavelmente está se perguntando: “Preços? Sério? Em um blog técnico?”, e eu normalmente concordaria plenamente com sua avaliação. Mas em alguns instantes o tópico pode valer a pena. Não existe, como se costuma dizer, tal coisa como um almoço grátis. Se você pagar pelo direito de um software, ou desenvolver o seu próprio com projetos de código aberto, um custo deve ser pago.

Como um relógio, recebemos regularmente consultas sobre informações de Java embarcado que são mais ou menos assim:

Prezada Oracle, Nós baixamos e avaliamos Java SE-Embedded e achamos que é uma plataforma muito interessante para executar o nosso aplicativo embarcado. Entendemos que esse é um software comercial; antes de decidirmos implantar nossa solução com o seu runtime, você pode nos dar uma idéia dos royalties associados a “chipagem” de x número de unidades?

Parece bastante simples, certo? Bem, sim, exceto que no passado, a Oracle requeria que o potencial cliente assinasse um acordo de não divulgação antes de receber qualquer informação sobre preços de produtos embarcados. Não importa se o cliente estava interessado na implantação de dez unidades ou dez mil, todos eles tiveram que passar por este processo. Hoje certos aspectos de preços ainda podem requerer acordos confidenciais, mas por que não disponibilizar uma lista de preços para uma unidade? Com o lançamento deste documento, as informações sobre preços é agora público.

A prova está lá fora, tanto anedótica [Nota do Tradutor: sério que ele usou essa palavra? rsrsrs] e real, demonstrando que a plataforma Java SE-Embedded da Oracle é, sem dúvida, superior em qualidade e desempenho comparada com as variantes OpenJDK. Para o exemplo mais recente, dê uma olhada neste post. Portanto, a questão torna-se, vale mais a pena pagar por uma plataforma comercial que é totalmente suportado, mais rápido e mais confiável, ou optar por uma plataforma “livre” e suportá-la você mesmo?

Então, qual o custo de Java SE-Embedded?

A resposta universal para essa pergunta é: depende. Isto quer dizer que depende da capacidade do processador embarcado. Antes de perdermos você, vamos mostrar o preço de lista para o licenciamento de Java embedded associados a três plataformas e, em seguida, explicar como chegamos aos números. Até essa postagem, 19 de março de 2014, aqui estão elas:

  1. Custo por unidade para um Raspberry Pi: US $ 0,71
  2. Custo por unidade para um sistema baseado em Intel Atom Z510P : US $ 2,68
  3. Custo por unidade para um Compulab Trim-Slice : US $ 5,36

Como isso funciona?

Estes itens vão nos ajudar a descrever o processo, então vamos mostrar como chegamos a nossos três preços das plataformas de amostra.

  • O preço é feito em uma base por-core.
  • Os processadores são classificados de acordo com sua capacidade e atribuído um fator de core, core factor [NT: vamos chamar de core factor, pq eu odeio traduzir termos técnicos :p]. Quanto maior a capacidade do processador, maior seu core factor.
  • Preço por core é determinado multiplicando-se o preço padrão por core do produto Java-Embedded pelo core factor.
  • Uma taxa de 19% para licença de Atualização de software e Suporte (opcional) é adicionado em cada sistema.

A tabela de core factor que se segue, encontrada em Oracle Java Embedded Global Price List, datada de Agosto de 2014, agrupa os processadores por capacidades semelhantes em categorias chamadas classes de chips. A cada classe de chip é atribuído um core factor.

Exemplo 1

Para calcular o custo por unidade, use esta fórmula:

Taxa de licença do Oracle Java Embedded por-core * core factor * número de cores * suporte

O valor padrão da taxa de licença por-core é sempre US $ 300. O Raspberry Pi é um dispositivo da Classe I e, portanto, tem um core factor de 0,002. Existe apenas um núcleo no Raspberry Pi, e a taxa de atualização e suporte é sempre 19%. Então se juntarmos os os números, temos:

$ 300 * 002 * 1 * 1,19 = 0,714 dólares [NT: isso mesmo 0,71 centavos por unidade. Quase dado ;)]

Exemplo 2

O processador nesse exemplo, um Intel Atom Z510P, é um dispositivo da Classe II e tem um core factor de 0,0075. Usando a mesma fórmula do Exemplo 1, aqui está o que temos:

$ 300 * 0,0075 * 1 * 1.19 = $ 2,6775

Exemplo 3

O processador para o Trim-Slice é baseado no ARM Cortex-A9, um dispositivo da Classe II. Além disso, é um sistema de dual-core. Usando a mesma fórmula como os exemplos anteriores, chegamos ao seguinte preço por unidade :

$ 300 * 0,0075 * 2 * 1.19 = $ 5,355

Conclusão

Com suas especificações de hardware em mãos, agora você deve ter informações suficientes para fazer uma estimativa razoável dos custos de licenciamento dos produtos Java-Embedded da Oracle. No mínimo, isso pode ser uma ajuda no seu processo de tomada de decisão baseado em ” comprar versus desenvolver o seu próprio”. E, claro, se você tiver alguma dúvida, não tenha medo de perguntar.


23
fev 14

Curso On-line Gratuito de Java Embedded com RaspberryPi

UPDATE: Nova turma 19/05

Oi, pessoal.

A Oracle está com inscrições abertas para um curso on-line grátis:

Desenvolvimento de Aplicações Java Embedded usando RaspberryPi

Próxima turma: 19 de Maio

O curso dia 31 de março! (JÁ INICIADO)

Inscrições aqui:

Inscreva-se agora

Aproveite seu conhecimento em Java para aprender como desenvolver projetos para Internet da Coisas (IoT – Internet of Things).

O curso é grátis, projetado para desenvolvedores que conhecem Java básico. O curso terá 5 semanas com 4 a 6 horas de estudo por semana, portanto será bem completo 😉 Mais detalhes aqui.

Você vai desenvolver um aplicativo do mundo real para:

  • Ler os dados de entrada a partir de interruptores e manipular LEDs usando a interface GPIO
  • Ler a temperatura e pressão atmosférica a partir de um dispositivo de I2C
  • Ler a localização atual do aparelho usando um dispositivo UART GPS
  • Armazenar e gerencie os dados coletados
  • Reportar informações a um cliente através de várias opções de comunicação
  • E mais!

Importante: O curso será em inglês.

Formou?

O que você aprenderá:


28
ago 13

[Dica] Extrair uma lista de arquivos ZIP em diretórios separados

Dica rápida.

Precisei extrair uma lista de arquivos JAR, mas queria todos nos diretórios com seus nomes. Usando Linux ou Mac OS X.

Por exemplo: asm.jar, dwr.jar e xdoclet.jar nas pastas

asm/
dwr/
xdoclet/
for i in *.zip; do unzip -d "${i%*.zip}" "$i"; done

Explicando:

for i in *.zip

> Lista os arquivos zip, jar, etc, o que for, e a cada iteração do for guarda o nome do arquivo na variável i.

unzip -d "${i%*.zip}" "$i"

> Parâmetro -d cria o diretório usando o nome do arquivo que está na variável i, mas removendo o .zip do final. O último parâmetro pode  “$i” informa o nome do arquivo a ser descompactado.

É isso.

Abs.


26
jul 13

Projetos impressionantes com Raspberry Pi

Raspberry PiOi, Amigos

Comecei a brincar com o Raspberry Pi a pouco tempo e achei a plataforma fantástica. Participei do hackthon de Raspberry no TDC 2013 e lá desenvolvemos alguns projetos muito legais usando RPi (como ele é carinhosamente apelidado). Nossa equipe criou um projeto, em um dia, chamado Pet-O-Matic, que basicamente carregava de ração a vasilha do seu animalzinho recebendo comandos via Twitter. Irei criar um post com mais detalhes (fontes e vídeos) do projeto em breve.

Mas o importante é que com o RPi é possível unir o poder de processamento de um computador comum com a conectividade de um Arduino, por exemplo. Controlar periféricos usando Python e Java nativamente rodando Apache e/ou Tomcat. Ou algo mais poderoso com um Oracle Embeded Suite 8-O. E por aí vai. Um sonho para qualquer geek de plantão.

Para vocês terem uma ideia do potencial do RPi aqui vai um link com 20 projetos impressionantes feitos com ele.

Espero que curtam 😉

Abs.

Marco.


10
jun 12

[Tutorial] Usando a biblioteca Twitter Library for Arduino com OAuth

Nesse tutorial vou mostar como usar a Twitter Library for Arduino, uma biblioteca muito legal para tuitar usando somente um Arduino e um Ethernet Shield.

Esse projeto é MUITO útil e facilitou demais minha vida. Ele possibilita o envio de tweets pelo Arduino sem a necessidade de nenhum desenvolvimento extra para comunicação com a API do Twitter. Bem legal, pois depois que o Twitter adotou o OAuth como protocolo de autenticação, não era mais possível enviar tweets do Arduino somente informando usuário e senha. 🙁

Twitter Library  envia seu tweet à um site (http://arduino-tweet.appspot.com/) hospedado no meu querido Google App Engine (mais detalhes do GAE com Arduino aqui e aqui). Esse site é que é o responsável por enviar o tweet por você. O serviço do site é uma ponte de acesso facilitado a API do Twitter.

Arduino tuitando em 3 passos:

Dar autorização e obter a chave de acesso

Acesse http://arduino-tweet.appspot.com/ e clique no link Step 1 : Get a token to post a message using OAuth.

Esse link abrirá a página do Twitter para você permitir o acesso da aplicação aos recursos da sua conta.

Depois de autorizar você será redirecionado para uma página informando a sua chave de acesso para essa aplicação (como abaixo). É através desta chave de acesso que você utilizará a Twitter Library. Copie essa chave, mas se perde-la basta repetir o processo e copiá-la novamente.

Your token : XXcv3513-qoiw9hSEDnILynutcIqKXx0IZCP44mWm3pgZfM9dH

Instalar a biblioteca na sua IDE Arduino

Baixe o zip da biblioteca aqui, descompacte o zip e copie a pasta Twitter para dentro de ~/Documents/Arduino/libraries (Mac ou Linux) ou para Meus Documentos\Arduino\libraries\ (Windows). Em alguns casos a pasta libraries ainda não está criada, mas a do Arduino, sim. Nesse caso basta criar a pasta libraries no caminho informado e copiar a Twitter lá para dentro.

Se sua IDE estiver aberta, então a feche e abra novamente. Deverá aparecer um menu como mostrado na imagem abaixo.

Criar um programa, configurar e rodar

Para testar basta acessar os menus File > Examples > Twitter > SimplePost. Um exemplo de uso será criado. Inserira sua chave de acesso (obtida lá em cima) no lugar do texto YOUR-TOKEN-HERE.

Importante: Informe um IP válido da sua rede interna. A linha abaixo é o exemplo da lib, e pode não funcionar na sua rede.

byte ip[] = { 192, 168, 2, 250 };

Faça o Upload  (File > Upload) do programa para o Arduino (com a Ethernet Shield conectada, claro! duhhhh). Ao final do upload abra o monitor da porta serial (Tools > Serial Monitor). Se tudo der certo o resultado ficará assim:

Simples, não?

Obs. 1: O Twitter adotou o protocolo OAuth para autenticação das requisições em sua API. Isto permite que terceiros sejam autorizados a acessar determinadas contas do twitter, com permissão do usuário e sem que o mesmo precise saber sua senha ou dados pessoais. Isso mesmo! Nenhuma informação sua será armazenada por esse serviço. Objetivo deste serviço é ser apenas um autenticador e um atalho para a API do Twitter. Assim fica MUITO fácil comunicar o Arduino com o Twitter, não?

Obs. 2: A qualquer momento você pode revogar a permissão de acesso a essa aplicação pela URL http://twitter.com/settings/connections.

Obs. 3: Se você enviar o mesmo tweet mais de uma vez o Twitter irá responder como a mensagem 403. Ele não permite mensagens duplicadas em um curto espaço de tempo, nem que você envie diversas mensagens seguidas. Isso é para evitar spam de tweet 😉

Conclusão

Gostei muito de usar essa lib, principalmente pela possibilidade de enviar um tweet “diretamente” pelo Arduino de maneira bem transparente e simples. Se você já programou alguma integração com a API do Twitter sabe que não é nada complicado, mas dá um certo trabalho inicial. Além disso é preciso manter uma aplicação fora do Arduino para se comunicar. Com a Twitter Library você não precisa se preocupar com isso. Pode dedicar mais tempo somente ao projeto Arduino 😉

Levando em conta que é um projeto apresentado no próprio site do Arduino eu fico bem tranquilo quanto a confiabilidade dessa solução. Agora vou brincar mais um pouco e crio novo post se achar algo interessante.

Espero que tenham gostado.

Abs. Marco.