sábado, 4 de abril de 2009

Ricardo Ferreira: o mais novo integrante do time JBoss no Brasil

É com imenso prazer que comunico a contratação de mais um integrante para o time JBoss no Brasil: Ricardo Ferreira.

E ninguém melhor do que o próprio Ricardo para falar um pouco mais sobre ele, sua brilhante carreira e o que espera desse novo desafio.

Leia a "mini-entrevista":


1 - Ricardo, fale um pouco de você: Onde vive; seus hobbies; se é casado. se tem filhos etc.


R: Olá. Meu nome é Ricardo Ferreira, e moro em Belo Horizonte a cerca de 4 anos. Estou casado a cerca de 2 anos com minha esposa Vivian, com quem compartilho o pouco do tempo que me resta quando não estou trabalhando. Apesar de não ter filhos (ainda), tenho um filho em casa na forma de cachorro, cujo unico problema dele é de não saber que ele é realmente um cachorro - pois o danado se comporta que nem gente. Mas ele é fantástico, assim como minha esposa. São eles a razão pelo qual sempre tenho um sorriso no rosto.

Sou uma pessoa bem tranquila, e um tanto quanto sedentária, ao meu ver. Neste caso, meus principais hobbies são todos aqueles que não se gaste tanta energia assim, coisas como beber com os amigos, ir no cinema com a esposa, passear com o cachorro e jogar video-game. Se eu fosse elencar uma atividade que mais gosto de fazer, é a de assistir filmes. Sou um verdadeiro viciado em cinema, daqueles que assiste a qualquer tipo de filme, desde aqueles filmes idiotas como "Nacho Libre" e "Cara, Cadê meu Carro?" até a filmes mais interessantes como "O Resgate do Soldado Ryan".

Gosto demais de estar com pessoas. Tenho uma facilidade grande de me relacionar e por isso, acredito que seja tão prazeroso pra mim estar com pessoas diferentes e interessantes. Na maior parte do tempo, principalmente quando não estou trabalhando, estarei com alguem dando algumas boas gargalhadas.

Porventura, me aventuro em jogar basquete na quadra do meu prédio. Já fui muito bom nisso um dia, cheguei até a jogar na seleção do colégio, mas hoje é realmente dificil me dedicar ao esporte, uma vez que tudo parece ser mais importante do que isso. Mas na maior parte do tempo, quando não crio coragem de pegar a bola pra jogar, eu fico em casa mesmo jogando na XBox Live com minha esposa jogos como Call of Duty e Resident Evil.

Tenho jogado estes jogos de guerra com uma certa frequência, e tenho medo de ficar como um conhecido meu que sonha as vezes que um ladrão entre em sua casa, e ele pega uma Snipper "debaixo da cama", se esquiva no corredor e dá um tiro na perna do ladrão para deixá-lo incapacitado, para por fim, mata-lo com uma faca. Assim que estiver neste nível, eu juro que paro de jogar e compro os jogos do Bob Esponja.



2 - É verdade que você era um desenvolvedor Delphi? Como começou a desenvolver em Java? Como foi essa "migração"?


R: Eu adoro o Delphi! Até hoje, ainda o considero como a melhor IDE para desenvolvimento Windows do mundo. Claro, quando falo isso me refiro ao Delphi Win32, pois as versões posteriores foram todas dedicadas ao núcleo da CLR do .NET, neste caso, deixando de lado o que o Delphi tinha de melhor. Infelizmente, Delphi não é algo mais que dá mercado, e tive que largá-lo a alguns anos atrás para me dedicar a uma linguagem que hoje se tornou tão importante pra mim como o Delphi era, a linguagem Java!

Eu comecei a desenvolver em Java em meados de 2002, quando a empresa em que eu tralhava resolveu focar em serviços e treinamentos voltados a Java. Assim como qualquer pessoa que inicia seus estudos em Java, tive uma dificuldade enorme em entender certos conceitos. Até que a linguagem me era um tanto quanto simples de aprender, pois já conhecia um pouco de C++, mas quem trabalha com Java sabe que, conhecer a linguagem, é apenas 10% do desafio que está por vir.

