X

Saiba como a nuvem e as novas tecnologias habilitam a transformação nos negócios e na sociedade.

Os 25 melhores aplicativos Java já escritos

This is a syndicated post, view the original post here

De exploração espacial a genômica, de compiladores reversos a controladores robóticos, a linguagem Java está no centro do mundo de hoje. Aqui estão alguns dos inúmeros aplicativos Java que se destacam da multidão.

Por Alexa Morales*

A história do Java começou em 1991, numa época em que a Sun Microsystems buscava expandir sua liderança no mercado de estações de trabalho computacionais visando o crescente mercado de dispositivos eletrônicos pessoais.

Quase ninguém sabia que a linguagem de programação que a Sun estava prestes a criar democratizaria a computação, inspiraria uma comunidade mundial e se tornaria a plataforma de um duradouro ecossistema de desenvolvimento de software com linguagens, plataformas de tempo de execução, SDKs, projetos de código aberto e inúmeras ferramentas. Após alguns anos de desenvolvimento sigiloso liderado por James Gosling, a Sun lançou a plataforma Java de referência em 1995 — "codifique uma vez, execute em qualquer lugar" —reformulando seu design original, voltado para a televisão interativa, a fim de incluir aplicativos para a crescente World Wide Web. Na virada do século, o Java estava animando tudo, desde smart cards a veículos espaciais.

Hoje, milhões de desenvolvedores programam em Java. Apesar de o Java continuar a evoluir em um ritmo cada vez mais rápido, por ocasião do 25º aniversário da plataforma, a Java Magazine decidiu fazer uma retrospectiva de como o Java reformulou o planeta.

-Leia mais: Nosso mundo. Movido a Java.

A seguir, temos uma lista dos 25 aplicativos Java mais engenhosos e influentes já escritos, desde o Wikipedia Search até o Ghidra da Agência de Segurança Nacional dos EUA. O escopo desses aplicativos abrange todas as áreas: exploração espacial, videogames, machine learning, genômica, setor automotivo, segurança cibernética e muito mais.

Essa lista, que não segue nenhuma ordem específica, está longe de ser exaustiva. Se você achar que eu esqueci de algum aplicativo óbvio, corrija-me! No Twitter, tuíte para @OracleJavaMag usando as hashtags #MovedbyJava e #Top25JavaApps.

Uma observação pessoal: iniciei como editora-chefe da revista Software Development em 2000, quando os novos desenvolvedores Java da baía de São Francisco estavam ganhando as manchetes. Lembro-me de devorar a primeira edição do Head First Java, de Kathy Sierra e Bert Bates. Suas explicações muito visuais deixavam claro não apenas a sintaxe da linguagem, mas também os conceitos de programação orientada a objetos que levaram ao sucesso do Java. Mal sabia eu que, 20 anos depois, o Java continuaria sendo uma potente força em minha própria carreira, agora na Oracle.

A todos os membros da equipe de desenvolvimento Java da Oracle (muitos dos quais trabalharam na Sun antes da Oracle adquirir a empresa em 2010) que ajudaram a desenvolver esta lista: Obrigada. Meus agradecimentos também a Andrew Binstock, ex-editor chefe da Java Magazine; a minha colega Margaret Harrist, que em 2006 foi estrategista de marketing de conteúdo da divisão de software da Sun; e aos membros da comunidade Java, como você, com muitos dos quais conversei durante minha pesquisa, incluindo Jeanne Boyarsky, Sharat Chander, Aurelio García-Ribeyro, Manish Gupta, Manish Kapur, Stuart Marks, Mani Sarkar, Venkat Subramaniam e Dalibor Topic.
E agora, vamos os 25 melhores aplicativos Java já escritos…

A fronteira final

