segunda-feira, 30 de março de 2009

Corrida #20090330

Meu filho me acompanhou hoje durante o percurso! Mas, ele ainda está muito novo pra correr 8Km, então, ele foi de bicicleta ;-)
Não houve diminuição do tempo... Pelo contrário, tive que encher o pneu da bicicleta dele e perdi alguns minutos com isto. Mesmo assim, a corrida começou às 07:14 e terminou às 08:10, no mesmo percurso da corrida #20090927.

Material da ApacheCon Europe 2009

Ocorreu na semana passada em Amsterdã, o evento ApacheCon Europe 2009. Eu não tive a oportunidade de participar, mas este post é apenas para divulgar que já há bastante material disponível relativo a programação do evento. Tem muitas apresentações interessantes e eu, neste momento, estou começando a ler algumas das que estão disponíveis para o download (neste, neste e neste links): Também encontrei este material muito interessante sobre BDD e Wicket:

Build de aplicações Java (Parte 3)

Aplicações Java são construídas, em sua grande maioria, com scripts Ant. Eu poderia escrever um livro sobre como estes scripts podem ser criados mas, o problema é que já existem alguns, além de uma vasta literatura em forma de artigos, tutoriais e apresentações;-). O Ant foi criado como uma ferramenta para suprir as necessidades de construção de scripts de build para a linguagem Java Sua motivação maior foi a insatisfação de alguns programadores Java com o uso do Make (vai haver outro artigo para isto, em breve). Hoje em dia, ele está integrado a IDEs e, alguns deles cuidam até mesmo de escrevê-lo para nós. Além de fazer builds, o Ant participa de diversas outras tarefas: manda executar testes unitários, dispara tarefas relacionadas a metrificação do código e de sua qualidade, gera documentação, envia emails sobre o build, empacota, distribui e implanta aplicações em servidores, e ainda realiza uma infinidade de outras coisas. Este artigo não pretende, nem de longe, explicar os detalhes sobre como criar scripts Ant. Na Internet você irá encontrar diversas referências sobre este assunto, muito mais abrangentes e completas do que este simples texto, que expressa minha opinião apenas sobre alguns aspectos do Ant. Meu objetivo neste artigo é explicar porque o Ant não é mais tão produtivo, no meu ponto de vista, para a execução de builds num ambiente corporativo e o que fazer para, caso ainda necessário, utilizá-lo neste ambiente da melhor forma possível. Ou seja, eu pressuponho aqui, que o leitor já possua experiência na criação de scripts Ant e talvez esteja vivenciando alguns problemas que eu irei citar. Leia mais

sexta-feira, 27 de março de 2009

Build de aplicações Java (Parte 2)

Estou um pouco atrasado com os posts, mas hoje e ainda durante este fim de semana irei publicá-los. Nesta segunda parte, apresento uma aplicação simples, base para alguns builds iniciais e em seguida como realizar o seu build via Bash (coisa de nerds mesmo). Leia então esta segunda parte. Eu agradeço imensamente seu feedback com comentários. A terceira parte (build com Ant) também sai hoje. Em seguida, virá build com Ant + Ivy e o build com o Maven (numa versão mais complexa que a apresentada na segunda parte).

Corrida #20090327

Hoje, correndo novamente o trecho Leme/Copacabana (ida/volta), o tempo foi de 51 minutos. Começei às 06:14 e terminei às 07:05. Surgiu uma idéia interessante para o meu projeto para corredores, vendo na camisa de um corredor os dizeres Programa SulAmérica OutSide. Depois comento a respeito...

terça-feira, 24 de março de 2009

Build de aplicações Java (Parte 1)

Esta semana estarei compartilhando em meu blog, um trabalho que tenho realizado com relação a construção (build) de aplicações Java. Serão vários posts, seguindo uma ordem que penso ser cronológica em termos de ferramentas que podem utilizadas para a realização de builds. Irei demonstrar a construção de aplicações que utilizam dependências (bibliotecas java) partindo de um exemplo simples até a construção de aplicações mais complexas envolvendo o uso do Spring Framework e do JBoss Seam.

Para começar, a aplicação que será construída é muito simples e com poucas dependências. Ela é uma aplicação didática, que apresento em seminários e treinamentos aonde falo sobre Test Driven Development (TDD) e sobre práticas de Extreme Programming (XP). Para saber mais sobre TDD, leia este artigo que escrevi.

Builds podem ser realizados com várias ferramentas. Meu intuito nos próximos posts é explicar exemplos de uso e os diversos prós e contras na adoção de uma ou de outra. Começarei falando sobre um assunto pouco explorado, talvez pela sua "complexidade" que é o build de aplicações utilizando simplesmente scripts como, por exemplo, os escritos em Bash. Em seguida, falarei sobre o uso e a criação de scripts para o Make, Ant, Maven, Ivy (+ Ant), Groovy (+ Ivy), Gant (+ Ivy) e por fim, Gradle.

Esta será uma semana repleta de conhecimento acerca de builds e eu espero que, ao final dela, você tenha embasamento para passar pelo mesmo problema que estou vivenciando neste momento, que é a escolha da melhor alternativa para a migração do processo de construção de diversas aplicações Java (com vários scripts de build já desenvolvidos no Ant), só que, cada uma escrita a sua própria maneira, o que dificulta a manutenção e a evolução num ambiente corportativo.

Neste ambiente, os desenvolvedores são conservadores e procuram trabalhar geralmente adotando as ferramentas, APIs e frameworks padrão de mercado e/ou já consolidadas. Eles pensam na estabilidade e na confiabilidade de suas aplicações. Imagine que eles estão muito mais preocupados com a lógica de seu negócio e, para eles, o processo de build de uma aplicação envolvendo a obtenção dos fontes a partir de um repositório, a compilação, o empacotamento, a distribuição para as máquinas de diversos ambientes (local, desenvolvimento, homologação, produção) e a implantação dos pacotes nos servidores de aplicações destes ambientes seja um assunto que deveria ser resolvido por uma ferramenta que integrasse tais processos. Imagine também que estes desenvolvedores gostariam de ter um ambiente de desenvolvimento capacitado a gerar um build de maneira automática (se possível) e que houvesse também uma gerência de dependências e de releases da aplicação, também de forma automática. Imagine que você está responsável por implantar um processo para uma equipe como esta. O que você faria?

Parece-me que este ainda é um problema comum e freqüente em várias empresas, mesmo em algumas presentes no mercado com características mais dinâmicas em termos de agilidade na produção de software e que utilizam uma grande variação de ferramentas, linguagens e frameworks para a solução de seus problemas.

Nos próximos posts eu estarei repassando o meu ponto de vista para a solução do problema que estou apresentando, num ambiente com tais características. Será um post por dia, durante esta semana e ao final desta, apresentarei minhas conclusões. Agradeço o teu acompanhamento e feedback.

segunda-feira, 2 de março de 2009

Mais um reinício!

O ano definitivamente começou e eu, que já não tinha mais desculpas para não correr, estou reiniciando minha vida como corredor. Hoje correndo por tempo, realizei os 8Km do percurso ida/volta Fim de Copacabana/Leme em 57 min, iniciando a corrida às 05:45.