Archive for the java Category

Bom, meu site estava fora, para variar esquecimento e falta de tempo fazem com várias vezes esse blog esteja fora do ar, mas vou resolver isso em breve , mas este post é pra falar o III Natal Java Day, o evento anual de Java da cidade de Natal. Este foi um dos melhores eventos que fui nesse ano, claro que o lugar, ajuda, mas o interesse pela tecnologia estava presente em cada metro quadrado do CEFET-RN .Encontrei, revi e fiz novos amigos, entre eles: Gleydson Lima, Raphaela Galhardo, Ulisses Telemaco, Paulo Fagianni, Tim Boudreau e vários outros. É um evento que farei questão de estar presente no próximo ano.

Destaco a organização do evento, um exército de pessoas ajudando em tudo, no som, geração de imagem, recepcionamento dos palestrantes, ou seja : Perfeito! Eles transmitiram o evento pela Internet, e ainda fizeram uma Aplicação de Sorteio usando Swing que conectava no servidor para buscar as pessoas presentes na sala para realizar todos os sorteios de brindes. Em resumo meus amigos: Parabens! Espero poder ve-los novamente ano que vem.

Nesta palestra expliquei como o Java Server Faces é processado internamente, sendo assim, montei um container web no palco com 12 pessoas, onde cada pessoa era um elemento, desde o browser até o navigation-rules.xml e claro a JSF e o BackingBean, representados através de um casal. Promovemos assim uma grande interação com o público. Em breve estará disponível alguns vídeos, pelos risos e pela participação da platéia e dos componentes(as pessoas) acho que funcinou e eles gostaram :D

Publico Natal Java Day

Cada vez mais a Red Hat vem dando passos de maturidade nos mercados de Middleware e SOA, agora para solidificar ainda mais a estrutura de sistemas operacionais e nossas plataformas JBoss, a Red Hat irá contribuir ativamente no futuro e desenvolvimento com o OpenJDK.

Leia pré-release aqui.

Em 2004 foi primeira vez que vi oOpen Services Gateway Initiative - OSGI, quando avaliava uma forma de atualização de módulos(bundles) de uma aplicação, de forma ciclica e com suporte a dependências, mais ou menos como o Maven faz, ou seja, em termos gerais que cada módulo fosse um plugin para o agente executador: A Aplicação. Naquele época, avaliei alguns esforços da IBM e o Oscar Framework.

Passando vários anos, a necessidade de habiltiação de Serviços passou a ser requisito para o mercado, OSGI pode ter uma boa Aplicabilidade pra distribuição, governança, gerenciamento, gestão de ativos em termos de componentes/serviços.

Em busca de uma solução para meus brinquedos de Profiler, resolvi fazer algumas coisas com o JBoss Micro-Container, Jetty e o Apache Felix , sendo este a implementação de OSGI da Apache, e presente também no projeto Spring OSGi.

Algumas dicas do Felix:

  • Ao fazer o download, você tem que ir ao diretório bin, porém não há um .sh ou .bat, nesse momento você tem que recorer ao braço forte e digitar: java -jar felix.jar
  • O Felix vai perguntar qual o nome do seu profile (registros de serviços OSGI), para que tudo funcione, copie a basta bundle para dentro da bin e digite "bundle" apenas.
  • Pronto, Felix estará no ar.

Criando um Serviço OSGI

Basicamente você precisa primeiro pensar em Interfaces, ou seja: O contrato do seu serviço, para exemplificar, criemos uma Interface MoneyConverter.java:

JAVA:
  1. </p>
  2. <p>package br.com.edgarsilva.service;</p>
  3. <p>public interface MoneyConverter {</p>
  4. <p>public static final String BRAZILIAN_MONEY= "BRL";<br />
  5. public static final String BRITSH_MONEY= "US";</p>
  6. <p>public Double convert(Double amount, String money);</p>
  7. <p>}<br />

O OSGI precisa de um "ativador" dos seus serviços, no caso criamos um Ativador para esse pequeno serviço de Conversor de moedas, veja o exemplo:

JAVA:
  1. </p>
  2. <p>package br.com.edgarsilva;</p>
  3. <p>import br.com.edgarsilva.service.MoneyConverter;<br />
  4. import br.com.edgarsilva.service.impl.SimpleMoneyConverter;<br />
  5. import java.util.Properties;<br />
  6. import org.osgi.framework.BundleActivator;<br />
  7. import org.osgi.framework.BundleContext;</p>
  8. <p>/**<br />
  9. *<br />
  10. * @author edgarsilva<br />
  11. */<br />
  12. public class Activator implements BundleActivator {</p>
  13. <p>public void start(BundleContext ctx) throws Exception {</p>
  14. <p>Properties props = new Properties();</p>
  15. <p>ctx.registerService(MoneyConverter.class.getName(), new SimpleMoneyConverter(),props);</p>
  16. <p>}</p>
  17. <p>public void stop(BundleContext ctx) throws Exception {<br />
  18. System.out.println("Servico Parado !");<br />
  19. }</p>
  20. <p>}<br />

Veja que no método start(), retornarmos uma classe que implementa o serviço.

Alterando o MANIFEST do Jar do Serviço

Para que o container/framework OSGI reconheça seu compoente, ao contrário de descriptors via XMLs de darem medo, você precisa apenas preencher algumas informações, como no exemplo a seguir:

JAVA:
  1. </p>
  2. <p>Bundle-Name: Money Converter<br />
  3. Bundle-Description: Conversor de Valores Dolar<br />
  4. Bundle-Vendor: Edgar Silva<br />
  5. Bundle-Version: 1.0.0<br />
  6. Bundle-Activator: br.com.edgarsilva.Activator<br />
  7. Export-Package: br.com.edgarsilva.service<br />
  8. Import-Package: org.osgi.framework<br />

Com OSGI você tem a capacidade de dizer quais as dependências seu serviço têm, assim como o que do seu pacote você quer que seja público para os outros componentes do cotainer OSGI. Isso pode ajudar bastante no desenvolvimento de forma mais tranquila no que diz respeito a independência e ao mesmo tempo dependência.

Pelo o que você viu lembra bastante JMX e o modelo de MBeans do JBoss Microcontainer, falando nisso, deveremos suporta OSGI dentro do JBoss MC também, não sei dizer qual a implementação iremos usar, particularmente gostei bastante dos fontes e da documentação do Felix.

Curiosidade: Você sabia que todo o esquema de atualização de plugins do Eclipse é baseado em OSGI, além de alguns core-components de alguns Application Servers de Mercado.

Para maiores informações: http://felix.apache.org

profilerlogo

Clebert Suconic, É um JBoss Core Developer que já passou pelo JBoss Cache, JBoss Serialization e atualmente está no JBoss Messaging. Clebert é sempre uma ótima referência de talento brasileiro na JBoss,  ele foi o criador e é atual Project Lead do JBoss Profiler, a ferramenta capaz de realizar testes e profiler vários Ambientes de Servidores de Aplicações , exemplo Sun Java System Application Server e claro o JBoss AS.

Já havia usado o JBoss Profiler inúmeras vezes na minha antiga empresa, aliás o Profiler nasceu por lá , visto que Clebert também trabalhou para a Summa. Estamos agora juntos com várias pessoas da comunidade, incluindo pessoas da Europa e até Japão, trabalhando na versão 2.0 do JBProfiler.
Várias novidades, estarão vindo no JBoss Profiler 2.0, entre elas esperamos a integração 100% Java para coleta de snapshots, assim como um webconsole novo, com alguns novos gráficos e todo construido utilizando JBoss Seam. Bom, novidades deste projeto, tentarei expor um pouco a respeito delas por aqui. A principal novidade é a nova logo do Projeto. Espero que gostem.

Pierre

Pierre Fricke, Diretor de Produtos da JBoss, escreveu um ótimo artigo sobre SOA, muito mais de visão de negócio e aplicabilidades, problemas e vantagens do que sobre Tecnologia, vale a pena conferir, leia aqui:


Artigo de Pierre Fricke

O JustJava 2007 acabou, o evento na sua execução foi muito bom, a Sucesu-SP está de parabens. O Senac, apesar de longe, oferece uma ótima estrutura para um evento do porte do JustJava, que sem dúvidas ainda é o maior evento de Java do Brasil.

A única crítica ao evento está mais no Soujava, grupo do qual já fui bem mais ativo como colaborador, que foi responsável pela troca de Títulos nas palestras de Projetos Opensource que alguma empresa comercial seja o Sponsors, e isso aconteceu e eu fui uma das pessoas mais contra tudo isso, onde briguei bastante, me aborreci bastante, e ouvir várias pessoas reclamando disso comigo no evento, só me faz ter a certeza que eu então não estava errado. Por isso que muitas pessoas viram até palestra sobre o "Poodle Web ToolKit (Google)", "Frameworks Ágeis (Spring)", " Soluções JCHEFE para SOA (JBoss)". Tomara que esse tipo de coisa seja corrigida no próximo evento :) .

JustJava - Aqui Luiz Bentes, meu conterraneo

Público no JustJava

Público no JustJava

Eliane, do Marketing da Red Hat no Stand de JBoss

A minha auto-crítica foi que minha segunda palestra sobre SOA poderia ter sido bem melhor, mas problemas técnicos em projetor e no meu laptop atrapalharam bastante, espero também maior sorte pra mim na próxima vez.

Olá amigos,

Minha palestra amanha estará interessante, se tudo funcionar será melhor ainda =), vou tentar amanha instalar uma Máquina viritual Windows no meu Red Hat Enterprise Linux, para ter algumas aplicações .net interoperando com Aplicativos diversos e não somente em Java.

Para quem estiver lá, espero poder falar algumas das minhas visões sobre SOA, como por exemplo:

Não, SOA não é só WebServices! Por favor, há muito mais além disto!

Vários fornecedores tentam fala só em WebServices, WebServices, WebServices ! Porém o que fazemos com as aplicações legadas C, Cobol, C++, DataFlex, Clipper, FoxPro (overdose de nostalgia). Quem já teve que criar um conector JCA para conversar com IBM/CICS na unha entende bem que a questão de "Webseriçar" tudo não é puramente trivial ou simples como se imagina. Graças a Deus, eu tenho amigos como o Ricardo Ferreira, Fábio Velloso entre outros, que sempre me dão dicas além de conversamos muito sobre vários assuntos relacionados a SOA, e ai idéias das mais loucas acabam surgindo. Sendo assim, em um dos meus exemplos de amanha, mostrarei como aplicar um processo de BAM(Business Activity Monitoring) que no JBoss jBPM tratamos como informações acerca dos processos, instâncias, sendo assim, imagine que uma empresa usa o SugarCRM como solução, e como a maioria sabe o Sugar é escrito em PHP, porém imagine se uma empresa quer ter a um Dashboard, sobre algumas atividades dos processos de vendas de uma empresa, coisas que o SugarCRM faz muito bem. Então resolvi exemplificar um caso de SOA utilizando ESB(Enterprise Services Bus) para isso. usando o JBoss ESB 4.2, um dos projetos que vou mostrar na sexta dia 05.10 no JustJava as 16:30.