1. Maestro, controlador de rovers em Marte. Em 2004, o Java se tornou a primeira linguagem de programação a expandir o alcance planetário da humanidade. Durante três meses naquele ano, cientistas que trabalhavam no Laboratório de Propulsão a Jato (JPL, Jet Propulsion Laboratory) da NASA em Pasadena, Califórnia, usaram o sistema Maestro Science Activity Planner em Java, construído pela equipe de interface de robôs do JPL, para controlar o rover Spirit em suas explorações pelo planeta vermelho. A experiência com Java havia começado muitos anos antes no JPL, com a criação de um sistema de comando e controle para o rover Sojourner de 1995. O fundador do Java, James Gosling, passou tanto tempo no JPL que se tornou membro do conselho consultivo.

2. JavaFX Deep Space Trajectory Explorer. Planejando um voo espacial? Você talvez precise de ferramentas da a.i.solutions, uma empresa aeroespacial contratada pelo governo americano, cujos produtos e serviços de engenharia são usados por empresas de defesa e agências espaciais civis há mais de 20 anos.
O JavaFX Deep Space Trajectory Explorer, desenvolvido pela empresa, permite que projetistas de trajetória calculem rotas e órbitas em um sistema de três corpos no espaço profundo. O aplicativo pode gerar visualizações e modelos multidimensionais para qualquer sistema planeta-lua ou asteroide e filtrar milhões de pontos em uma pesquisa visual densa.

3. NASA WorldWind. O trabalho realizado por cientistas de foguetes foi liberado para uso público quando a NASA lançou a versão de código aberto do WorldWind, um SDK para um globo virtual que permite que programadores adicionem o mecanismo de renderização geográfica da agência espacial dos EUA a seus próprios aplicativos Java, web ou Android. Indo muito além do Google Earth, os dados geoespaciais do WorldWind são gerados pelos engenheiros da NASA, que visualizam o terreno a partir de modelos de elevação e outras fontes de dados. De acordo com o site da web: "Organizações no mundo todo usam o WorldWind para monitorar padrões climáticos, visualizar cidades e terrenos, rastrear o movimento de veículos, analisar dados geoespaciais e ensinar a humanidade sobre a Terra."

4. JMARS e JMoon. Disponível publicamente desde 2003 e ainda comumente usado por cientistas da NASA, o Java Mission-planning and Analysis for Remote Sensing (JMARS) é um sistema de informações geoespaciais desenvolvido pela equipe do Mars Space Flight Facility da Arizona State University. O JMARS for the Moon (chamado JMoon por cientistas lunares) analisa imagens de câmeras com lentes grande-angulares da Lunar Reconnaissance Orbiter, uma espaçonave robótica que, desde seu lançamento em 2009, orbita a lua a uma altitude de 50–200 quilômetros e envia suas observações ao Planetary Data System da NASA.

5. Small Body Mapping Tool (SBMT). Popular entre os cientistas espaciais e desenvolvido no Laboratório de Física Aplicada da Johns Hopkins University, o SBMT usa dados de missões espaciais para visualizar corpos irregulares, como asteroides, cometas e pequenas luas, em 3D. O SBMT foi escrito em Java e usa o Visualization Toolkit (VTK) de código aberto para gráficos 3D em Java. As equipes de missões de voo Dawn, Rosetta, OSIRIS-REx e Hayabusa2 usaram o SBMT para explorar cometas, asteroides e um planeta anão.

Intensidade dos dados

6. Wikipedia Search. Faz sentido que uma enciclopédia criada para as pessoas e pelas pessoas seja executada em software de código aberto — e ofereça um mecanismo de pesquisa desenvolvido em Java. O Lucene, escrito por Doug Cutting em 1999 e batizado com o nome do meio de sua esposa, era na verdade o quinto mecanismo de pesquisa desenvolvido por Cutting. Ele criou os outros como engenheiro para a Xerox PARC, Apple e Excite. Em 2014, a Wikipedia substituiu o Lucene pelo Elasticsearch, um mecanismo de pesquisa distribuído, habilitado por REST e também escrito em Java.

