O que é GraphQL?

Na área de desenvolvimento de software, a comunicação entre aplicações front-end e serviços back-end é um tema essencial. Tradicionalmente, as APIs REST (Representational State Transfer) têm sido o padrão de mercado para essa interação. No entanto, uma alternativa poderosa tem ganhado cada vez mais destaque: o GraphQL.

Criado pelo Facebook em 2012 e liberado como código aberto em 2015, o GraphQL é uma linguagem de consulta que propõe uma abordagem diferente das APIs REST tradicionais, permitindo que o cliente especifique exatamente quais dados precisa obter, recebendo uma resposta estruturada e de acordo com essa especificação.

Neste artigo vamos conhecer o que é o GraphQL, como surgiu, quais suas principais características, entre outros temas. Vamos começar?

1. O que é GraphQL?

GraphQL é uma linguagem de consulta (query language) para APIs e um conjunto de ferramentas de tempo de execução (runtime) para executar essas consultas com base nos seus dados.

Ao invés de ter múltiplos endpoints REST, onde cada um retorna um conjunto fixo de dados, com o GraphQL você tem um único endpoint que permite ao cliente solicitar exatamente os dados que precisa. Isso simplifica a interação entre cliente e servidor, bem como evita a sobrecarga de rede.

Pense na seguinte analogia: em uma API REST, é como se você fosse a um restaurante e tivesse que pedir um prato “combo” que vem com hambúrguer, batata frita e refrigerante, mesmo que só queira o hambúrguer. Já com o GraphQL, você pode pedir apenas o hambúrguer, e o garçom (o servidor) vai te trazer somente isso. Isso evita o chamado “over-fetching” (buscar mais dados do que o necessário) e o “under-fetching” (buscar dados insuficientes, exigindo múltiplas requisições).

O GraphQL é composto, basicamente, por três partes principais:

  • Linguagem de Consulta: define como o cliente busca pelos dados.
  • Esquema (Schema): especifica quais tipos de dados estão disponíveis na API e como eles se relacionam.
  • Resolução (Resolvers): funções que atendem às consultas, buscando os dados no back-end.

1.1. Como o GraphQL surgiu?

O GraphQL foi desenvolvido pelo Facebook em 2012 e lançado publicamente em 2015. A necessidade surgiu da complexidade crescente de seus aplicativos (web, mobile, dispositivos IoT etc.), os quais precisavam de uma maneira mais eficiente de buscar dados em seus servidores. As APIs REST do Facebook estavam gerando problemas de desempenho e lentidão no desenvolvimento de novos recursos, pois as equipes de front-end e back-end precisavam coordenar cada mudança em vários endpoints.

A solução encontrada foi a criação de uma nova abordagem onde o front-end tivesse mais controle sobre a estrutura dos dados retornados. Isso permitiu que o Facebook criasse uma API unificada que alimentasse tanto seu aplicativo móvel quanto a versão web, reduzindo a necessidade de endpoints específicos para cada plataforma e otimizando a velocidade de desenvolvimento.

2 – Principais características do GraphQL

Para entender como o GraphQL funciona, é crucial conhecer alguns termos-chave:

  • Schema: o schema define as operações disponíveis (queries, mutations e subscriptions) e os tipos de dados que podem ser consultados (object types, scalar types, enums, interfaces, etc.). Essencialmente, o schema é um contrato entre o front-end e o back-end, especificando os tipos de dados, os campos disponíveis e as relações entre eles. Os schemas são escritos em uma Linguagem de Definição de Schema (SDL).
  • Queries: são operações de leitura de dados que o cliente executa. Nelas, o desenvolvedor define quais campos o cliente pode consultar, aninhando objetos conforme a necessidade daquela operação.
  • Mutations: são operações de escrita ou modificação de dados (criação, atualização e exclusão). São semelhantes às queries, porém voltadas para alteração de estado no servidor. Uma observação é que, ao contrário das queries, que podem ser executadas em paralelo, as mutations são executadas em série para garantir a integridade dos dados.
  • Resolvers: são funções do lado do servidor que resolvem uma query ou mutation e retornam os dados para cada campo do schema. Podem acessar bancos de dados, serviços externos ou qualquer outra fonte de informação. Importante ressaltar que cada campo no schema possui um resolver correspondente.
  • Subscriptions: mecanismo para notificações em tempo real, mantendo uma conexão WebSocket ou similar para enviar atualizações ao cliente.
  • Tipos Comuns: o GraphQL é fortemente tipado. Isso significa que todos os campos e tipos de dados no schema têm um tipo definido (como String, Int, Boolean, etc.). Essa tipagem forte garante que a aplicação seja mais robusta e que os erros sejam identificados mais cedo, durante o desenvolvimento.
    • Scalars: Int, Float, String, Boolean, ID.
    • Object Types: definem objetos com campos específicos.
    • Lists e Non-Null: definem coleções e campos obrigatórios, respectivamente.
    • Enums, Interfaces e Unions: permitem modelar estruturas mais complexas e polimorfas.