BAM como um "Dedo-Duro"

De acordo com o JavaReport (http://www.javareport.com/article.aspx?id=9238&page=) BAM seria:

Put simply, BAM is about the real-time monitoring of key business metrics. These metrics are presented to business users in a “dashboard” format and are used to revise the processes being monitored. The end-goal of BAM is a self-improving process that can learn and continue to tweak itself to become ever better

Sendo assim, a idéia aqui é saber o que o SugarCRM faz qdo fazemos algumas coisas dentro dele, como criar um Lead ou Oportunidade e etc. Para isso, primeiro criamos uma Tarefa (Task), algo muito interessante para se observar do ponto de vista de negócio.

Sugar CRM new Task

Mas ai você deve estar pensando, que truque devemos usar para saber que o SugarCRM adicionou uma nova tarefa? Você deve pensar: Vê o banco de dados Edgar seu imbecil ! Eu até pensaria nisso, mas se nosso Consumidor da informação for uma Aplicação Cobol, Oracle Forms, ou se for um SAP, um PeopleSoft ? Se você falar WebServices, juro que nossa amizade acabou agora :) .

Não que WebServices sejam ruins, mas eles tem uma função muito útil, além de confundir as pessoas, mas nesse cenário, ele poderia ser uma das opções, só que o SugarCRM até onde sei não disponibiliza um WebService pro Cobol consumir, sendo assim, a solução que vamos mostrar é mais "bruta". Como estou executando o SugarCRM no Linux, vi que se eu criar uma nova tarefa, e chamar o comando find para saber o que foi alterado no último minuto no meu file system, como abaixo:

find . -mmin -1

Eu posso ter uma lista de onde o MySQL (banco default do Sugar) guarda as informações de TAKS.
screenshot-jsilvajsilva-opt-java-redhat-products-sugarcrm-sugarcrm-451e.png

Com base na resposta, agora eu posso assumir que alterações em tasks refletem numa alteração no arquivo tasks.MYD , com base nisso, podemos criar um Gateway e um Listener para responder a este evento (estimulo), buscar uma informação via Java (JPA ou JDBC) e publicar as informações numa mensagem numa fila JMS, ou chamar um Invoker que chame um conector JCA para Cobol, PeopleSoft ou qualquer outro.

Bom o resto e a demo final vocês poderão confirir amanha, agora irei recuperar o cérebro treinando meu bom e velho Jiu-Jitsu, vejo vocês amanha!

Beijo no coração

Edgar

Hoje foi o primeiro dia do JustJava, o evento está bastante organizado. E esperamos um grande público e visita no nosso stand da JBoss no evento. Hoje palestrei com a Fabiane Nardon, que falou bastante quase não sobrando tempo pra mim :) , mas tudo bem, sei que ela adora a palestra que fizemos no JavaOne 2007 , só que dessa vez na cidade que moramos e em nossa tão querida língua Portuguesa! Vejo vocês agora só na sexta, no último dia, afinal alguém tem ficar no escritório para trabalhar =). Abaixo umas fotos com resolução máxima permitida do celular:

JustJava200703-10-07_1614.jpg03-10-07_1615.jpg

No desenvolvimento de integração de aplicações usando ESB(Enterprise Service Bus), quem não gostar de XML terá problemas sérios, visto que várias dos frameworks e ferramentas usam extensívelmente XML como seus recursos de configuração.

Uma das features já solicitadas para o JBoss ESB é o uso de Annotations, é uma requisição importante que tenho trabalhado em testes utilizando novas features de Deployer do Micro-Kernel, na evolução deste trabalho publico algo por aqui, mas por hora veja os novos consoles presentes no JBoss-ESB 4.2.

JBoss ESB Config

Features como estas visam posicionar o JBoss ESB não mais como uma solução opensource para ESB como o Mule, e sim como um grande provedor de soluções como o BEA AquaLogic Service Bus. Durante o JustJava essa semana, na palestra das 16:30 no auditório nesta sexta dia 05, estaremos mostrando algumas coisas deste produto.

Abraço a todos

No mes de Setembro estarei na minha cidade natal na quarta edição do BelJUNGLE, o qual desta vez receberá personalidades da comunidade Brasileira como: Mauricio Leal e Vinicius e Yara Senger(GlobalCode). Essas pessoas com certeza farão uma das melhores versões do evento, sem falar no evento principal que é a Semana Paraense de Informática - SEPAI.

Em outubro, com realização da Sucesu-SP acontece o maior evento de Java do Brasil, pelo menos o mais popular: JustJava. A grade já está publicada. Depois de alguns contratampos e discussões, tive duas paletra ainda no evento:

EJB 3: Dicas, truques e Novos Design Patterns JustJava 2007 03/10/2007 São Paulo
Soluções opensource Java EE para SOA JustJava 2007 05/10/2007 São Paulo