7. Hadoop. O Lucene não é a única contribuição de Cutting para a nossa lista. Inspirado em um artigo de pesquisa da Google que descreve o algoritmo MapReduce para processamento de dados em grandes clusters de computadores convencionais, em 2003 Cutting escreveu uma estrutura de código aberto para operações do MapReduce em Java e a chamou de Hadoop, em homenagem ao elefante de brinquedo de seu filho. O Hadoop 1.0 foi lançado em 2006, impulsionando a tendência do big data e inspirando muitas empresas a criar "data lakes", definir estratégias para analisar os "dados de exaustão" e considerar os dados como "o novo petróleo". Em 2008, o Yahoo (onde Cutting trabalhava na época) alegou que seu Search Webmap, executado em um cluster Linux com 10 mil núcleos, era o maior aplicativo Hadoop de produção do mundo. Em 2012, o Facebook afirmou ter mais de 100 petabytes de dados no maior cluster Hadoop do mundo.

8. Parallel Graph AnalytiX (PGX). A análise gráfica trata da compreensão de relacionamentos e conexões entre os dados. O PGX é um dos mais rápidos mecanismos de análise gráfica do mundo, de acordo com benchmarks. Escrito em Java e publicado pela primeira vez em 2014 por uma equipe liderada por Sungpack Hong, pesquisador do Oracle Labs, o PGX permite que usuários carreguem dados gráficos e executem algoritmos de análise, como detecção de comunidades, clusterização, identificação de caminhos, rankeamento de páginas, análise de influenciadores, detecção de anomalias, análise de caminhos e correspondência de padrões. Os casos de uso são abundantes em saúde, segurança, varejo e finanças.

9. H2O.ai. O Machine Learning (ML) tem uma curva de aprendizado acentuada — e isso pode fazer com que especialistas em domínio deixem de implementar ideias de ML incríveis. O ML automatizado (AutoML) ajuda a inferir algumas das etapas do processo de ML, como engenharia de recursos, treinamento e ajuste de modelos e interpretação. A plataforma H2O.ai de código aberto baseada em Java e criada pelo Java Champion Cliff Click visa democratizar a IA e atuar como um cientista de dados virtual para aqueles que estão começando, além de ajudar os especialistas em ML a se tornarem mais eficientes.

Mundos de diversão

10. Minecraft. O ambiente pacífico desse jogo — com biomas, pessoas e casas que você mesmo constrói usando blocos de construção — mantém crianças e adultos do mundo todo em um estado prolongado de fascinação, o que faz dele o videogame mais popular da história. Desenvolvido em Java por Markus "Notch" Persson e lançado em versão alfa em 2009, o Minecraft e seu universo 3D são uma fonte inesgotável de criatividade, porque não há dois mundos criados que sejam iguais. O uso de Java pelo videogame também permite que programadores, em casa e na escola, criem seus próprios mods.

11. Robô Jitter e leJOS. Antes do aspirador de pó autônomo Roomba, havia o Jitter. Um protótipo de robô construído para sugar partículas flutuantes na Estação Espacial Internacional (ISS), o Jitter era capaz de navegar com gravidade zero, quicando nas paredes e usando um giroscópio para se orientar. Segundo um relatório, os cosmonautas russos descobriram que a rotação x, y, z do robô lembrava, de forma impressionante, a forma como a própria ISS controlava sua orientação. O Jitter é o protótipo mais de outro mundo do leJOS, a Java Virtual Machine do Lego Mindstorms, um ambiente de hardware-software da Lego que permite desenvolver robôs programáveis usando blocos de construção de brinquedo. O sistema operacional do brinquedo remonta ao projeto TinyVM de 1999, iniciado por José Solorzano, que se transformou no leJOS e foi liderado por Brian Bagnall, Jürgen Stuber e Paul Andrews. Esse ambiente completo possui muitas classes específicas de programação na área da robótica, simplificadas pela natureza orientada a objetos do Java, permitindo que qualquer pessoa aproveite os controladores avançados e algoritmos comportamentais.