3 – As vantagens e desvantagens do GraphQL

Como toda tecnologia, o GraphQL também tem seus prós e contras, os quais precisam ser avaliados antes da sua adoção.

3.1 – Vantagens:

  • Eficiência e Desempenho: permite buscar exatamente o que é necessário, reduzindo a quantidade de dados transferidos e o número de requisições de rede. Dessa forma, o cliente recebe apenas os dados necessários, evitando overfetching e underfetching.
  • Desenvolvimento Ágil e Flexível: o front-end se torna mais independente do back-end. A equipe de front-end pode solicitar novos dados sem a necessidade da equipe do back-end criar ou modificar um novo endpoint. Isso acelera o processo de desenvolvimento.
  • Documentação e Tipagem Automática: o schema atua como uma documentação viva da API. Ferramentas como o GraphiQL (um ambiente de desenvolvimento para GraphQL) usam o schema para fornecer autocompletar e validação de consultas, facilitando a vida do desenvolvedor.
  • Uma única requisição: em muitas situações, o GraphQL permite que o cliente obtenha todos os dados que precisa em uma única requisição, evitando o problema de “cascata de requisições” comum em APIs REST.

3.2 – Desvantagens:

  • Complexidade e Curva de Aprendizagem: a curva de aprendizado inicial é maior, especialmente para desenvolvedores acostumados apenas com REST.
  • Cache: o cache é mais desafiador de implementar no GraphQL do que em APIs REST. A ausência de endpoints distintos dificulta o cache HTTP tradicional. No entanto, existem soluções e bibliotecas para lidar com isso.
  • Upload de Arquivos: o upload de arquivos binários pode ser mais complexo de lidar em GraphQL.
  • Monitoramento e Limitação de Taxa (Rate Limiting): a implementação de rate limiting e monitoramento em um único endpoint pode ser mais desafiadora do que em múltiplos endpoints REST. Assim, se faz necessário, criar lógicas de negócio mais sofisticadas para controlar o acesso.

4 – Exemplo prático

A seguir, para fins de um melhor entendimento, vamos ver um exemplo simples de implementação de GraphQL usando Node.js e Apollo Server.

4.1 – Configurando o ambiente

Para começar vamos criar uma pasta chamada graphql-books-api e executar os comandos abaixo via terminal em seu respectivo diretório:

npm init -y
npm pkg set type="module"
npm install apollo-server graphql
npm install --save-dev nodemon

Após executar esses comandos, será criada uma pasta chamada node_modules e dois arquivos: package.json e package-lock.json.

Em seu arquivo package.json, você precisará inserir as informações do script de desenvolvimento, no respectivo trecho de “scripts”:

{
  "name": "graphql-books-api",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "node index.js",
    "dev": "nodemon index.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "type": "module",
  "dependencies": {
    "apollo-server": "^3.13.0",
    "graphql": "^16.11.0"
  },
  "devDependencies": {
    "nodemon": "^3.1.10"
  }
}

Pronto! Nosso ambiente Node.js já possui uma configuração básica para iniciar o desenvolvimento. Agora, vamos acrescentar duas pastas nessa estrutura (schema e resolvers) e três arquivos (schema.js, resolvers.js e index.js), chegando a esse resultado:

Diretório do projeto exemplo de GraphQL

4.2 – Criando nosso serviço GraphQL

Com o ambiente criado e configurado, vamos inserir os códigos JavaScript de cada um desse nossos arquivos e na sequência vamos executar o servidor e testar a API:

index.jsschema.jsresolvers.js

import { ApolloServer } from 'apollo-server';
import typeDefs from './schema/schema.js';
import resolvers from './resolvers/resolvers.js';

const server = new ApolloServer({ typeDefs, resolvers });

server.listen({ port: 4000 }).then(({ url }) => {
  console.log(`🚀 Server ready at ${url}`);
});

import { gql } from 'apollo-server';

const typeDefs = gql`
  type Book {
    id: ID!
    title: String!
    author: String!
  }

  type Query {
    books: [Book!]!
    book(id: ID!): Book
  }

  type Mutation {
    addBook(title: String!, author: String!): Book!
  }
`;

export default typeDefs;

const books = new Map();

// Dados iniciais (mock realizado para fins de teste)
books.set("1", { id: "1", title: "Clean Code", author: "Robert C. Martin" });
books.set("2", { id: "2", title: "1984", author: "George Orwell" });

const resolvers = {
  Query: {
    books: () => Array.from(books.values()),
    book: (_, { id }) => books.get(id),
  },
  Mutation: {
    addBook: (_, { title, author }) => {
      const id = String(books.size + 1);
      const newBook = { id, title, author };
      books.set(id, newBook);
      return newBook;
    },
  },
};

export default resolvers;

Após inserir os códigos, no terminal execute o comando abaixo para iniciar o servidor Node.js:

npm run dev

Se tudo estiver certo, você visualizará essa mensagem:

🚀 Server ready at http://localhost:4000/

Com o servidor iniciado, vamos testar nossa API. Abra o navegador e acesse http://localhost:4000. Na tela que vai carregar clique em “Query your server” e execute essa query de exemplo:

query {
  books {
    id
    title
    author
   }
}

O resultado dessa query será um arquivo em formato Json com os livros que fizemos mock em nossa API de GraphQL.

Vamos testar também um mutation para adicionarmos um livro:

mutation {
  addBook(title: "O Hobbit", author: "J.R.R. Tolkien") {
     id
     title
     author
   }
}

Você terá um retorno mostrando o registro inserido no seu mock. Se executar a query de consulta novamente, o novo livro registrado aparecerá no seu retorno.

A partir desse exemplo prático veja como é simples dar os seus primeiros passos com GraphQL usando Node.js e Apollo Server. A partir desse ponto, você pode explorar recursos mais avançados, integrar com bancos de dados reais e desenvolver APIs robustas para diferentes tipos de aplicações. E não se esqueça, o GraphQL não é compatível apenas com Node.js, você pode utilizá-lo com outras linguagens de sua preferência como PHP, Python e Java, entre outras.

Conclusão

O GraphQL surge como uma alternativa moderna e eficiente às APIs REST, oferecendo maior flexibilidade e controle sobre as requisições de dados feitas pelo cliente. Ao permitir que o front-end especifique exatamente o que precisa, ele elimina a necessidade de múltiplos endpoints, reduz o tráfego de dados e acelera o desenvolvimento de aplicações mais dinâmicas e escaláveis.

Apesar de exigir uma curva de aprendizado inicial maior e apresentar alguns desafios técnicos — como cache e upload de arquivos —, o GraphQL tem se mostrado uma poderosa ferramenta para quem busca criar APIs mais intuitivas, documentadas e alinhadas com as necessidades reais do cliente.

Seja você um desenvolvedor front-end buscando maior autonomia ou um desenvolvedor back-end em busca de soluções mais eficientes, vale a pena considerar o GraphQL como parte do seu stack de desenvolvimento.

Espero que este conteúdo seja útil em sua trajetória! Se você gostou do conteúdo, compartilhe com seus amigos e aproveite para conhecer mais sobre APIs e outros assuntos de tecnologia da informação aqui!