A primeira, palestro com minha grande amiga Fabiane Nardon, repetindo a palestra do JavaOne 2007, mas agora em Portugues, já a segunda, eu falarei de soluções opensource baseadas em projetos JBoss no que tange SOA.

Espero que as palestras agradem a todos, mas espero muito mais ainda que todos gostem do evento, sei o quanto pessoas como o Mauricio Leal, dedicaram-se apesar dos pesares na realização deste evento.

Vejo vcs lah!

Dias atrás publiquei no meu blog do java.net um post que tenta ensinar jBPM para as pessoas baseado/comparando ao Struts Framework. Uma das melhores formas de aprendizado ainda é com base na comparação, esse é um dos exemplos que tenho mostrado no Brasil, e até essa semana em Londres, para mostrar o quao simples pode ser uma máquina de processos.

Linguagens de Processos

O JBoss jBPM é mais que um framework de BPM, de fato vamos além disto, onde temos uma máquina de execução de processo agnóstica do ponto de vista de que linguagens, hoje suportamos JPDL, BPEL e Seam Flow, com a ajuda do JBoss ESB também podemos até suportar algo baseado no Rules Flow, ou na sua linguagem desde que você forneça o provider para tal. Ainda que BPEL seja uma linguagem apontada para o "padrão", na minha ótica é uma linguagem "não elegante"[1] e com vários buracos e necessidades ainda nao supridas, porém se seus processos envolvem apenas WebServices em termos de orquestração, BPEL atende, porém se você precisar de interações com usuários (Swinlanes), BPEL começa a ser problemático [1]. Ao passo que com JPDL, que é a linguagem padrão de representação do processo no jBPM, necessidades como estas relacionadas a tarefas associados a humanos(usuários) é algo extremamente simples.

Básico de um Processo

Longe da pretenção desse post explicar Finite State Machine ou Diagramas de Estado, mas estes conceitos em mente lhe deixam claro a cerca de processos. Basicamente tenha em mente que um fluxo tem um início e fim, e nesse caminho uma série de caminhos normais e fluxos alternativos. Veja o simples exemplo da entrega de um relatório de despesas:

Processo

Entre o início e fim, temos uma atividade, que tem o nome "entrega-report". Esta caixinha por sua vez possui eventos, estados, informações, variáveis que podem ou não estar associados a ela. Por exemplo, para sair dessa caixinha, um bean com as informacoes do relatório deve estar preenchida.

Criando um Servlet para ser o Gerenciador/Controller de execução de Processos

Para explicar a máquina de processos, vamos criar um servlet inspirado no ActionServlet do Struts, que pega o valor da ação com base em um parametro, e entrao chama todo o engine do jBPM e faz a máquina ir para o tarefa do processo apontado através de uma simples URL ou Form Html, veja o exemplo:

JAVA:
  1. public class ServletBPM extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
  2.  
  3. ProcessDefinition processDefinition;
  4.  
  5. static JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance();
  6.  
  7. static JbpmContext bpmContext = jbpmConfiguration.getCurrentJbpmContext();
  8.  
  9. ....
  10.  
  11. public void init() throws ServletException {
  12. super.init();
  13. processDefinition =
  14. ProcessDefinition.parseXmlInputStream
  15. (getServletContext().getResourceAsStream
  16. ("/WEB-INF/processes/reembolso/processdefinition.xml"));
  17. }
  18.  
  19. protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  20.  
  21. ProcessInstance instance =
  22. new ProcessInstance(processDefinition);
  23.  
  24. instance.getContextInstance().setVariable("request", request);
  25. instance.getContextInstance().setVariable("response", response);
  26.  
  27. Token token = instance.getRootToken();
  28.  
  29. String acao = request.getParameter("action");
  30.  
  31. token.signal(acao);
  32. }

Como você pode ver, antes de chamar o método signal, que funciona como um "pescoção" ou um "pedala robinho" na tarefa do processo, fazendo com que ela seja executada, nos adicionamos o request e o response do Servlet no contexto da máquina de processo. Isso serve para mostrar a idéia que você pode injetar o que quiser no contexto da execução do processo, assim como você faz no contexto de uma sessão http.

Criando a Action (ActionHandler)

No jBPM o que basicamente você precisa é criar uma ação que no nosso caso vai ser invocada depois que sairmos(node-leave) da tarefa(Caixinha), e veja que do jBPM context podemos dizer até para que página a aplicação deve ir pois temos tudo que precisamos para fazer o jBPM interagir num contexto Http.

JAVA:
  1. import javax.servlet.RequestDispatcher;
  2. import javax.servlet.http.HttpServletRequest;
  3. import javax.servlet.http.HttpServletResponse;
  4.  
  5. import org.jbpm.graph.def.ActionHandler;
  6. import org.jbpm.graph.exe.ExecutionContext;
  7.  
  8. import br.com.redhat.bpm.pojo.Reembolso;
  9.  
  10. public class EntregaReportAction implements ActionHandler {
  11.  
  12. HttpServletRequest request;
  13.  
  14. HttpServletResponse response;
  15.  
  16. private static final long serialVersionUID = -2649703227240922449L;
  17.  
  18. public void execute(ExecutionContext ctx) throws Exception {
  19.  
  20. //getting an HttpResponse from Context
  21.  
  22. request = (HttpServletRequest) ctx.getVariable("request");
  23.  
  24. response =  (HttpServletResponse) ctx.getVariable("response");
  25.  
  26. Reembolso r = new Reembolso();
  27.  
  28. r.setFuncionario(request.getParameter("funcionario"));
  29.  
  30. r.setPeriodo(request.getParameter("data"));
  31.  
  32. r.setValor(new Double(request.getParameter("valor")));
  33.  
  34. JPAResolver.getResolver(Reembolso.class).save(r);
  35.  
  36. RequestDispatcher rd = request.getRequestDispatcher("aguardeProcessamento.jsp");
  37.  
  38. rd.forward(request, response);
  39.  
  40. }

Espero que esse exemplo, possa demonstrar a simplicidade de usar máquinas de processos, daqui pra frente estou certo que você poderia usar esta mesma abstração para Actions do Swing, ou usar isso com qualquer outra tecnologia cliente.

[1] - Porco, bem porco!

[]s

Edgar in Action

Veja todas as fotos do evento no Flickr do Fernando Meyer. Os meus slides estão aqui . Vou pedir para meus amigos publicarem também em seus respectivos blogs.

Gostaria de agradecer a marcante presença de todos no Soujava, no último dia 15 na Sucesu-SP, foram cerca de 170 pessoas, um recorde nas reuniões do Soujava. Algumas pessoas sabem alguns stress que tivemos, principalmente porque é difícil ver uma empresa centrada e focada em negócios em torno de OpenSource e que atraia tanto público assim.... Paciência. Mais uma vez obrigado, desculpem as piadas =) , mas se elas não acontecerem todos dormem =).

Vou falar com o pessoal do MGJUG e RioJUG, para fazer algo similar em Belo-Horizonte e Rio de Janeiro, porém terá que ser só comigo, o que é uma pena, pois é difícil reunir todo o time de JBoss do Brasil como foi na quinta, mas isso voltará a se repetir no JustJava em São Paulo.

Até a Próxima

Tenho trabalhando numa demo de SOA (Service Oriented Architecture), para demonstrar em clientes e eventos algumas situações que clientes enfrentam num cenário de SOA.

O nome da solução é o MegaBroker, o qual espero torná-lo open-source com fins para estudos das pessoas, assim como um "BluePrints"-LIKE.el
Simulamos uma Aplicação JME, na qual um Midlet envia uma Mensagem para um WebService, o qual publica essa mensagem num diretório especifico.

SOA ME

Este Midlet chama uma função de um WebService que publica a Mensagem em formato CSV num Diretório no servidor:

JAVA:
  1. /**
  2. *
  3. * @author jsilva
  4. */
  5. @WebService()
  6. public class ProposalProducer {
  7.  
  8. private SimpleDateFormat formatter;
  9. /**
  10. * Web service operation
  11. */
  12. @WebMethod
  13. public String publish
  14. (@WebParam(name = "proposal")
  15. String proposal) {
  16.  
  17. formatter = new
  18. SimpleDateFormat("hhmmsszzza");
  19. try {
  20. ("/home/jsilva/NotBackedUp/transacaoes/"+
  21. formatter.format(new Date())+".txt"));
  22. out.write(proposal.toString());
  23. out.close();
  24. } catch (IOException e) {
  25.  
  26. e.printStackTrace();
  27. return "FAIL";
  28. }
  29. return "OK";
  30. }

Criando um Listener via JBoss ESB

Basicamente nesta DEMO, o que acontece é que o WebService publica a mensagem enviada pelo Celular num pasta qualquer, esta mensagem é no formato texto, no caso um simples CSV. O JBoss ESB captura este evento de gravacao de arquivo na pasta e invoca uma ação de um Bean qualquer. o conteúdo da mensagem torna-se publico numa fila de mensagem, onde várias financeiras pode estar "escutando", e cada uma delas da sua forma, uma pode ouvir XML, outra pode esperar por CSV, ou ainda por quaquer formato estrutura que o JBoss ESB consiga transformar com a ajuda de Smoocks ou de um Adaptador qualquer.

fina.png

A financeira A ou B pode devolver o resultado no mesmo BUS ou em outro, ou ainda numa fila de JMS, onde tudo isto seria totalmente agnóstico e automaticamente roteável, devido as características do JBoss ESB.

 Com as novas tecnologias e formas de comunicação de canais entre as empresas e consumidores, aplicações como estas serão cada vez mais necessárias, assim tecnologias e projetos como: JBoss ESB, JBoss Messaging, JBossWS, JBoss AS podem resolver seu dia-a-dia de forma simples.

 

Olá amigos, essa é a segunda estrevista com meus colegas do time de JBoss no Brasil, na oportunidade, Flavia Rainone responde algumas perguntas para a comunidade Java no Brasil. O que eu posso falar da Flavia é que ela é uma pessoa super gente boa, ainda que trabalhemos em áreas e projetos distintos, sempre sobra tempo, sejam pra um café para atualizar as piadas com as outras pessoas do time.
1 - Flávia, o ponto aqui é mostrar que você é uma pessoa normal como qualquer outro(a) desenvolvedor(a) da comunidade, sendo assim nos fale a repeito do que for interessante da sua vida pessoal, idade, hobbies, manias e etc?

Tenho 24 anos, nasci e cresci em São Paulo. Tenho amigos, família, namorado e gosto de passar o meu tempo com todos eles. Como todo mundo tenho os meus defeitos e as minhas qualidades. Eu me considero uma pessoa alegre, criativa, amiga, sincera... porém um pouco perfeccionista, teimosa, crítica e por aí vai (risos).
Mania é uma pergunta difícil... acho que a minha principal mania é falar demais (mais risos). Quanto a hobbies, não tenho tido muito tempo disponível para isso, já que estou trabalhando no mestrado na maior parte do tempo livre. No que resta dele, as minhas atividades são as mais variadas possíveis. Eu gosto de sair, ir ao cinema, teatro, além de freqüentar
bares e restaurantes de São Paulo. Quando estou em casa, gosto de assistir televisão, ler livros e revistas dos mais variados assuntos.

2 - Faça um breve resumo de sua carreira antes de você entrar para a JBoss, a division of Red Hat ?

Há 5 anos trabalho com tecnologias Java. Me formei em Bacharelado em Ciências da Computação pela Universidade de São Paulo, em 2003, com menção honrosa. Logo após, dei continuidade aos estudos através de um Mestrado em Programação Orientada a Aspectos Dinâmica, sob a orientação do Prof Dr Francisco Reverbel. Durante esse trabalho, entrei em contato com o JBoss AOP e me tornei parte da comunidade JBoss. Em novembro de 2006 fui integrada à equipe de desenvolvedores do JBoss, uma divisão da Red Hat, como Senior Software Engineer. Além da área de programação orientada a aspectos, atuei nas áreas de bioinformática, medicina diagnóstica e internet banking.

3 - Open-Source é importante para você? Se sim, como o Opensource mudou o a concepção da tecnologia nos dias de hoje?

Software open source é extremamente importante para mim. Entrei em contato com esse tipo de software no começo da faculdade, e desde então me tornei adepta. Acredito que esse tipo de software tenha não só uma crescente importância na minha carreira, como também no cenário da ciências da computação como um todo.

4 - Como você ingressou no projeto JBoss AOP ? Você já começou ganhando um salário para desenvolver isto?

Bom, sabemos que esse tipo de software cresce cada dia mais no mercado mundial, e considero isso essencial para a popularização da computação, inclusive em comunidades carentes. Por exemplo, aqui no Brasil, pouquíssimas pessoas têm condição de pagarem por um software completo e de qualidade. Trata-se de uma elite, pois software pago é extremamente
caro.
Felizmente, com o software open-source, as pessoas dispõem cada vez mais de ferramentas gratuitas para realizar as suas tarefas diárias. Isso permite o acesso real a uma tecnologia de ponta, dado que softwares open-source atraem a participação de pesquisadores, pessoas que estão interessadas nas novas tecnologias e em criar novas soluções. Basta ter vontade para colaborar. Além de tudo, o software open source também permite o aprendizado. Pessoas interessadas em aprender computação estão sempre convidadas a baixar o código fonte de um projeto open-source e o examinarem por si mesmas. Foi assim que eu aprendi como o JBoss AOP funciona, por exemplo. Resumindo, o software open source está ocupando um espaço crescente no mercado e acredito que isso se deve ao fato de ele não se restringir somente a linhas de código. O valor maior de um software open -source são os serviços que ele agrega e que podem ser utilizados por por toda a sociedade, desde os usuários finais até os desenvolvedores.

5 - Quer dizer então que a forma mais fácil de entrar no projeto é mandar o curriculum para você ou seu gerente?

A forma mais fácil é participar dos fórums e estar disposto a colaborar. Não é necessário enviar currículo. Nós do Grupo JBoss somos bastante abertos a contribuidores. Em geral, com alguns fix você pode ter acesso ao nosso repositório svn.

6 - Como é o dia-a-dia de um Core-Developer de produtos da JBoss e morando no Brasil?

Acredito que o dia-a-dia seja bem similar ao dia-a-dia de qualquer outro desenvolvedor do JBoss. Trabalhamos bastante, há sempre muito a ser feito. Temos a escolha de trabalhar em casa, embora particularmente eu goste de ir ao escritório com freqüência e encontrar os meus colegas de São Paulo. Não tive chance de viajar a trabalho ainda, já que o meu ingresso no JBoss como Core Developer é recente, mas acredito que terei algumas viagens pela frente, para participar de conferências como o JBoss World e de alguns cursos.

7 - Qual mensagem você deixa para vários desenvolvedores da comunidade Java como forma de incentivo profissional?

A mensagem que eu deixo é que basta querer participar para se tornar um contribuidor do JBoss. O JBoss, como todo projeto open source, tem listas de discussões, fóruns, muitas funcionalidades a serem implementadas em todos os subprojetos, além de uma comunidade aberta. A verdade é que estão todos convidados para participar desse grande grupo que é o JBoss.
Flavia Rainone
Flavia Rainone - Core Developer do JBoss AOP

No último dia 02/08, estive em Brasília no moderno auditório da FACITEC, na oportunidade apresentando uma palestra sobre SOA, com o título: JBoss: Uma Avalanche de Soluções para SOA . O público além de receptivo, pareceu bem interessado no assunto, vide o número de e-mails solicitando as palestras e exemplos.

Basicamente, falamos sobre o JBoss AS, jBPM, JBoss Portal, JBoss Rules, JBoss ESB, MetaMatrix e MobiCents. Para o Drools(JBoss Rules), mostramos um exemplo de DSL onde as regras são escritas em "Português". A didática do exeplo de jBPM mostra uma analogia ao Struts, mas ao invés de usar o Struts-Config.xml, usamos o process-definition.xml onde as ações são tarefas, e através de um ActionHandler ao invés de uma classe Action, realizamos a execução de atividades dentro de uma Aplicação Web. o JBoss Portal, também foi mostrado, como solução "pronta-de-uso" para um engine de Portal. Veja que os aspectos de SOA tratados aqui, são meramente técnicos, não esqueça de vários outros artefatos que são fundamentais para poder dizer que você participa de um projeto mediante tal grupo de disciplinas.

Gostaria de agradecer a Daniel de Oliveira, pela oportunidade, e sempre que possível estarei atendendo neste canal importante da comunidade Java brasileira.

Edgar palestrando em Brasilia 02/Ago 2007

Público no DFJUG

Recodar é viver, então para quem não foi, ou quem esteve lá, aqui está minha palestra de 2005 no JustJava daquele ano. Cláudio, muito obrigado!


Online Videos by Veoh.com

Olá amigos, é com grande prazer que disponibilizo algumas entrevistas com meus amigos do time JBoss no Brasil, o primeiro deles é o Edson Tirelli, Core Developer do JBoss Rules, que nesta entrevista fala um pouco do seu trabalho com e para a Comunidade, além de seu trabalho na RedHat Brasil.


1 - Edson noss fale a repeito do que for interessante da sua vida pessoal, idade, hobbies, manias e etc?

Tenho 28 anos, sou casado, nasci em Santa Catarina e moro em São Paulo desde 2001. Curto muito viajar (eu e minha esposa adoramos praias desertas (difícil) e de águas calmas, para mergulhar). Gosto muito de assistir filmes e tenho um grupo de amigos que se reúne frequentemente para jogar eurogames.


2 - Faça um breve resumo de sua carreira antes de você entrar para a JBoss, a division of Red Hat ?

Me formei Bacharel em Ciências da Computação pela Universidade Federal de Santa Catarina no fim de 1999 e logo depois fui contratado pela Automatos. Fui trabalhar no Rio com desenvolvimento de sistemas de gerenciamento de Servidores de Missão crítica. Um trabalho bastante desafiador e de baixo nível, mas muito interessante. Em 2003, já em São Paulo, comecei a trabalhar na vertical de Telecom e fui para Convergys, uma grande multi-nacional no desenvolvimento de sistemas de Billing para Telecom. Lá atuei até 2004 como Gerente de Desenvolvimento. De lá fui para a Auster, que também desenvolve sistemas para a vertical de Telecom, trabalhando como Arquiteto de Soluções. Em todo este tempo, tive oportunidade de trabalhar com tecnologias que vão do C/C++ em ambientes unix pouco conhecidos como o Tru64, até aplicações java em cluster rodando em Mainframes zOS. Foi tudo sempre muito divertido.


3 - Open-Source é importante para você? Se sim, como o Opensource mudou o a concepção da tecnologia nos dias de hoje?

Comecei a trabalhar com open-source em 2002, justamente com o JBoss AS. De lá pra cá, minha impressão é de que as comunidades se fortificaram, a disponibilidade e a qualidade dos produtos aumentou e os modelos de negócio em torno do software open-source se solidificaram. Acho que o software open-source funciona cada vez mais como um catalizador na indústria de TI, acelerando a inovação e gerando demanda por alta tecnologia. Além disso, devo dizer que não conheço uma empresa sequer que consiga agregar a proporção de profissionais de qualidade que um bom produto open source consegue. Desenvolvedores open-source contribuem não porque são obrigados, mas porque gostam do que fazem, e isso por si só já é o maior estímulo possível para um trabalho bem feito. No campo pessoal, devo dizer que nunca aprendi tanto tecnicamente como nos últimos anos, desde que comecei a contribuir. Esses mesmos profissionais de alto nível técnico, de bom grado, ensinam e ajudam a todos os que se dispõem a contribuir também, passando adiante conhecimento, e impulsionando ainda mais a inovação. Tal ambiente é muito diferente de um ambiente corporativo tradicional, onde muitas vezes, infelizmente, a competição sobrepuja a inovação como maior objetivo de alguns profissionais.

4 - Como você ingressou no projeto Drools (antigo nome do JBoss Rules)? Você já começou ganhando um salário para isso?

Foi em 2004. A empresa em que eu trabalhava estava projetando um sistema especialista e eu fui encarregado de pesquisar e definir a plataforma e as tecnologias que adotaríamos. Ao final da avaliação, o Drools foi um dos produtos adotados. Comecei a utilizá-lo como usuário, mas me empolguei tanto com a área de IA e os Engines de Regras que acabei me juntando a comunidade e em 2005, comecei a contribuir para o projeto como um hobby. Não recebia salário por isso e contribuia em minhas horas vagas e fins de semana, mas acho que foi aí que entendi o valor de se tornar um desenvolvedor open-source. Construir algo que ajudará milhares de pessoas mundo afora e saber que é você quem está fazendo a diferença. Entrar em contato direto com as pessoas que você vê nos sites, lê nos livros, vê na televisão, e descobre que são pessoas como você. Aprender com elas (como alguns dizem: "beber direto da fonte!"), crescer profissionalmente, e quem sabe um dia, ser também você um ponto de referência para a comunidade mundial. Alguém que fez a diferença.
Em 2006, entrar para a Red Hat foi uma realização. Significou para mim, poder fazer em tempo integral aquilo que eu fazia somente por hobby. Significou entrar no olho do furacão. Entrar em uma das empresas que está no centro do movimento open source e que investe em seu crescimento e maturação. Realmente foi muito bom.


5 - Quer dizer então que a forma mais fácil de entrar no projeto é mandar o curriculum para você ou seu gerente?

A melhor forma é juntar-se a comunidade. Escolha um projeto que tenha a ver com áreas de interesses suas. Entre no IRC, fóruns e listas de discussões desse projeto. Conhecimento e experiência prévios são totalmente dispensáveis. Os desenvolvedores open-source são geralmente muito prestativos e procuram sempre ajudar, especialmente os novos usuários e contribuidores. O importante é gostar do que se faz, ser pró-ativo e não ter vergonha de aprender. Trabalhar em pesquisa e desenvolvimento (R&D) é trilhar caminhos nunca antes trilhados. É gerar conhecimento e moldar a tecnologia. Os projetos open-source não possuem um dono. Todos podem contribuir, e assim que começar a contribuir, você passa a fazer parte da equipe. É claro que existem muitas necessidades já mapeadas em projetos open-source, e conversando com a equipe de desenvolvimento de cada projeto, estes podem indicar áreas e tarefas pelas quais você pode começar a contribuir e que ajudarão no início de seu trabalho.

A Red Hat por sua vez investe constantemente nos projetos open-source através da contratação dos contribuidores mais prolíficos. E o melhor de tudo, como citei anteriormente, é que estes contribuidores são contratados para fazer em tempo integral aquilo que faziam como um hobby. Ou seja, seu currículo deixa de ser um papel e passa a ser o resultado do seu trabalho.


6 - Como é o dia-a-dia de um Core-Developer de produtos da JBoss e morando no Brasil?

Confesso que é bastante diferente de todos os trabalhos que já tive. À começar pela logística: os principais contribuidores do Drools/JBoss Rules ficam no Brasil, Canadá, Inglaterra e Austrália, com alguns contribuidores espalhados em outros países do mundo. Nosso principal meio de comunicação é o IRC, mas também usamos VoIP, IM e e-mail. A RedHat tem escritórios no Brasil e alguns dias por semana os desenvolvedores brasileiros se encontram para trabalhar no escritório. Nos outros dias, trabalhamos remotamente em home office. É impressionante como é bom e o quanto aprendemos quando passamos a trabalhar em projetos onde as barreiras geográficas desaparecem. Dos aspectos técnicos até a troca de experiência cultural entre a comunidade, o aprendizado é contínuo.


7 - Qual mensagem você deixa para vários desenvolvedores da comunidade Java como forma de incentivo profissional?

O Brasil é sem dúvida nenhuma um expoente em termos de desenvolvimento open-source e tecnologia Java. Vemos isso todos os dias, de projetos e contribuições fazendo sucesso mundo a fora, até eventos e convenções como o JavaOne onde a presença brasileira é sempre marcante. Então, para quem não participa ainda, junte-se a nós. Entre em contato, comece a contribuir e coloque o seu nome na história. Venha fazer a diferença!

Edgar: Muito obrigado Edson pela Entrevista!


Edson Tirelli
Edson Tirelli - Core Devoper JBoss Rules.

Como sou péssimo em games, eu substituo esse tempo com algumas brincadeiras como essas daqui: Meu amigo Bruno Gregory de Brasília, tinha que carregar uma WAR dentro de uma classe Java! Como assim? É isso mesmo, via uma classe Java usando o Jetty você pode rodar um Web Container com todas as funcionalidades pertinentes ao mesmo.

O diferencial dessa aplicação é que sua(s) classe(s) devem ser o WebContainer, então questões de Classloaders por exemplo, devem ser tratadas pelas suas classes.

Além da classes do Jetty, você deve lembrar de por no classpath os jasperC (Compilador de JSPs), no caso de sua aplicação trabalhar com JSPs.

Veja a classe que executa um webcontainer diferetemente de digitar "catalina start" do TomCat :)

JAVA:
  1. import org.mortbay.jetty.Connector;
  2. import org.mortbay.jetty.Handler;
  3. import org.mortbay.jetty.Server;
  4. import org.mortbay.jetty.handler.DefaultHandler;
  5. import org.mortbay.jetty.handler.HandlerCollection;
  6. import org.mortbay.jetty.nio.SelectChannelConnector;
  7. import org.mortbay.jetty.webapp.WebAppClassLoader;
  8. import org.mortbay.jetty.webapp.WebAppContext;
  9.  
  10. public class ContainerExecutor
  11. {
  12. public static void main(String[] args)
  13. throws Exception
  14. {
  15. Server server = new Server();
  16.  
  17. Connector connector = new SelectChannelConnector();
  18. connector.setPort(8080);
  19. server.setConnectors(new Connector[]{connector});
  20.  
  21. WebAppContext webappcontext = new WebAppContext();
  22. webappcontext.setContextPath("/demo");
  23. webappcontext.setWar("demo.war");
  24.  
  25. WebAppClassLoader loader = new WebAppClassLoader(