Posts

Showing posts with the label crom

Os lemmings corporativos Vs Os buzzwords do momento

Isso mesmo lemmings é aquele joguinho do super nes, que por sinal era muito bom! Nos últimos 5 anos vem acontecendo dois fenômenos distintos nas empresas de TI, eu chamo esses fenômenos de Lemmings corporativos e Buzzwords do momento. Vamos começar pelos lemmings. Lemmings são criaturinhas pequenas que ficam andando de uma lado pro outro até que você faça alguma coisa, que pode ser explodir uma bomba ou até mesmo matar um lemming, muitas empresas de ti no mercado se encaixam nesse cenário. Eu digo isso não só por experiência própria mas também por relatos de colegas e amigos. Muitas empresas seguem a abordagens de desenvolvimento by the book, ou seja, a risca e isso muitas vezes é um problema. Esse fato acontece tanto para tecnologias como para processos e métodos. Um exemplo disso: A empresa usa todo o RUP e para desenvolvimento segue um padrão orientado a dados ou uma solução clássica de Swing com EJB. OBS : Não estou criticando aplicações orientadas a dados, até por que em determ...

Classpath Helper

Image
Navegando pela web esses dias eu encontrei um plugin interessante para o eclipse 3.2.X. Esse plugin se chama classpath helper. A Jogada desse plugin é visualizar em forma de arvore todas as dependências de um projeto no eclipse( no caso pode ser o que está selecionado pelo package explorer ou navigator)  ele mostra as dependências com outros jars que estão resolvidas, mostra quais recursos dependem dessas dependências e mostra todas as outras dependências insatisfeitas. A baixo tem uma foto que eu tirei do plugin. De fato eu vejo um problema com esse plugin, ele não tem a possibilidade de ignorar algumas dependências que estejam faltando. Por exemplo: supondo que eu estou usando Spring framework 2.0.4 no meu projeto eu só estou usando os recursos básicos de injeção de dependências, o classpath helper íra lenatar diversos problrmas por que não temos os jars de jdbc,hibernate,jms,jakarta*,etc.. no classpath, mas isso não chegar a cer um erro pois o classloader do java só carre...

Desenvolvimento MVC RAD com Stripes

MVC É de fato um padrão desenvolvimento em camadas, que basicamente se caracteriza por separar a camada de negócio(Model) da camada de apresentação(View). Nesta arquitetura temos diversas soluções consolidadas como: Struts , Spring MVC , MyFaces(JSF) , ADF(JSF ORACLE) , JBoss RichFaces(JSF) , entre tantos outros. Mas hoje eu venho lhes falar do Stripes , que é uma framework baseado na arquitetura MVC porem o Stripes é muito RAD , com ele podemos desenvolver uma solução WEB com pouco esforço e praticamente zero de configurações xml. O Stripes utiliza o conceito onRails e consegue fazer mais convenções e menos configurações. Alguns pontos importantes sobre o Stripes: Desenvolver aplicações Web de maneira fácil. Prove soluções simples e poderosas para problemas comuns. A Curva de aprendizado é muito baixa. Se você necessita configurações muito especificas pode usar annotations . Eu baixei o Stripes versão 1.4.2 e fiz alguns testes. Foi bem simples de aprender como usa-lo o apren...

Ajax com DWR + Spring Framework

O DWR permite Javascript no browser interagir com o servidor e a manipular paginas com resultados. DWR Significa: Direct Web Remoting, ele é um framework para fazer a conversação de paginas com o lado server, utilizando Ajax. Vou mostrar um exemplo de como integrar o DWR com o Spring Framework . web.xml: Aqui é um web.xml padrão onde definimos os servlets do DWR e Spring. <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">    <!-- Registro do Servlet do DWR -->       <servlet>       <servlet-name>dwr-invoker</servlet-name>     ...

The top Java EE best practices

Recomendo a leitura do artigo The top Java EE best practices , eu quero comentar os dois primeiros itens da lista de 19 melhores praticas. Use MVC e não re-invente a roda. Use MVC: Sempre use MVC. Eu trabalhei em uma empresa que entre a camada de apresentação e a camada de modelo sempre trafegava os dados em xml e depois fazia o bind para um objeto, não gosto desse modelo pois o xml deve ser usado para comunicação entre tecnologias distintas, não entre camadas da mesma tecnologia como view e model. Era um inferno isso além de gerar um over-head não tinha ganho algum. Não re-invente a roda: Acho que essa é a grande lição para as empresas e os desenvolvedores, não cometa os mesmos erros que as outras pessoas cometeram aprenda com o passado dos outros. No artigo fala que varias empresas fizeram seu próprio "framework" de GUI(camada da view do MVC) isso também é um grande erro, pois passando por aquilo que muitas outras pessoas já passaram e sofrendo a mesma dor. Use frameworks j...

Formatação dos Códigos