O que é inteligência artificial?

Nos últimos anos, o termo inteligência artificial (IA) tomou conta da mídia e passou a fazer parte do vocabulário cotidiano de todo mundo. Presente em áreas que vão da saúde à indústria, da educação ao entretenimento, a Inteligência Artificial é um ramo da ciência da computação cujo objetivo é automatizar tarefas e aumentar a eficiência, precisão e produtividade na sua execução.

Para alcançar esse objetivo, sistemas de inteligência artificial procuram simular capacidades humanas, como raciocínio, aprendizado, percepção e tomada de decisões. Em outras palavras, algoritmos de inteligência artificial são modelos computacionais que permitem às máquinas executarem tarefas que, tradicionalmente, exigiriam inteligência humana.

Mas afinal, o que realmente é uma inteligência artificial? Como ela surgiu? Quais as principais ferramentas e chatbots da atualidade? Neste artigo, vamos responder a essas e outras perguntas. Vamos começar?

1 – O que é Inteligência Artificial?

Em essência, a Inteligência Artificial é um campo da ciência da computação que se dedica ao estudos e à criação de máquinas capazes de simular a inteligência humana. Isso envolve capacitá-las a aprender, raciocinar, resolver problemas, perceber contextos e entender a linguagem utilizada na comunicação. O objetivo principal da IA não é necessariamente substituir o cérebro humano, mas sim aprimorar nossas capacidades. O uso da IA permite automatizar tarefas complexas e descobrir padrões que seriam invisíveis para nós.

Para uma máquina ser considerada “inteligente”, ela precisa cumprir alguns requisitos como: processar grandes volumes de dados, identificar relações, tomar decisões baseadas nesses dados e melhorar seu desempenho ao longo do tempo, sem ser explicitamente programada para cada cenário.

1.1 – Como surgiram as primeiras Inteligências Artificiais?

Por mais surpreendente que possa parecer, a ideia de máquinas pensantes não é nova e remonta a séculos, com mitos e ficção científica. No entanto, o nascimento formal da Inteligência Artificial como campo de estudo é geralmente atribuído à Conferência de Dartmouth em 1956.

Foi nesse evento que o termo “Inteligência Artificial” foi cunhado por John McCarthy e onde pesquisadores proeminentes se reuniram para discutir a possibilidade de construir máquinas que poderiam “aprender e pensar”.

Nos anos que se seguiram, a IA passou por períodos de grande otimismo, seguidos por “invernos da IA”, onde o financiamento e o interesse diminuíram devido às limitações tecnológicas da época. No entanto, os avanços na capacidade de processamento dos computadores e o desenvolvimento de algoritmos mais sofisticados para tratar grandes volumes de dados (Big Data) pavimentaram o caminho para o renascimento da IA, nos conduzindo ao cenário que vivenciamos hoje.

2 – Tipos de IAs

As Inteligências Artificiais podem ser classificadas de várias formas, mas uma das mais comuns é a divisão em IA Fraca e IA Forte:

  • IA Fraca (ou IA Estreita/Limitada): são as IAs que hoje vemos em praticamente todas as aplicações. Ela é projetada e treinada para executar uma tarefa específica e bem definida. Exemplos incluem assistentes de voz (Siri, Alexa), chatbots (ChatGPT, Gemini), sistemas de condução de carros autônomos ou softwares de reconhecimento facial. Esses sistemas não possuem consciência nem inteligência geral, apenas executam sua função designada.
  • IA Forte (ou IA Geral/Completa): é o tipo de IA que se equipararia à inteligência humana em todos os aspectos, sendo capaz de entender, aprender e aplicar sua inteligência para resolver qualquer problema, assim como um ser humano. Atualmente, a IA forte permanece no campo da teoria e da ficção científica, sem que tenhamos atingido esse nível de desenvolvimento.

3 – Técnicas de aprendizado de máquina