Nesta época, trabalhava com o Edgar Silva, que era o diretor técnico desta empresa. Ele me ajudou demais nesta questão de dominar a plataforma. Depois disso, fui mergulhando de cabeça, passando por vários projetos até dominar os aspectos chaves de Java, principamente aspectos de objetos distribuidos, transações e de JEE em geral. Hoje me considero muito bom em Java, e devo a isso a dedicação e coragem que tive pra mudar de paradigma e "dar a cara a tapa" em projetos. E devo também ao meu amigo Edgar Silva, que me ensinou que em Java não se tem DataSets, e sim, coleções de objetos rsrsrs.


3 - Seu blog, Architecture Journal, é um dos mais visitados e badalados de SOA em língua portuguesa. Como você começou no mundo SOA?


R: Comecei com SOA em 2006, quando participei de uma oficina de capacitação sobre o assunto na empresa onde trabalhava. Na época, fui incumbido de criar uma palestra sobre SCA e SDO, e não tive como escapar de estudar os conceitos a fundo pra fazer uma boa apresentação. Na mesma época, gostei tanto da idéia de SOA que fiz os cursos oficiais da IBM de SOA até mesmo pra poder tentar a certificação de SOA Solution Designer da IBM, uma das certificações mais dificeis que fiz em toda minha vida.

Depois de um tempo, comecei a participar de várias provas de conceito sobre SOA usando soluções da IBM. Em 2007 especificamente, participei do meu primeiro projeto SOA de facto. Neste projeto, tive a oportunidade de realmente praticar tudo aquilo que estudei em teoria sobre BPM, SDP, ESB, Rules Engine, etc. Neste projeto, usamos Progress / Sonic de cabo a rabo, desde o ESB, quanto a solução de portal para fazer composição dinâmica de serviços usando WSRP. O time da Progress, esteve no projeto como mentores e multiplicadores de conhecimento, e tive o prazer enorme de poder compartilhar este conhecimento deles. Os caras são realmente muito bons, e a partir dai, comecei a ter um carinho especial por SOA, pois vi o que a coisa realmente funciona, quando claro, muito bem empregada e fundamentada.

Me dediquei então a solidificar os conhecimentos que adquiri no projeto com o time da Progress, em outros projetos. Mas acima de tudo, me dediquei a estudar a fundo as soluções de SOA de vários fabricantes para formar um conceito sobre ferramentas e aplicá-las em casos reais. Como sou apaixonado por integração, comecei pelas soluções de ESB. Dai passei a estudar e praticar ESB's como BizTalk, AquaLogic, JBoss ESB, Sonic ESB, Mule, OpenESB e até mesmo soluções adjuntas a um ESB como o XML Tamino Server da Software AG. Infelizmente nunca pude usar todos em projetos reais, mas pelo menos o Sonic ESB, JBoss ESB e BizTalk estão na lista de ESB's que realmente utilizei profissionalmente.

Como não é possível aplicar SOA em todos os projetos de software, comecei a usar certos aspectos de SOA em soluções de software de forma isolada. Dentre a maioria dos aspectos, os que mais pude aplicar é o de BPM e Rules Engine. E como solução principal destes assuntos, optei por usar o jBPM e Drools. Ambos foram pra mim muito gratificantes em termos de aplicação e retorno, pois além de meus clientes ficarem satisfeitos com o resultado, pude maturar ainda mais meu conhecimento nestas soluções. Neste exato momento uma regra de parcelamento pode estar sendo executada numa agenda do Drools em umas das soluções que criei para uma empresa de construção civil, assim como neste mesmo momento, uma tarefa pode estar sendo gerada para um decisor de caixa da empresa sobre postergar ou não um pagamento. Tudo isso, dentro do jBPM!

Participei até hoje de 3 projetos verdadeiramente SOA, e eles me deram um pouco da confiança que tenho hoje pra falar do assunto. Eu sempre falo que a melhor forma de aprender algo na área de software, é participar de um projeto de cabo a rabo. Um bom profissional pra mim é qualquer pessoa que viveu todas as fases de um projeto de software (Concepção-Elaboração-Construção-Transição) e viu o projeto virar um produto na organização. Essa experiência é unica!