12. Java applets. A palavra applet apareceu pela primeira vez em 1990 na PC Magazine, de acordo com o Oxford English Dictionary. Mas os applets não decolaram até o surgimento do Java em 1995. Os applets Java eram pequenos programas que podiam ser iniciados em uma página da web (em um quadro, uma nova janela, no AppletViewer da Sun ou em uma ferramenta de teste) e executados em uma JVM separada do navegador. Alguns atribuem o sucesso inicial do Minecraft ao fato de que os jogadores podiam jogar em um navegador web via applets Java, em vez de terem que baixar e instalar o jogo. Embora os applets Java tenham sido descontinuados desde o Java 9 e removidos do Java SE 11 em 2018, por algum tempo eles foram o que havia de mais rápido em termos de jogos. Fato engraçado: os applets Java eram capazes também de acessar recursos de aceleração de hardware 3D, o que os tornou populares para visualizações científicas.

Código de honra

13. NetBeans e Eclipse IDE. O primeiro ambiente de desenvolvimento integrado que entrou para o mundo Java foi o NetBeans, iniciado em 1966 na Charles University de Praga (com o nome Xelfi) e comercializado em 1997 por uma empresa com o mesmo nome, fundada pelo empresário Roman Staněk. Em 1999, a Sun comprou o IDE modular, que tinha suporte para todos os tipos de aplicativos Java, e no ano seguinte o transformou em código aberto. Em 2016, a Oracle doou todo o projeto NetBeans para a Apache Software Foundation.

Outro popular ambiente de desenvolvimento integrado baseado em Java e de código aberto é o Eclipse IDE, que pode ser usado não apenas para programar em Java, mas também em outras linguagens de programação que variam de Ada a Scala. Lançado em 2001 pela IBM e baseado no IBM VisualAge, o Eclipse SDK é destinado a desenvolvedores Java, mas pode ser estendido por meio de plug-ins. O Eclipse IDE, após ter sido transferido para a Eclipse Foundation, empresa derivada criada pela IBM em 2004, continua sendo um dos principais IDEs disponíveis.

14. IntelliJ IDEA. Existem muitos IDEs, mas o IntelliJ IDEA se tornou um favorito após sua introdução em 2001. Hoje, o IntelliJ IDEA é o framework de muitos IDEs para linguagens tão diversas quanto Python, Ruby e Go. Escritos em Java, o IntelliJ IDEA e o conjunto de IDEs JetBrains relacionados adicionam recursos de produtividade e navegação que muitos desenvolvedores passaram a usar. Isso inclui indexação de código, refatoração, preenchimento de código (anterior ao preenchimento automático de texto em smartphones) e análise dinâmica que identifica erros (semelhante a um corretor ortográfico). "O IntelliJ IDEA ajudou a superar os desafios de gerenciar e depurar aplicativos complexos baseados em Java e JVM em um único framework", diz o Java Champion Mani Sarkar, um engenheiro de software e dados freelancer sediado no Reino Unido. "Eles fazem com que os desenvolvedores se sintam eficazes, produtivos e, acima de tudo, felizes ao usar suas ferramentas".

15. Byte Buddy. Rafael Winterhalter, engenheiro de software baseado em Oslo, criador da biblioteca Java de código aberto Byte Buddy, admite dedicar sua vida — às vezes com um foco enlouquecedor — ao que equivale a um pequeno nicho. No entanto, o fruto de sua dedicação é altamente popular: a biblioteca de geração e manipulação de código de tempo de execução Byte Buddy, usada em ferramentas Java como Hibernate e Mockito, é baixada 20 milhões de vezes por mês, diz Winterhalter.