Dentro do campo da IA, o Aprendizado de Máquina (Machine Learning – ML) é uma das áreas mais cruciais. É através dele que as máquinas adquirem a capacidade de aprender a partir dos dados. As principais técnicas incluem:

  • Aprendizado Supervisionado: a máquina é treinada com um conjunto de dados que já possui “respostas” (rótulos). Por exemplo, você alimenta o algoritmo com fotos de cães e gatos, e para cada foto, informa se é um cão ou um gato. Com o tempo, ele aprende a distinguir os dois por conta própria. É ideal para tarefas de classificação e regressão.
  • Aprendizado Não Supervisionado: neste caso, o algoritmo recebe dados sem rótulos e precisa encontrar padrões, estruturas ou agrupamentos por sua conta. É útil para identificar segmentos de clientes ou detectar anomalias em grandes conjuntos de dados.
  • Aprendizado por Reforço: a máquina aprende através de tentativa e erro, interagindo com um ambiente e recebendo “recompensas” ou “penalidades” por suas ações. É a base para o desenvolvimento de sistemas de jogos e robótica, onde o objetivo é otimizar o comportamento para maximizar as recompensas.
  • Deep Learning (Aprendizado Profundo): uma sub-área do Machine Learning que utiliza redes neurais artificiais com múltiplas camadas (por isso “profundo”) para modelar e processar dados de forma mais complexa. O Deep Learning é responsável por avanços notáveis em reconhecimento de voz, processamento de linguagem natural e visão computacional.

4 – Ferramentas de IA

O ecossistema de ferramentas de IA cresce exponencialmente dia a dia. Empresas e desenvolvedores contam com uma vasta gama de recursos para construir e implementar suas soluções. Algumas das mais proeminentes incluem:

4.1 – Principais ferramentas de IA na atualidade

  • TensorFlow (Google): uma das bibliotecas de código aberto mais populares para desenvolvimento de modelos de Machine Learning e Deep Learning. Amplamente utilizada para pesquisa e produção.
  • PyTorch (Meta/Facebook): outra biblioteca de código aberto muito utilizada para Deep Learning, conhecida por sua flexibilidade e facilidade de uso, especialmente para prototipagem rápida.
  • Scikit-learn: uma biblioteca Python versátil que oferece uma vasta gama de algoritmos de Machine Learning para tarefas como classificação, regressão, agrupamento e pré-processamento de dados.
  • Microsoft Azure AI: uma plataforma de serviços de IA baseada na nuvem que oferece APIs e ferramentas para integrar recursos de IA (visão computacional, processamento de linguagem natural, machine learning) em aplicações.
  • Amazon Web Services (AWS AI/ML): assim como o Azure, a AWS oferece um conjunto abrangente de serviços de IA e Machine Learning na nuvem, permitindo que desenvolvedores criem e implementem soluções de IA de forma escalável.
  • Google Cloud AI Platform: outra opção de plataforma de nuvem robusta com uma vasta gama de ferramentas e serviços para desenvolvimento e implantação de IA, desde modelos pré-treinados até ferramentas personalizáveis.
  • OpenAI API (OpenAI): uma das plataformas mais avançadas para integração de modelos de linguagem natural, como GPT (Generative Pre-trained Transformer), em aplicações. A OpenAI API permite realizar tarefas como geração de texto, tradução, resumo, atendimento automatizado, análise semântica e muito mais. É amplamente utilizada em chatbots, automação de conteúdo, assistentes virtuais e outras soluções baseadas em linguagem.

5 – Chatbots de IA

Os chatbots representam uma das aplicações mais visíveis e interativas da Inteligência Artificial, especialmente na área de Processamento de Linguagem Natural (PLN). Eles são softwares projetados para simular uma conversa humana, seja por texto ou voz. Os avanços recentes, impulsionados pelo Deep Learning, levaram a uma nova geração de chatbots muito mais avançados e sofisticados, entre os quais se destacam:

5.1 – Os principais chatbots da atualidade

  • ChatGPT (OpenAI): sem dúvida, um dos chatbots mais populares e influentes dos últimos tempos. Baseado nos modelos de linguagem GPT (Generative Pre-trained Transformer), é capaz de gerar textos coerentes e relevantes para uma vasta gama de tópicos, responder a perguntas complexas, escrever códigos, criar conteúdo criativo e muito mais. Sua versatilidade o tornou uma ferramenta poderosa para criadores de conteúdo, desenvolvedores e usuários em geral.
  • Google Gemini (Google): o Gemini é um modelo de IA multimodal que compete diretamente com o ChatGPT. Ele é projetado para ser altamente eficaz ao lidar com diferentes tipos de dados, incluindo texto, código, áudio, imagem e vídeo, prometendo uma experiência de conversação e geração de conteúdo ainda mais rica e integrada com o ecossistema Google.
  • Copilot (Microsoft): integrado aos produtos Microsoft (como Bing Chat, Microsoft 365, GitHub), o Copilot atua como um assistente de IA. No Bing Chat, ele potencializa a busca conversacional; no Microsoft 365, ajuda na criação de documentos e apresentações; e no GitHub, auxilia programadores na escrita de código. Sua força está na integração profunda com ferramentas de produtividade.
  • Claude (Anthropic): desenvolvido pela Anthropic, uma empresa focada em IA responsável e ética, o Claude é um modelo de linguagem que busca ser útil, inofensivo e honesto. Ele é conhecido por sua capacidade de lidar com conversas mais longas e por seu foco em segurança e alinhamento, sendo uma alternativa robusta para tarefas que exigem sensibilidade e confiabilidade.

Esses chatbots nos mostram como a IA está transformando a interação humano-máquina, tornando-a mais natural e eficiente. Eles estão redefinindo a forma como buscamos informações, aprendemos e criamos conteúdo.

Conclusão

A Inteligência Artificial é um campo em constante evolução, com o potencial de transformar a maneira como vivemos, trabalhamos e interagimos com o mundo. A Inteligência Artificial já não é mais uma promessa distante: está presente em nossas casas, celulares, carros e até em diagnósticos médicos.

Compreender o funcionamento das IAs é essencial para profissionais e estudantes de tecnologia, bem como para qualquer pessoa que queira entender o futuro que está se desenhando agora e se beneficiar dessa revolução tecnológica.

Espero que este conteúdo seja útil de alguma forma para você. Se gostou do conteúdo, compartilhe com seus amigos e aproveite para conhecer mais sobre TI e desenvolvimento de software.

O que é Java?

Java. Provavelmente, você já ouviu falar desse termo, seja em uma aula da faculdade, durante o desenvolvimento de um software, ou até mesmo no dia a dia, ao se deparar com algum aplicativo ou sistema. Mas o que exatamente é o Java? E por que ele é tão importante no mundo da programação?

Neste artigo, vamos mergulhar no universo Java, desvendando seus conceitos fundamentais, sua história, como dar os primeiros passos na sua instalação e até mesmo desenvolver um pequeno projeto prático. Vamos começar?

1 – O que é Java?

O Java é uma linguagem de programação de alto nível, orientada a objetos, reconhecida pela sua portabilidade e robustez. Desenvolvida pela Sun Microsystems (adquirida pela Oracle em 2010), a linguagem foi lançada em 1995 e rapidamente se tornou uma das mais populares e amplamente utilizadas no mundo.

Sua filosofia principal é “Write Once, Run Anywhere” (WORA), que significa “Escreva uma vez, execute em qualquer lugar”. Isso é possível graças à Máquina Virtual Java (JVM), que interpreta o código Java compilado (bytecode) e o executa em diferentes plataformas, independentemente do sistema operacional subjacente. Isso lhe confere uma portabilidade excepcional, sendo um dos seus principais diferenciais em comparação com outras linguagens disponíveis no mercado.

O Java é a base para uma infinidade de aplicações, como sistemas corporativos robustos, aplicativos móveis (principalmente Android), aplicações web (backends), jogos, Big Data, Internet das Coisas (IoT) e muito mais.

1.1 – Principais características

