Artigo do tipo Exemplos Práticos
Recursos especiais neste artigo:
Conteúdo sobre novidades.
Java para embarcados
Este artigo tem o objetivo de introduzir a Java Embedded Suite, uma oferta da Oracle para o desenvolvimento de soluções embarcadas usando um subconjunto significativamente grande da API da especificação Java SE e alguns recursos adicionais que nos permitem expor funcionalidades via web a partir de uma combinação de arquiteturas, protocolos e formatos mundialmente aceitos e utilizados, como REST + JSON + HTTP.


Em que situação o tema é útil

Este tema é muito útil no promissor campo da computação física, especificamente dentro de uma área que se convencionou chamar de computação das “coisas” ou, ainda, “Internet das coisas”. A partir de um framework como a Java Embedded Suite, programadores passam a poder desenvolver sistemas extremamente úteis visando, como máquinas hospedeiras, minicomputadores com razoável poder de processamento, como o popular Raspberry Pi. Esses computadores, quando combinados com outras placas mais dedicadas e sensores (como os de temperatura, movimento, fumaça e luminosidade), abrem um leque imenso de possibilidades de interação com o mundo físico, fazendo com que absolutamente qualquer entidade, orgânica ou não, passe a atuar como um agente ativo no ambiente que “habita”.

Antes de iniciarmos nossa navegação pelo tema principal deste artigo, convidamos o leitor a parar, por alguns segundos, e elaborar sua própria definição acerca do que acredita ser Tecnologia da Informação e, mais genericamente, Informática. Muitos conceitos e muitas atividades vieram, certamente, à mente, e a provável imagem gerada pela maioria tem, em sua composição, equipes desenvolvendo sistemas em níveis sortidos de complexidade, metodologias e técnicas ágeis de trabalho como Scrum e XP, uma vasta coleção de linguagens de programação em múltiplos graus de abstração, atendimento ao usuário final, computação em nuvem e outros poucos elementos.

Nada mal para uma análise do mercado dos dias de hoje. Este artigo, entretanto, convida todos a uma reflexão um pouco diferente, sob uma ótica que ressalta uma necessidade pulsante de uma redefinição do papel do profissional de informática na sociedade. Esta nova interpretação usa como fundamento um novo mundo que tem se desenhado em uma velocidade incrível. Estamos, definitivamente, na era da robotização. E, neste novo mundo, a computação física (área que tem por objetivo o desenho e a realização de projetos de equipamentos digitais que interajam com o mundo físico que os rodeia) é a “bola da vez”, impulsionada principalmente pelo surgimento de algumas iniciativas admiráveis de grupos de cientistas e estudiosos ao redor do mundo, materializadas na forma de algumas plataformas de hardware muito interessantes, a maioria delas aberta, com destaque para o Raspberry Pi e Arduino.

Neste cenário de transformação, os holofotes começam a se concentrar em ramos normalmente não tão populares entre os estudantes e profissionais recém-formados (principalmente no Brasil), tais como a eletrônica, e as combinações possíveis de projetos derivados da integração entre hardware e software ficam novamente submetidos apenas à capacidade criativa dos seres humanos. Atualmente, verdadeiros laboratórios de garagem podem ser montados a um custo muito baixo, e as soluções que podemos obter dessas experiências vão desde pequenos simuladores de semáforo a robustos sistemas de automação residencial e produção industrial, munidos de módulos para fins como controle de iluminação, climatização, linha de montagem, centrais multimídia, dentre tantos outros.

Este movimento tem criado novas classificações, áreas e disciplinas que passaremos a ouvir e ler com frequência cada vez maior daqui em diante, como “Computação das Coisas” ou, ainda, “Internet das Coisas”.

O ecossistema necessário para uma evolução consistente dessas tecnologias requererá profissionais focados em algo muito além de software (que é um skill bem forte e consolidado em nosso país), englobando conhecimentos em arquitetura de hardware e até em camadas intermediárias a essas duas dimensões (os populares firmwares). Mesmo dentro do campo de desenvolvimento de software propriamente dito, o estudante e o profissional do presente e do futuro, com desejo de se destacar no mercado de trabalho, deverá dedicar um esforço especial para absorver não apenas o básico de cada linguagem de programação com a qual tenha contato em ambientes técnico e acadêmico, mas principalmente os bastidores dos processos de compilação, interpretação, gerenciamento de memória, dentre outros.