Pessoal fiz um "programinha" em java que acredito que resolve o problema da formatação dos códigos aqui. Para testar em baixo vai um xml do ant:      <!-- Generate Javadoc -->      <target name="javadoc" description="Generates the javadoc">           <javadoc bottom="${projectname} by ${author} - ${copyright}" destdir="${api}" doctitle="Javadocs: ${projectname} ${version}" private="false" version="false" windowtitle="Javadocs: ${projectname} ${version}" classpathref="base.path">                <sourcepath>                ...

Spring,Spring,Spring

Spring framework, na minha opinião o melhor e mais completo framework que nos temos, pois revolucionou o modelo de desenvolvimento j2ee, ele inspirou o ejb3. Spring é um container, leve, muito leve, ele se integra como muitos outros frameworks, como jdo,hibernate,ibatis,jdbc,jms,etc... Ele não re-inventa a roda mas sim aperfeiçoá. Nesse exemplo vou demostrar como fazer um acesso remoto a um Spring Bean como RMI, isso mesmo como se fosse um ejb. Vamos lá. *Estou usando spring 2.0 E as libs que vem como o proprio spring + as dependencias como log e por ai vai. package org.diegopacheco.springrmitest.service; public interface CromService { public String rezar(); } package org.diegopacheco.springrmitest.service; public class CromServiceImpl implements CromService { public String rezar() { return "Você rezou de mais então Crom mandou uma maldição de sua montanha."; } } package org.diegopacheco.springrmitest.util; import org.springframework.beans.factory.BeanFactory; import ...

Formatação dos Códigos java

Pessoal eu não me achei ainda como postar os código bem on-rails por isso a formatação tá ficando SUCKS, mas façam o seguinte: Copiem os códigos e colem no eclipse e aprtem: CTRL + SHIFT + F e o eclipse fará o milagre da formatação dos códigos. Crom...

For-each java 5.0: Topicos Avançados

Uma das mais importantes novidades do java é o for-each, com ele podemos iterar Collections e Arrays de forma mais limpa e com menos código. Antigamente tinha que fazer algo assim: List l = new ArrayList(); l.add(new Integer(1)); l.add(new Integer(2)); l.add(new Integer(3)); for(Iterator it=l.iterator;it.hasNext();){ System.out.println(((Integer)it.next()).intValue()) } Já no java 5.0 podemos fazer: List<Integer> l = new ArrayList<Integer>(); l.add(1); l.add(2); l.add(3); for(Integer i: l){ System.out.println(i); } Mas com o novo for-each podemos percorrer qualquer coisa, basta que a classe implemente java.lang.Iterable ou um método retornar um Iterator . No exemplo a seguir mostro como iterar de maneira lazy um conjunto de pojos Pessoa que foram persistidas no disco através de Serialização. Pessoa.java package org.diegopacheco.javaforeach.model; import java.io.Serializable; /** * Pojo que representa uma pessoa. * @author Diego Pacheco * */ public class Pessoa i...

Hybridizing Java -> outra visão

Ao ler o artigo do Bruce Eckel no artima( link do artigo ) refleti sobre alguns coisas que gostaria de comentar. Nesse artigo ele expõe diversas partes falhas do java e das soluções feitas em java, algumas até concordo com ele que são falhas mesmo. Na verdade lê está vendendo o seu peixe o Adobe Flex, que é baseado em flash. O que Bruce alega é que o flash é a verdade máxima em cross-browser e cross-so. Existem outros pontos muito importantes no java que ele não pesou no seu ponto de vista, eu gostaria de pesa los, são eles: - JCP: ter toda uma gama de empresas pensando em uma especificação universal. Comunidade: Existe uma comunidade muito grande que: cria,mantém,aprimora muitas e muitas soluções em java. Na minha opinião esses são os maiores pontos do java. Existem soluções JSF que resolvem esse problema dos browsers isso parece que ele não levou em consideração. Quanto a JS e CSS não vou nem mencionar por que acho que ele está coberto de razão. Tem que ser um mega expecialista par...

The Power of Generics

Com o surgimento do java 5.0 vai a funcionalidade chamada generics. Na minha opinião junto com as annotations essa foi uma das melhores coisas que a sun fez no java 5.0. Certamente os Generics adicionaram bem mais complexidade ao código java, mas o ganho de código é imenso. Praticamente toda API do java foi reescrita para suportar generics. Antes tinhamos um código assim: ... List l = new ArrayList(); l.add("diego"); l.add("teste"); l.add("haha"); Iterator it = l.iterator(); while(it.hasNext()){ System.out.println((String)it.next()); } com generics podemos fazer assim(vou usar foreach também): ... List <String> l = new ArrayList <String>l.add("diego"); l.add("teste"); l.add("haha"); //l.add(new Object); // erro pois object não é String. Iterator it = l.iterator(); while(it.hasNext()){ System.out.println(it.next()); // pois não precisamos de cast. } Isso foi bom pois diminuiu o número de linhas de códigos. Mas...

Boas Vindas - Primeiro Post

Esse blog traz pensamentos, testes, comparações, novidades e meus pareceres sobre a tecnologia Java. Por default a linguagem adotada aqui será a Hiboriana (10.000 BC) então vão se acostumando seus cães do inferno.