Relatório de Atividades, 30/10/2005
outubro 30th, 2005 | by Aldrin Leal |Tirei o dia de hoje atualizando um projeto. Em particular, alguns frameworks que compôem as dependências.
Comentários notáveis:
==== MINA ====
A parte de rede é baseada em um framework chamado [[http://directory.apache.org/subprojects/network/ MINA]] (Multipurpose Infrastructure for Network Applications), que por sua vez é um subprojeto do [[http://directory.apache.org/ Apache Directory Server]] (um servidor de protocolo, incluindo DHCP, DNS, NTP, e Kerberos. MINA é baseado em um framework anterior chamado [[http://gleamynode.net/dev/tl-netty2/docs/ Netty2]].
Qual o ponto de usar-se MINA? Bem, o principal, na minha opinião, é a facilidade de me oferecer várias features (SSL, NIO, Sockets In-VM, multiplos protocolos) sem ter que fundir meus neurônios. A idéia central é que você sobreescreva métodos em uma classe ([[http://directory.apache.org/subprojects/network/apidocs/org/apache/mina/common/IoHandler.html IoHandler]]),
representando as operações primitivas de um protocolo. Simples, não?
A versão atual é a 0.9.0. Atualizar me deu alguns problemas, em particular pela versã0 0.9 reescrever a interface acima. Após algum sofrimento, o código compilou.
==== SLF4J ====
Infelizmente, a versão nova do mina introduziu uma dependência que eu apenas havia ouvido falar, mas que nunca a usara: [[http://www.slf4j.org/ SLF4J]]. É uma espécie de universo alternativo: SLF4J em si é uma espécie de alternativa ao [[http://jakarta.apache.org/commons/logging/ commons-logging]], mas sem [[http://www.qos.ch/logging/ alguns problemas]] citados pelo autor (que ocorre ser o autor do [[http://logging.apache.org/log4j/ log4j]]). Ou, agora, [[http://www.slf4j.org/nlog4j/ nlog4j]].
Algumas alterações no fonte foram necessárias. Por exemplo, uma classe que utilize commons-logging:
%%(java)
import org.apache.commons.logging.LogFactory;
import org.apache.commons.logging.Log;
public class TesteLog {
private static final Log log = LogFactory.getLog(TesteLog.class);
public static void main(String[] args) {
log.info(“Inicializando.”);
try {
operacao();
} catch (Throwable t) {
log.warn(“Erro durante execucao: “, t);
}
}
}
%%
Vira:
%%(java)
import org.slf4j.LoggerFactory;
import org.slf4j.Logger;
public class TesteLog {
private static final Logger logger = LoggerFactory.getLogger(TesteLog.class);
public static void main(String[] args) {
logger.info(“Inicializando.”);
try {
operacao();
} catch (Throwable t) {
logger.warn(“Erro durante execucao: “, t);
}
}
}
%%
Isto não foi suficiente, pois o [[http://www.springframework.org/ Spring]] depende do commons logging. Mas pra isso, há uma versão da commons-logging que apenas redireciona para o slf4j.
A esta altura, puto de ter alterado tudo, resignei-me… A tendência, a longo prazo, é a adoção do slf4j, por um motivo simples: é feito pra ser modular, permitindo diferentes frameworks coexistindo sem problemas no classpath. Isto, por exemplo, é um dos pontos fortes do ([[http://jakarta.apache.org/hivemind/ Jakarta Hivemind]] sobre o Spring.
O que falta? Bem, preciso exportar uma funcionalidade via RMI. Mantenham ligados…
You must be logged in to post a comment.