Até agora, já conseguimos ver que o Java se destaca por diversas características que o tornam uma escolha atraente para diversos projetos de desenvolvimento, desde os mais simples aos mais complexos. Porém, há uma série de outras características que tornam essa linguagem ainda mais poderosa:

  • Orientação a Objetos: tudo em Java é um objeto (com poucas exceções). Isso facilita a modelagem do mundo real em código, promovendo a reutilização, a modularidade e a manutenção do software.
  • Portabilidade: como mencionado, a JVM garante que o código Java possa ser executado em qualquer sistema operacional que possua uma JVM instalada, sem necessidade de recompilação.
  • Segurança: a linguagem foi projetada com a segurança em mente desde o início. A JVM oferece um ambiente seguro para a execução de programas, com recursos como sandboxing e verificação de bytecode.
  • Robustez: juntamente com a segurança, há também um forte tratamento de erros e exceções, o que ajuda a construir aplicações mais confiáveis e menos propensas a falhas.
  • Multithreading: o Java é uma linguagem que suporta multithreading nativamente, permitindo que os programas executem múltiplas tarefas simultaneamente, otimizando o uso dos recursos do processador e melhorando o desempenho das aplicações.
  • Alto Desempenho: embora seja interpretada pela JVM, o JIT (Just-In-Time) compiler otimiza o bytecode em tempo de execução, resultando em um desempenho muito próximo ao de linguagens compiladas.
  • Grandes Bibliotecas e Ecossistema: desenvolvedores Java possuem uma vasta coleção de APIs (Application Programming Interfaces) padrão e um enorme ecossistema de bibliotecas e frameworks de terceiros, o que acelera o desenvolvimento e oferece soluções para praticamente qualquer necessidade.
  • Comunidade Ativa: a comunidade Java é uma das maiores e mais ativas do mundo, oferecendo suporte, recursos, tutoriais e soluções para os mais diversos problemas.

2 – Como surgiu o Java?

A história do Java começa no início da década de 1990, na Sun Microsystems. Originalmente, o projeto, liderado por James Gosling, era conhecido como “Oak” e tinha como objetivo criar uma linguagem para dispositivos embarcados e eletrônicos de consumo. A ideia era ter uma linguagem que fosse independente de plataforma, leve e confiável.

No entanto, com o boom da World Wide Web, a equipe percebeu o potencial da sua criação para o desenvolvimento de aplicações para a internet. Em 1995, a linguagem foi oficialmente lançada com o nome Java, e rapidamente ganhou popularidade devido à sua capacidade de criar applets (pequenos programas executados em navegadores web), revolucionando a forma como o conteúdo interativo era entregue online. Desde então, a linguagem evoluiu e se adaptou, expandindo-se para diversos outros domínios de aplicação.

Em 2010, a Oracle Corporation adquiriu a Sun Microsystems e passou a ser a responsável pelo desenvolvimento e manutenção do Java até os dias atuais.

3 – Como instalar o Java?

Para começar a programar em Java, é necessário instalar o JDK (Java Development Kit), o qual inclui o compilador (chamado javac), ferramentas de desenvolvimento e a JVM (Java Virtual Machine). A seguir, vamos ver como instalar o Java nos principais sistemas operacionais:

3.1 – Instalação no Windows

1 – Acesse o site oficial da Oracle e baixe o instalador compatível com seu sistema (Windows x64 Installer).
2 – Execute o arquivo .exe e siga os passos do assistente de instalação.
3 – Após a instalação, se necessário, adicione o caminho do Java (geralmente C:\Program Files\Java\jdk-xx\bin) à variável de ambiente Path.
4 – Para verificar se está tudo certo, abra o Prompt de Comando e digite:

java -version

3.2 – Instalação no Linux

1 – Atualize os repositórios:

sudo apt update

2 – Instale o JDK:

sudo apt install openjdk-17-jdk

(Esse comando instala a versão 17 do Java. Substitua openjdk-17-jdk pela versão desejada, por exemplo, openjdk-11-jdk para a versão 11).

java -version

Além dos comandos acima, você também pode instalar o Java via pacote .tar.gz, .rpm ou .deb, os quais podem ser encontrados aqui.

3.3 – Instalação no macOS

1 – Baixe o JDK no site da Oracle.
2 – Execute o instalador .dmg.