4 - Você é o mais novo reforço do time JBoss no Brasil (contratado pela Red Hat). Como você vê essa oportunidade? Quais suas expectativas?


R: Estou muito feliz com a oportunidade de trabalhar na Red Hat. Gosto da filosofia open-source, e vejo que a Red Hat é uma empresa que acredita verdadeiramente nisso, além de prover soluções interessantes para seus clientes. Estive atuando a quase 4 anos na área de projetos e fábrica de software, e agora estarei mudando o foco da minha carreira profissional, um foco que acredito ser importante pra mim pois trabalhar numa empresa do porte da Red Hat é uma experiência inigualável. As exigências mudam e são maiores, assim como as gratificações.

Além disso, gosto de compartilhar o pouco do que sei com as pessoas. Atuando na Red Hat, poderei fazê-lo de uma forma muito mais eficiente e ajudando a muito mais pessoas. Isso é algo pra mim muito importante, além de claro, a certeza de que estarei trabalhando com um time cujo expertise fala por si, e que poderei crescer ainda mais profissionalmente. Admiro demais os profissionais da JBoss (não conheço tantos os da Red Hat) e vejo que é uma empresa onde você pode contribuir sempre com o aperfeiçoamento profissional, seja seu ou dos outros.


5 - O que você espera para o futuro dos projetos JBoss na linha de SOA?


R: Acompanho de perto as soluções da JBoss a um bom tempo, e sempre gostei da forma como elas crescem e evoluem rápido. Gosto de pensar que daqui a um tempo, as soluções de SOA da JBoss estarão cada vez mais competitivas com as demais soluções do mercado, não em termos de funcionalidades e características, que na minha opnião estão de nota 10, mas em termos de usabilidade e estética, um dos calcanhares de Aquiles da JBoss. Mas quem conhece os produtos, sabe que isso está mudando, e sabe também que a linha JBoss SOA Platform deixou de ser um patinho feio, para ser um concorrente de peso com demais adversários. Mas ainda existe muito trabalho a ser feito, e tenho certeza que este trabalho esta sendo visto pela comunidade, senão, a linha JBoss não seria a solução de middleware mais usada no mundo todo.

Espero veememente que a linha JBoss SOA Platform incorpore daqui a um tempo produtos interessantes para cobrir questões de governança SOA e um bom BAM para questões de monitoração de processos e agentes. Já existem bons projetos que irão tornar isso real, e desejo que estes o façam com a mesma maestria que o JBoss ESB faz para linha de EAI e o Drools faz para a linha de Rules Engine. E estou confiante que isso não irá demorar ;-)

------------------------------------------------------------------------------------------------------------------

Ricardo, muito obrigado pela entrevista e seja muito bem-vindo ao time!




domingo, 15 de fevereiro de 2009

Separando o log do JBoss AS por aplicação

Uma dúvida bastante recorrente de usuários do JBoss AS é: Como separar o log do servidor de aplicações por aplicação?

Essa separação é de extrema importância para facilitar a administração e análise do log de servidores, nos quais temos, em uma única instância, várias aplicações.

O procedimento descrito abaixo faz uso do TCLFilter para fazer a separação baseada no contexto da aplicação, e não no category (que não funciona como esperado caso tenhamos, em nosso servidor, múltiplas aplicações com classes compartilhadas).

A configuração é bastante simples e rápida de ser realizada:

Suponha que temos 2 aplicações: app1.ear e app2.ear, nas quais queremos separar os logs em: app1.log e app2.log respectivamente.

Edite o arquivo ${jboss.server.home.dir}/conf/jboss-log4j.xml e coloque as seguintes informações:

<appender name="App1Log" class="org.apache.log4j.FileAppender">
<errorHandler
class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
<param name="Append" value="false"/>
<param name="File"
value="${jboss.server.home.dir}/log/app1.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
</layout>
<filter class="org.jboss.logging.filter.TCLFilter">
<param name="AcceptOnMatch" value="true"/>
<param name="DeployURL" value="app1.ear"/>
</filter>
</appender>

<appender name="App2Log" class="org.apache.log4j.FileAppender">
<errorHandler
class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
<param name="Append" value="false"/>
<param name="File"
value="${jboss.server.home.dir}/log/app2.log"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern"
value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
</layout>
<filter class="org.jboss.logging.filter.TCLFilter">
<param name="AcceptOnMatch" value="true"/>
<param name="DeployURL" value="app2.ear"/>
</filter>
</appender>

...

<root>
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
<appender-ref ref="App1Log"/>
<appender-ref ref="App2Log"/>
</root>


No caso de a aplicação estar empacotada em um arquivo war (o que fará com que o JBoss AS expanda o arquivo na pasta: ${jboss.server.home.dir}/tmp/deploy),
devemos utilizar o valor warname-exp.war para o parâmetro DeployURL.

Ex:

<!-- para arquivo ear: app1.ear -->
<param name="DeployURL" value="app1.ear">

<!-- para arquivo war: app1.war -->
<param name="DeployURL" value="app1-exp.war"/>

e não apenas:
<param name="DeployURL" value="app1.war"/>


Uma outra maneira de se obter esse comportamento está descrita neste post do meu amigo George Gastaldi.

Mais detalhes sobre a configuração de log no JBoss AS podem ser vistos aqui.

segunda-feira, 9 de fevereiro de 2009

Tradução da Documentação da Implementação de Referência da Especificação Web Beans (JSR-299)

Recentemente, resolvi fazer algo em prol da adoçao de Web Beans (JSR-299) no Brasil: traduzir a documentação da implementação de referência da especificação Web Beans (recentemente renomeada para Java Contexts and Dependency Injection)

Infelizmente, é muito comum pessoas deixarem de utilizar uma tecnologia por falta de documentação em sua língua nativa.

Se essa era sua desculpa para começar a se familiarizar com a especificação que irá revolucionar (ou que já está revolucionando, vide JBoss Seam) a maneira como desenvolvemos aplicações Java para Web, não é mais.

Pretendo terminar esse trabalho em breve, e conto com a ajuda de todos aqueles que queiram "reviZar" a tradução para o português do Brasil.

O trabalho de tradução é árduo e extremamente suscetível a críticas. É muito difícil encontrar traduções para alguns termos específicos da tecnologia, por isso, optei por deixar entre parênteses a versão em inglês, e, em casos extremos, sequer fazer a tradução.

Conforme o feedback da comunidade, poderei mudar essa abordagem.

sábado, 17 de janeiro de 2009

Estréia do Blog e lançamento da comunidade JBoss Brasil

É com imenso prazer que estréio meu blog com o anúncio do lançamento da comunidade de usuários JBoss do Brasil (JBUG Brasil) .

A comunidade de usuários JBoss do Brasil, um sonho antigo do meu amigo Edgar Silva, tem por objetivo reunir pessoas que utilizam as soluções open source JBoss no seu dia-a-dia e gostam de trocar experiências e fazer novos amigos, além de servir como "vitrine" de talentos, como bem dito aqui.

O lançamento, como detalhado aqui, será realizado dia 21 de janeiro de 2009 a partir das 19:00h nas dependências da Global Code em São Paulo.

Como o próprio nome já diz - Comunidade de usuários JBoss do BRASIL - , não podemos deixar de fora desse evento as pessoas residentes fora da cidade de São Paulo (como eu e tantos outros), e, pensando nisso, iremos transmiti-lo via Internet (áudio e slides) com a utilização do software Elluminate.

O Elluminate é desenvolvido em Java e instalado através do Java Web Start (espero que todos os membros da comunidade JBUG tenham o Java e o Java Web Start já configurados :-) ).

O download do software é um tanto demorado (mas depois de instalado a performance é muito boa), por isso, recomendo que entrem na "sala do evento" e façam a configuração do Elluminate antes do início do evento. Assim não perderão tempo fazendo o download. (Mais detalhes sobre a configuração do Elluminate podem ser vistos aqui)

Se você, usuário de soluções JBoss, ainda não se associou, clique aqui e associe-se.

"Vejo" vocês no evento.