E não é apenas de um perfil técnico mais apurado e multidisciplinar que estamos falando quando destacamos esta renovação do papel do profissional de informática no mundo. Todo o arsenal de recursos que vem surgindo em disciplinas como eletrônica, Cloud Computing e Big Data tem se mostrado extremamente útil para diversas outras áreas da ciência humana, como Medicina, Direito, Construção Civil e tantas outras. A variação de repertório, explorando áreas de conhecimento que vão além de teoria e tecnologia computacionais, será um diferencial determinante para todo profissional de informática daqui em diante.

Uma vez que a computação física é uma disciplina muito ampla, impossível de se abordar plenamente em apenas um artigo, dedicaremos este texto à análise de uma solução da Oracle, baseada inteiramente em Java, que potencializa o desenvolvimento de soluções embarcadas e, portanto, aplicáveis dentro deste novo contexto que apresentamos acima: a Java Embedded Suite, desenhada para utilizar como hospedeiros o que se classifica como “tiny computers”. Ao longo do texto, veremos não apenas como esta suíte foi pensada e organizada, mas também algumas das possibilidades geradas por ela para a integração com outras plataformas e dispositivos, indo desde computadores pessoais a smartphones, utilizando uma gama variada de protocolos, a partir de conexões cabeadas e não cabeadas.

O mercado de embarcados e um novo mundo de oportunidades

O mercado de embarcados sempre foi interpretado equivocadamente pelo público brasileiro, tanto técnico quanto leigo. Muitos desenvolvedores ainda têm uma visão bastante turva a respeito do que se pode considerar desenvolvimento para dispositivos desta natureza e o que não se enquadra neste perfil. Um dos maiores vilões, talvez, responsáveis por esta confusão, seja o foco excessivo que se deu (e que ainda se dá) aos smartphones e feature phones que invadiram as prateleiras de lojas nacionais nas últimas duas décadas. O crescimento vertiginoso do mercado da telefonia móvel no Brasil gerou uma falsa impressão de que desenvolvimento móvel limita-se ao que se pode desenvolver para este tipo de equipamento, especificamente. No entanto, basta pararmos para pensar no quanto eletrodomésticos, automóveis e utensílios de uso cotidiano têm sido produzidos com uma capacidade própria e crescente de interpretar e reagir aos eventos que ocorrem ao seu redor para perceber o quanto se investe em sistemas computacionais, também, nessas categorias de produto.

Máquinas, de maneira geral, vêm sendo equipadas com verdadeiros arsenais tecnológicos, que geram um potencial criativo inédito e as tornam capazes de sentir, raciocinar e, finalmente, tomar decisões compatíveis com sua base de conhecimento que, por sua vez, cresce conforme suas interações com o ambiente vão se tornando mais diversas e frequentes.

Pensando-se de maneira isolada na capacidade dessas máquinas de aprender e interpretar informações do mundo exterior, apenas com o conjunto de informações que já possuem, já somos capazes de imaginar um conjunto razoável de habilidades que podem ser adquiridas por esses computadores. Entretanto, se pensarmos que essas máquinas podem se comunicar com sistemas ainda mais inteligentes localizados em algum lugar na grande nuvem, que consome métodos, práticas e tecnologias de disciplinas em plena ascensão como Big Data, Data Science e Cloud Computing, percebemos que há um novo universo absolutamente virgem, pronto para ser explorado.

Nesta oferta estonteante de novas possibilidades, a missão do profissional de tecnologia da informação será a observação e geração de tendências, antecipação de ofertas e resposta rápida às demandas já sinalizadas. E a grata surpresa é que Java, por ser uma tecnologia “end-to-end”, nos permite inúmeras combinações para atender plenamente qualquer cenário de negócio que se possa imaginar. Com ...