O JDK será instalado no caminho padrão: /Library/Java/JavaVirtualMachines/.

3 – Para verificar: java -version

Caso prefira, também é possível instalar o Java no macOS utilizando o Homebrew:

brew install openjdk

3.4 – Escolhendo a IDE

Embora seja possível programar em Java com qualquer editor de texto, o uso de uma IDE (Integrated Development Environment) torna o desenvolvimento mais produtivo. Algumas das IDEs mais populares são:

  • IntelliJ IDEA: muito usado por profissionais de programação, oferece recursos avançados de análise de código e integração com frameworks modernos.
  • Eclipse: uma IDE gratuita e altamente extensível, usada amplamente em projetos corporativos.
  • NetBeans: simples e direta, essa IDE é ideal para quem está começando.
  • VS Code: um editor de código leve com suporte a Java via extensões. Ideal para quem prefere um ambiente mais genérico e quando se possui recursos limitados no computador.

4 – Java na prática: calculando variação percentual

Agora que temos o ambiente configurado, vamos colocar a mão na massa com um exemplo prático. Em vez do tradicional “Hello World!”, vamos desenvolver um programa que calcula a variação percentual entre dois números informados pelo usuário via terminal.

A fórmula para calcular a variação percentual é:

Variação percentual = ((Valor Final – Valor Inicial)/Valor Inicial) x 100

Vamos começar criando um arquivo chamado CalculadoraVariacaoPercentual.java. Nosso código para fazer esse cálculo será esse aqui:

import java.util.Scanner; // Importa a classe Scanner para ler a entrada do usuário

public class CalculadoraVariacaoPercentual {

    public static void main(String[] args) {

        // Cria um objeto Scanner para ler a entrada do console
        Scanner scanner = new Scanner(System.in);

        System.out.println("--- Calculadora de Variação Percentual ---");

        // Solicita e lê o valor inicial
        System.out.print("Digite o valor inicial: ");
        double valorInicial = scanner.nextDouble(); // Lê um número decimal (double)

        // Solicita e lê o valor final
        System.out.print("Digite o valor final: ");
        double valorFinal = scanner.nextDouble(); // Lê um número decimal (double)

        // Verifica se o valor inicial é zero para evitar divisão por zero
        if (valorInicial == 0) {
            System.out.println("Erro: O valor inicial não pode ser zero para calcular a variação percentual.");
        } else {
            // Calcula a variação
            double variacao = valorFinal - valorInicial;

            // Calcula a variação percentual
            double variacaoPercentual = (variacao / valorInicial) * 100;

            // Exibe os resultados
            System.out.println("\n--- Resultados ---");
            System.out.println("Valor Inicial: " + String.format("%.2f", valorInicial)); // Formata para 2 casas decimais
            System.out.println("Valor Final: " + String.format("%.2f", valorFinal));   // Formata para 2 casas decimais
            System.out.println("Variação Absoluta: " + String.format("%.2f", variacao)); // Formata para 2 casas decimais
            System.out.println("Variação Percentual: " + String.format("%.2f", variacaoPercentual) + "%"); // Formata e adiciona '%'
        }

        scanner.close(); // Fecha o objeto Scanner para liberar recursos
    }
}

Conclusão

Java é uma das linguagens mais relevantes no mundo da programação. Reconhecido como uma linguagem de programação poderosa e versátil, o Java possui uma história rica e um futuro promissor. Sua portabilidade, robustez, o vasto ecossistema e uma grande comunidade ativa tornam-na em uma excelente escolha para o desenvolvimento de uma ampla gama de aplicações.

Se você está pensando em aprender uma linguagem de programação, Java é, sem dúvida, uma excelente porta de entrada para o mundo do desenvolvimento de software. Com as ferramentas certas e o ambiente de desenvolvimento configurado, você está pronto para explorar todo o potencial dessa poderosa linguagem. Aproveite para criar seus primeiros projetos e junte-se à vibrante comunidade Java!

Espero que este conteúdo seja útil de alguma forma para você. Se gostou do conteúdo, compartilhe com seus amigos e aproveite para conhecer mais sobre programação aqui!