16. Jenkins. Criado em 2004 por Kohsuke Kawaguchi, engenheiro da Sun Microsystems, o Jenkins é um poderoso servidor de integração contínua de código aberto. Escrito em Java, o Jenkins ajuda a criar, testar e implantar aplicativos de maneira rápida e automática. Ele costuma ser reconhecido como uma das primeiras ferramentas de DevOps que possibilitaram a "infraestrutura como código". O Jenkins e seus mais de 1.500 plugins criados pela comunidade dão conta de inúmeras tarefas de implantação e teste, incluindo trabalhar com o GitHub, dar suporte a desenvolvedores daltônicos e fornecer um arquivo JAR do MySQL Connector.

17. GraalVM. Uma equipe de pesquisadores em Zurique, liderada por Thomas Wuerthinger do Oracle Labs, passou anos aprimorando três ideias: E se alguém escrevesse um compilador em Java (a JVM original foi escrita em C)? E se esse compilador pudesse executar qualquer programa escrito em qualquer linguagem? E se ele fosse incrivelmente eficiente? Depois de 60 artigos de pesquisa publicados, o GraalVM superou todas as probabilidades e se tornou um produto comercial. Entre os maiores fãs dessa tecnologia está o Twitter, que usa o GraalVM para melhorar a velocidade e calcular a eficiência dos seus serviços.

18. Micronaut. Os desenvolvedores que escrevem código para a nuvem precisam pensar cuidadosamente na quantidade de memória que seus aplicativos usam — e em como eles usam essa memória. "O aplicativo tem que ser muito responsivo em caso de reinicializações, failover, encerramento e reativação, e ser otimizado em termos de tempo de inicialização e consumo de memória", diz Graeme Rocher, criador do Micronaut, um framework Java para microsserviços que usa metadados de anotação para que a JVM possa compilar com eficiência o bytecode do aplicativo.

19. WebLogic Tengah. Em 1997, o WebLogic Tengah tornou-se a primeira implementação substancial de um servidor Java corporativo. "Ele antecedeu o Java 2 Enterprise Edition e se tornou a principal oferta da BEA, o que levou à aquisição da BEA Systems pela Oracle", diz Andrew Binstock, ex-editor chefe da Java Magazine e do Dr. Dobb's Journal. Na mesma época, o sucesso da IBM com o Projeto San Francisco, um framework de objetos de negócios, "foi o que realmente fez o Java passar de algo novo e interessante com o qual as crianças mais descoladas brincavam e ser uma ferramenta de negócios séria", diz Binstock. Hoje, o Oracle WebLogic Server continua sendo o principal servidor de aplicativos Java. No entanto, existe uma alternativa que ainda prospera: O servidor de aplicativos GlassFish de código aberto, iniciado na Sun em 2005 e doado para a Eclipse Foundation em 2018.

20. Eclipse Collections. Existe uma razão para que muitas das vagas para desenvolvedores mais bem remuneradas em bancos de investimento, bolsas de valores e outras empresas de serviços financeiros exijam fortes habilidades em Java: a linguagem de programação é hábil em lidar com a simultaneidade, o gerenciamento de vários threads de execução, comuns em transações de comercialização de alta frequência, e outras transações financeiras de larga escala. Originalmente conhecido como Goldman Sachs Collections e posteriormente doado à Eclipse Foundation, o Eclipse Collections expande os recursos de alto desempenho nativos do Java "com estruturas de dados otimizadas e uma API rica, funcional e fluente", diz o Java Champion Mani Sarkar. Sarkar observa que o Eclipse Collections oferece armazenamento em cache, suporte a primitivas, bibliotecas de simultaneidade, anotações comuns, processamento de strings, entrada/saída e muito mais.

21. NSA Ghidra. Na RSA Conference de 2019 em São Francisco, a Agência de Segurança Nacional dos EUA lançou uma ferramenta de código aberto escrita em Java chamada Ghidra, a qual pesquisadores e profissionais de segurança estão usando para entender como os malwares funcionam e verificar o código deles em busca de vulnerabilidades. Essa plataforma de engenharia reversa é capaz de descompilar software em linguagem de máquina de volta para o código-fonte (linguagens como Java). A ferramenta tem um histórico curioso, se não infame: sua existência foi revelada ao público em março de 2017 por meio do WikiLeaks.

