DEV Community

Java Efetivo (livro)
Java Efetivo (livro)

Posted on

Item 59: Conheça e utilize as bibliotecas

Evite reinventar a roda:
Ao enfrentar problemas comuns, é tentador escrever soluções ad hoc, mas as bibliotecas oferecem implementações otimizadas, testadas e confiáveis.

Exemplo:

// Gerando um número aleatório (solução ad hoc com problemas)
static int random(int n) {
    return Math.abs(rnd.nextInt()) % n;
}

Enter fullscreen mode Exit fullscreen mode

Problemas com essa abordagem incluem:

  • Padrões repetitivos se n for uma potência de dois.
  • Distribuição desigual se n não for potência de dois.
  • Risco de erro com Math.abs(Integer.MIN_VALUE).
  • Solução melhor: Use Random.nextInt(int) para gerar números aleatórios de maneira eficiente e correta.
Random rnd = new Random();
int randomNum = rnd.nextInt(n);  // Correto e seguro

Enter fullscreen mode Exit fullscreen mode

Use o ThreadLocalRandom:
A partir do Java 7, ThreadLocalRandom é mais rápido e deve ser preferido ao Random em muitos casos:

int randomNum = ThreadLocalRandom.current().nextInt(n);  // 3.6x mais rápido que Random

Enter fullscreen mode Exit fullscreen mode

Vantagens de usar bibliotecas padrão:

  • Especialização: Os métodos das bibliotecas são criados por especialistas, testados amplamente e melhorados ao longo do tempo.
  • Eficiência de tempo: Você pode focar no desenvolvimento da sua aplicação ao invés de escrever infraestruturas de suporte.
  • Desempenho melhorado: Bibliotecas padrão são continuamente otimizadas.
  • Funcionalidades adicionais: Ao longo do tempo, as bibliotecas ganham novas funcionalidades. Exemplo: O método transferTo foi adicionado no Java 9 para facilitar o envio de dados de streams.
// Exemplo de uso do método transferTo para transferir dados de um InputStream para um OutputStream
try (InputStream in = url.openStream();
     OutputStream out = new FileOutputStream("output.txt")) {
    in.transferTo(out);  // Simples e eficiente
}

Enter fullscreen mode Exit fullscreen mode

Bibliotecas comuns a serem conhecidas:

Familiarize-se com as bibliotecas centrais, como java.lang, java.util, java.io, e seus subpacotes.
Conheça o framework de coleções e a biblioteca de streams, além dos utilitários de concorrência em java.util.concurrent.
Enter fullscreen mode Exit fullscreen mode

Quando não usar bibliotecas:

  • Em alguns casos, suas necessidades podem ser especializadas e não atendidas pelas bibliotecas padrão. Nesses casos, procure bibliotecas de terceiros, como o Guava do Google, ou escreva sua própria implementação se necessário.

Conclusão:

  • Resuma sempre com uma consulta: Ao precisar de uma funcionalidade, verifique se uma biblioteca já fornece o que você precisa antes de reinventar soluções.

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

Top comments (0)

Hostinger image

Get n8n VPS hosting 3x cheaper than a cloud solution

Get fast, easy, secure n8n VPS hosting from $4.99/mo at Hostinger. Automate any workflow using a pre-installed n8n application and no-code customization.

Start now

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay