Archive for August, 2006

Leiam a dica de como fazer isto aqui [inglês]

Há 2 dias comecei um projeto que o code-nome ainda é GBrails (Greenbox On Rails).

A inspiração/metáfora vem do RubyOnRails, que é uma ferramente bem produtiva, apesar de alguns problemas de deployment.

Vários, eu disse váaaaarios usuários questionam, as razões pelas quais o Greenbox roda tao “plugado” no Netbeans, há vários motivos, mas este questionamento comecou aqui mesmo na empresa, onde há pessoas que usam o InteliJ IDEA e o Eclipse.

Havia um projeto de um desenvolvedor do Greenbox de tornár o que há para o NetBeans, real para o Eclipse, infelizmente o foco dele teve que ser um pouco diferente.

Bom, resolvi então criar algumas coisas para o mundo Eclipse, pelo menos montar uma forma simples de usar o Greenbox, dentro desta IDE.

Greenbox OnRails - Requisitos

1 - Usuário faz o Download de zip ou tar.gz

2 - Decompacata numa pasta por exemplo /opt/java/gbrails

3 - A estrutura desta pasta deve ser:
-build.xml
-build.properties
-web [arquivos app web ]
-src [arquivos fonte ]
-lib [bibliotecas (*.jar)]
-gb.sh ou gb.bat [utiliário shellscript e cmd(win)]
-structure [ pasta contendo a estrutura do projeto com arquitetura JSF+Spring+hibernate]
-projects [pasta com o projeto com build.xml, libs, src, xmls e etc de base para projetos novos, use a como workspace no eclipse]

4 - Criando um projeto:

./gb.sh create-project locadora =>Resultado: Deve criar uma pasta com nome locadora na pasta projects

5 - Na pasta project/locadora/src/app/ crie uma classe chamada TipoPagamento.java, e copie o seguinte código:

@Greenbox(tableName="tipo_conta")
public class TipoConta {


@GreenboxField(primaryKey="yes",columnName="codigo",label="Codigo")
public Integer codigoConta;

@GreenboxField(columnName="nome",label="Nome da Conta") public String nomeConta;

6 - Agora execute ant gb-generate no seu projeto Eclipse

7 - Verifique Sources Gerados.

Basicamente, estes sao os passos do GBRails.

Basicamente o que fiz foi criar uma nova Task Ant que descente de Javac, e processar as anotacoes dentro desta task, executando os parsers dos templates velocity. O resultado está satisfatório. Uma feature que devo implementar, é um controle de comparacao, para have restrições para evitar geração duplicadas, como NAO acontece na task Javac, devido a um método especial da mesma[1].

Registrando mais uma vez, que quem quiser receber o beta para realizar testes, basta enviar um e-mail para edgar (em) summa-tech.com , que disponibilizarei um endereco para baixar esse EARLY-ACCESS, cheio de bugs para que vocês ajudem e colaborem com um projeto que pode BENEFICIAR bastante voces.

[]’s

Edgar


[1] protected void scanDir(File srcDir, File destDir, String[] files)

Como as traduções para esse texto são péssimas, aqui a orginal:

- Chuck Norris serializes objects straight into human skulls.
- Chuck Norris doesn’t deploy web applications, he roundhouse kicks them into the server.
- Chuck Norris always uses his own design patterns, and his favorite is the Roundhouse Kick.
- Chuck Norris could use anything in java.util.* to kill you, including the javadocs.
- Chuck Norris can hit you so hard your web app will turn into a swing application, and a very bad swing application containing lots of icons of human skulls.
- Chuck Norris demonstrated the meaning of Float.POSITIVE_INFINITY by counting to it, twice.
- A synchronize doesn’t protect against Chuck Norris, if he wants the object, he takes it.
- Chuck Norris doesn’t use javac, he codes java by using a binary editor on the class files.
- Chuck Norris’ java code never needs to be optimized. His code is so fast that it broke the speed of light during a test run in Sun’s labs killing 37 people.
- When someone attempts to use one of Chuck Norris’ deprecated methods, they automatically get a roundhouse kick to the face at compile time.
- The java.lang package originally contained a ChuckNorris class, but it punched its way out the package during a design review and roundhouse kicked Bill Joy in the face.
- Chuck Norris never has a bug in his code, EVER!
- Chuck Norris doesn’t write code. He stares at a computer screen until he gets the progam he wants.
- Code runs faster when Chuck Norris watches it.
- Chuck Norris’ binary edited classes ignore Java bytecode verifier.
- Chuck Norris methods doesn’t catch exceptions becuase no one has the guts to throw any at them.
- Chuck Norris will cast a value to any type just by staring at it.
- If you get a ChuckNorrisException you’ll probably die.
- Chuck Norris is the only one who can use goto and const in Java.
- Chuck Norris can compile Java code in .NET Framework, obviously just by staring at it.
- Chuck dont need to catch an Exception because Java is afraid of the “flying tornado kick” at the moment it throws
- Chuck Norris’s code can roundhouse kick all other Java Objects’ privates
- Java visibility levels are public, default, protected, private and “protected by Chuck Norris”, don’t try to access a field with this last modifier!!
- Chuck Norris eats JavaBeans and Roundhouse Kicks JavaServer Faces!
- Chuck Norris can divide by 0!
- Garbage collector only runs on Chuck Norris code to collect the bodies.
- Chuck Norris code uses agressive heap natively
- Every single line code of Chuck Norris runs in real time. Even in a multi threading application.
- When a CPU load a Chuck Norris class file, it doubles the speed.
- Chuck Norris can execute 64bit lenght instructions in a 32bit CPU.
- Chuck Norris implements “Indestructible”. All the other creatures implements “Killable”.
- Chuck Norris only program Java web applications to get a .WAR in the end.
- Chuck Norris once roundhouse kicked a Java class very hard. The result is known as a inner class.
- Chuck Norris can do multiple inheritance in Java.
- JVM never throws exceptions to Chuck Norris, not anymore. 753 killed Sun engineers is enough.
- Chuck Norris doesn’t need unit tests because his code always work. ALWAYS.
- Chuck Norris workstation has so memory and it’s so powerful that he could run all java applications in the world and get 2% of resources usage.
- Chuck Norris codes generics since 1.3.
- Chuck Norris’ classes can’t be decompiled… don’t bother trying.

No último JavaOne (2006), várias pessoas me perguntavam:

É verdade que quase tudo no Brasil é Gratuito e OpenSource ?

A resposta quase sempre era: “Sim e as empresas estão convergindo para essa realidade, tanto que venda de produtos hoje no Brasil é uma tarefa ardua e difícil”.

Os jargões ManagedOpenSource ou OpenSource 2.0, servem para muitas empresas justificarem o empacotamento destas soluções e ganharem com serviços. Isso é errado? No meu ponto de vista Não.

Ora Edgar, então o que é errado então na sua visão?

Não vejo nada como muito errado, mas uma coisa que é super estranha é capturar vários projetos OpenSource, juntar num NOVO produto, e esse produto ser completamente fechado, vendido e pior: Super Caro! :)

Pegando um caso como a Summa Technologies, ela possui um framework de produtividade focado em cenários corporativos chamado: Genesis, o qual usa uma séria de frameworks OpenSource, entre eles:

  • AspectWerkz
  • Jakarta Commons
  • XDoclet
  • Ant
  • Thinlet
  • BCEL
  • CODEC e vários outros

Sendo assim, nada mais justo que o Genesis seja também OPEN SOURCE.

Caso tão ruim quanto vender, são os FORKS, isso acontece quando você pega um projeto, altera, melhora em seu benefício, e nem ao menos pergunta para os commtters se alguma de suas melhorias podem ser devolvidas a árvore principal. Também a quebra de compatibilidade é uma forma de Fork, ou seja, alterando classes base, impedindo que co-exista com a versão “original” do projeto.

Atuando como desenvolvedor do Greenbox, eu já passei por situações super complicadas umas 3 vezes no Brasil, com FORKS absurdos, e pior, alguns deles EFETIVAMENTE, muito bons, porém muito longe do CVS do projeto, não prejudicando, mas também não ajudando uma porção de pessoas e empresas na comunidade.

Tenho que terminar urgentemente o módulo que suporta relacionamentos no Greenbox, pois isso vai pertmitir novas arquiteturas, entre elas:

  • JBoss Seam
  • Wicket + Spring + Hibernate
  • Genesis + JSF

A mensagem final é: Ganhe o máximo de $$$ que puderes com OpenSource, mas não esqueça dos princípios básicos, que não é ser comunista, mas tentar ajudar, tentar contribuir de alguma forma, seja com testes, documentações, samples, qualquer forma de ajudar é sempre válida! É sempre mais bonito, cortez poder jogar limpo com os desenvolvedores, comunidade e mercado em geral! Pense nisto!

Depois de exatos 4 anos, eu voltarei a Morar em São Paulo, decidimos hoje, então, os amigos que quiserem visitar Porto Alegre…Agora ferrou! :D Mas espero por aqui pela terrinha da “garoa”.
[]’s
Ed

beljungle2006.png

Olá amigos, o Beljungle está chegando 26 e 27 de outubro estará acontecendo dentro da SEPAI, e com todo o glamour de ser realizado na Estação da Docas.

Estarão presentes grandes profissionais Java da Região, apresentando vários assuntos interessantes , entre os palestrantes que confirmaram presença e alguns até as palestras estão:

  • César Siqueira (Rede Informática) - Relatórios com IReport e Jasper Reports
  • David Farias (Versatiliti)- Criando e personalizando componentes Java Server Faces.
  • Elói Junior (Elói Software) - Estudo de Caso: Desenvolvimento Prático JME, uma visao do WorlCupME.
  • Felipe Santos (Versatiliti ) - Proposta de Arquitetura J2EE Usando JSF, Spring e Hibernate
  • Keuller Magalhães (Versatiliti ) -NetBeans Platform como base de Desenvolvimento de Aplicacoes Comerciais
  • Luiz Bentes (DBA Engenharia) - MIDP 3: Um tour pelas novas características no ambiente Java ME
  • Manoel Pimentel (Argos ) -Como desenvolver uma aplicação Java do “zero” usando NetBeans .
  • Pâmela M. Gatinho (DevExp) - Como construir um compilador utilizando Java
  • Renato Simões (Fóton) - JDNC & SwingLabs
  • Wallace Souza (DevExp) - Introdução a Ajax com Java

Eu estarei apresentando duas palestras, uma será a repetição do que mostrei no JavaOne 2006, só que agora com a vantagem de falar em Português :). E a outra que propus será mais sobre Business que Tecnologia, e será dentro da programação SEPAI. Sendo assim as palestras que farei durante a Sepai serão:

  • SEPAI - Convergindo para uma Indústria de Software possibilitando exportações, negócios e desenvolvimento sustentável
  • BELJUNGLE - Creating NetBeans Plug-ins for Integration With JavaServer Faces, Hibernate, Spring, and EJB 3.0 Technology .

Estas são as palestras confirmadas, se você quiser palestrar no evento, envie um email para felipemsantos@gmail.com Com seu nome, mini-cv, titulo da palestra e resumo da mesma.

Estarei atualizando este post no meu blog, na medida que novos palestrantes e palestras sejam aprovadas/confirmadas.

[]’s

Edgar Silva

Olá amigos,

Agora o GreenboxNB, tem uma feature que permite gerar as os casos de uso sem mecher no web.xml, faces-config ou o spring-context.

Agora o Greenbox tem um Aquivo de Configuração que é um XML bem simples, e para ler nao usamos nada mais que java.util.Properties, mas em formato XML. Este arquivo vai guardar as referencias de tudo que você gerou no Greenbox, e quem sabe no futuro alguém queira adicionar informações como versões de geração, para documentação ou histórico do projeto(Nota: para quem usa Maven2 tem um goal pra isso ;)).

O Arquivo XML é simples e é assim:

< ?xml version="1.0" encoding="UTF-8"?>
< !DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">

Use cases generated by Greenbox
br.com.XXXX.exportacao.produto
br.com.XXXX.exportacao.marcas
br.com.XXXX.exportacao.departamentos
br.com.XXXX.exportacao.subcategoria
br.com.XXXX.exportacao.categoria

Este arquivo ficará dentro da pasta WEB-INF/greenbox/ com o nome usecases.xml , e o Netbeans vai sempre ler esse arquivo para gerar os arquivos isolados para Faces-Config e Spring-Context.

Sendo assim, agora há um “shared” Spring Context, que contém a definição de DataSource e TransactionManager, além da SessionFactory e todas as referências pros HBM’s do Hibernate. Além de um micro-spring-context para o Business Delegate e DAO dos casos de usos, todos separados e independentes.

Estamos trabalhando forte agora na questão de relacionamento, esses dias vou ver como estão as alterações que o Rodrigo Urubatan , está commitando no CVS para promover isto também no Plugin, de fato fica simples no hibernate, e nosso desejo é tornar tao simples quanto eram os:

DBLookupComboBox do bom, velho e saudoso Delphi :D

[]’s e boa semana!

ps-Quem for pro sul esses dias… Lá está frio pra valer… Haja coberta, roupa e uma boa companhia .