Por que eu devo ler este artigo:No planejamento do sistema, antes de sua codificação, é importante pesquisar por APIs que podem substituir funcionalidades geralmente periféricas e de suporte. Deste modo, é possível economizar tempo no desenvolvimento com a utilização de uma solução estável e amplamente testada, e focar nas funcionalidades principais e nas regras do negócio.

O uso de APIs tem se mostrado como uma boa prática no desenvolvimento de sistemas. Utilizar componentes prontos e testados por meio das APIs auxilia os programadores a se dedicarem mais às questões mais importantes do sistema. O Java Runtime Environment (JRE) possui uma série de APIs bastante úteis. Assim, neste artigo será explicado como utilizar três destas APIs. A primeira é o Java Logger, que simplifica o registro de logs para auxiliar no rastreamento de eventos de um sistema. A segunda é o Java Desktop, que permite a utilização de aplicações padrão de cada sistema operacional, sem que o programador precise mapeá-las. E, por fim, o Java Zip, que reúne diversas funcionalidades relacionadas à compactação e descompactação de arquivos no formato zip.

API é uma sigla que significa Application Programming Interface e que podemos traduzir como Interface de Programação de Aplicativo. Elas são responsáveis por padronizar determinadas funções ou componentes em um sistema. São verificadas previamente e continuamente aprimoradas por quem as desenvolveu e mantém.

Em resumo, um programador pode utilizar uma API para cumprir uma tarefa específica em seu sistema, como por exemplo, compactar e descompactar arquivos ou mesmo abrir um aplicativo padrão de e-mail. Assim o programador se preocupa mais com a lógica e regras de negócio do que com as implementações das funcionalidades citadas.

Geralmente as APIs são simples em sua operação e tornam o desenvolvimento de sistemas bastante robusto quando se precisa de uma determinada funcionalidade, tanto em tempo de desenvolvimento quanto na qualidade do código. Imagine uma situação em que se precise criar um log de erros do sistema. O programador teria muito trabalho se construísse tudo, desde o início. Porém, se utilizar a API Java Logger, terá o tempo poupado e utilizará uma funcionalidade com uma boa documentação, padronizada, amplamente testada e pronta para uso.

Nativamente, sistemas na linguagem Java possuem uma série de APIs disponibilizadas pela própria Sun, contidas no Java Runtime Environment (JRE). Além destas, também há APIs de terceiros, ou seja, que não são mantidas pela Sun/Oracle, mas por grupos independentes ou fundações que fazem o mesmo papel que a Oracle com as APIs, porém focado em outras abordagens ou outras linhas de desenvolvimento.

As APIs, além de tornar o trabalho do programador mais simplificado, também colaboram na padronização do código. Da mesma forma como os padrões de projeto ajudam a manter um sistema melhor organizado e estruturado, especialmente quando há uma equipe de desenvolvimento, as APIs também podem ter um papel semelhante, pois é mais fácil entender uma implementação de uma API específica do que um código inteiro que muitas vezes pode não estar completamente otimizado ou testado.

Com base nisso, serão apresentadas neste artigo três APIs. A primeira é o Java Logger, responsável por cuidar do log de sistemas. A segunda é o Java Desktop, que auxiliará na inicialização de programas padrão, não importando o sistema operacional utilizado. Por fim, conheceremos o Java Zip, que explora recursos de compactação e descompactação de arquivos, no formato zip.

Java Logger

Em qualquer sistema, por mais bem desenvolvido que seja, sempre poderá haver o risco de alguma condição em específico falhar, seja por erro na implementação ou por alguma exceção não prevista nas regras de negócio das especificações iniciais. Rastrear uma condição não prevista é essencial para qualquer sistema, desde sistemas pequenos até os de grande porte. Assim, o uso de logs ou registro de eventos se torna uma prática quase que obrigatória.

Os logs de eventos não precisam necessariamente ser um conjunto de arquivos texto. Também podemos utilizar o console da Java Virtual Machine (JVM) para acompanhá-los. Para qualquer aplicativo Java (web ou desktop), o console pode ser ajustado para ser exibido ou ocultado, bastando configurá-lo nas opções do painel de controle do Java.

A API Java Logger nos auxilia na organização dos logs e na maneira como eles serão registrados. Dependendo das regras definidas pelo programador, alguns eventos poderão acionar um aviso no console. Outros eventos, como por exemplo, exceções (ou erros de sistema), podem ser salvas em um arquivo texto, pois neste caso pode ser importante conhecer quais exceções e quando elas ocorreram.

Em se tratando de escrita em arquivos texto, a API tem parâmetros definidos para sobrescrevê-los, visando, entre outras questões, não comprometer o espaço em disco do sistema, caso algum erro recorrente surja.

Para trabalharmos com a API, inicialmente teremos que criar um objeto (exemplo logger1) da classe Logger que recebe o método Logger.getLogger() para construir o objeto de log.

Para cada classe que desejarmos que utilize o log, é necessário criar um objeto de log. O nome do objeto é definido em sua construção. Por exemplo: Logger logger1=Logger.getLogger("pai") define que o nome do log será pai. Existem práticas no uso desta API que recomendam que o nome do log seja o nome da classe.

A API trabalha de maneira hierárquica. Portanto, cada logger criado sempre herdará as configurações do logger pai, conforme indica a Listagem 1. A hierarquia pode seguir a regra de como utilizamos os pacotes de classes. Com isso poderemos definir regras específicas para cada pacote. Podemos associar que o log pai seria o pacote principal do sistema. O log filho1 seria responsável por outro pacote (podemos fazer uma analogia com o pacote de conexões com bancos de dados) e o log filho2 seria responsável por outro pacote diferente (por exemplo, o pacote das regras de negócio).


  Logger logger1 = Logger.getLogger("pai");
  Logger logger2 = Logger.getLogger("pai.filho1");
  Logger logger3 = Logger.getLogger("pai.filho2"); ... 

Quer ler esse conteúdo completo? Tenha acesso completo