Mapeando o genoma

22. Integrated Genome Browser. A corrida para mapear o genoma humano começou em 1990 e terminou 13 anos depois, quando pesquisadores médicos conseguiram sequenciar os 3 bilhões de pares de bases de DNA do biotecnólogo Craig Venter, após uma década de trabalho envolvendo 3 mil pessoas a um custo de 3 bilhões de dólares. Quando o sequenciamento foi concluído, os cientistas ficaram ansiosos para mergulhar no código fonte da nossa espécie — mas como? Entre no navegador de genoma baseado em Java, uma ferramenta de visualização desenvolvida por uma equipe, que incluía a professora de bioinformática Ann Loraine, para explorar os datasets básicos e as anotações dos genes de referência. O código aberto do Integrated Genome Browser permite que os pesquisadores aumentem e diminuam o zoom e representem graficamente os dados genômicos, a fim de identificar e anotar características genéticas. Em linha com essa iniciativa mundial, uma ferramenta semelhante foi desenvolvida na Universidade da Califórnia, em Santa Cruz, na forma do Genome Browser, gerenciado por Jim Kent.

23. BioJava. Lançado em 2000 e ainda em forte ascensão, o BioJava é uma biblioteca de código aberto para processamento de dados biológicos, um campo conhecido como bioinformática. Os cientistas que usam essa biblioteca podem trabalhar com sequências de proteínas e nucleotídeos e estudar dados sobre a tradução de genes para proteínas, genômica, desenvolvimento filogenético e estruturas macromoleculares.

O projeto é apoiado pela Open Bioinformatics Foundation e conta com colaboradores no mundo todo, que são financiados por uma variedade de interessados nas áreas farmacêutica, médica e da genômica. "O BioJava é uma opção popular para o desenvolvimento de métodos e softwares, graças às ferramentas disponíveis para Java e à sua portabilidade entre plataformas", escreveu Aleix Lafita e colegas em um artigo de 2019 intitulado "BioJava 5: A community-driven open source bioinformatics library." No artigo, comenta-se que o BioJava recebeu contribuições de 65 desenvolvedores diferentes desde 2009 e, no ano anterior, acumulou 224 garfos e 270 estrelas no GitHub, tendo sido baixado mais de 19 mil vezes.

Coisas "Favoritas"

24. VisibleTesla. Esse aplicativo escrito em Java foi criado por Joe Pasqua, um entusiasta dos automóveis Tesla, em 2013 como um programa gratuito para monitorar e controlar seu Tesla Model S. O VisibleTesla, inspirado na comunidade do Tesla Motors Club, oferece recursos semelhantes aos encontrados no aplicativo móvel oficial da montadora de carros elétricos. Os usuários podem configurar cercas geográficas e notificações para eventos, como uma porta destrancada ou o estado da carga da bateria, além de coletar e manipular dados de viagem. O código aberto do projeto está no GitHub.

25. SmartThings. O aplicativo para a Internet das Coisas (IoT) desenvolvido pela SmartThings, cofundada em 2012 por Alex Hawkinson e posteriormente financiada com 1,2 milhão de dólares arrecadados no Kickstarter, permite controlar e automatizar tudo dentro de casa, desde as luzes, fechaduras, cafeteiras, termostatos e rádios, até o sistema de segurança — tudo isso sem usar nenhum smartphone ou tablet. O aplicativo usa a estrutura Micronaut baseada em Java (veja o item 18 desta lista) para que seus serviços em nuvem possam operar em velocidades abaixo do segundo. A empresa foi adquirida pela Samsung Electronics em 2014 por 200 milhões de dólares.

*Alexa Weber Morales é diretora de conteúdo para desenvolvedores na Oracle

Be the first to comment

Comentários ( 0 )
Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.