Alguns bits de tecnologia :D

Segue mais uma daquelas grandes coletâneas de links que falam de tudo um pouco, tem Java, .NET, Ruby, Rails, Python, …

E este último merece um certo destaque, um post sobre a péssima postura da Aptana para com a comunidade, quando eles pegaram um monte de código que foi escrito pela comunidade, juntaram com o código do Eclipse e resolveram mudar a licensa de tudo, se alguem esquentar a cabeça com isto eles poderiam até mesmo ser processados, por que estão quebrando a licensa do eclipse e por conseqüência também do Radrail, e quem baixar os fontes hoje não pode mais criar uma distribuição diferente baseado nele.

Bom, acho que era isto, vou tentar escrever com mais frequencia para não acumular tanta coisa junto :D

Se você gostou deste post, lembre-se de assinar o RSS feed do blog, para ser notificado de novos posts!

Palestrante azarado - DevMedia Tech Week (Spring Framework, EJB3 + JPA + JSF)

Como um bom brasileiro, vou começar reclamando para quem não pode fazer nada a respeito :D (Se você também não gosta de lamentações clique aqui)

fiasco.jpg

No aeroporto na sexta a noite, para pegar o avião, o pessoal da esteira encrencou com o meu isqueiro e fizeram com que eu despachasse o mesmo, sem problemas, ainda tinha tempo suficiente, voltei no balcão da Gol, despachei o isqueiro e voltei bem feliz para o avião …
Chegando em Guarulhos, por algum motivo inexplicável em um voo sem escalas de Porto Alegre a São Paulo, eles conseguiram levar mais de 1h para achar o saco lacrado da Gol, dentro do cofre do avião, o que me fez ficar esperando na frente da esteira um bom tempo, até o funcionário da Gol ja tinha desistido, quando fomos para o balcão fazer uma ocorrencia de perda de bagagem (de alguma coisa que eles prometeram que ficaria em um saco lacrado no cofre do avião), chamaram o funcionário da Gol pelo rádio dizendo que haviam localizado o objeto no cofre do avião e que só estavam esperando uma van para mandar (por algum motivo o outro objeto em um saco lacrado igualzinho eles mandaram nos caminhões de bagagens normais).
Depois de hora e pouco de espera fui tentar descobrir qual era o onibus que eu tinha que pegar para ir para o hotel, cheguei no hotel, torcendo para conseguir pagar umas contas que venciam na sexta feira mesmo, e não tinha internet no quarto (fala sério, um hotel em são paulo sem internet, até o hotel mais simples de Pato Branco que fiquei quando estava ministrando um curso la tinha internet nos quartos), tive que jogar mais uma grana fora para pagar 30 minutos de acesso a internet no “cyber office” do hotel, e pior, nem internet nem TV a cabo no hotel, e com isto chegamos ao final da sexta feira …
No sábado começo o dia com a minha palestra fracassada de EJB3 + JPA + JSF, eu consegui passar como fazer tudo na palestra, mas devido a um bug na versão beta do netbeans, não consegui fazer o exemplo funcionar durante a palestra (traduzindo: fiasco!)
No final do dia a minha palestra de desenvolvimento web com spring framework começou mal também, o eclipse Europa (este não é beta e eu uso todos os dias no escritório, só não uso no meu note), resolveu que não queria funcionar, fechou sozinho umas 3 vezes, e quando eu estava começando a entrar em desespero por causa do segundo fracasso eminente no mesmo dia, alguem que estava assistindo a palestra disse: por que tu não usa o IDEA, abri ele e tudo passou a funcionar :D
Mostrei passo a passo (inclusive os testes para ver qual configuração vai funcionar), como fazer uma aplicação web com o spring framework (pelo menos uma das 57 mil maneiras possíveis).



header.png


Pronto, chega de reclamar (”Ó vida, Ó céu, Ó azar”), o que realmente aconteceu no sábado (na sexta foi azar mesmo, eu reclamei para a Gol, reclamei no hotel, ou seja, para quem podia fazer alguma coisa a respeito).

Eu errei feio e peço desculpas pelo “fiasco” do primeiro mini curso, o que aconteceu foi que eu testei antes de ir para o evento com o banco de dados padrão do netbeans/glassfish e tudo funcionou corretamente, no evento tentando utilizar o MySQL como faço em 99% dos outros projetos sofri com um bug na integração do NetBeans 6.0M10 com o glassfish 2.0 build 53 …
Possivelmente o BUG seja alguma alteração no formato dos arquivos de configuração/deployment do glassfish …
O NetBeans quando gera um jar de um projeto ejb, ele coloca dentro do jar um arquivo META-INF/sun-resources.xml que deveria criar os pools JDBC utilizados pelos EJBs daquele jar, mas a combinação de NetBeans 6.0M10 + esta versão de glassfish, isto não funciona de modo algum, e isto eu não tinha testado, pois fiz os testes com um pool que ja existia e desta forma o NetBeans não tentou criar novamente o pool …
Quando eu informo ao netbeans uma conexão nova, ele deveria criar ela automaticamente no servidor de aplicações, mas parece que a geração do arquivo de configurações do glassfish esta com problemas …
o que o netbeans esta gerando é o código a baixo …

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE resources PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 Resource Definitions //EN" "http://www.sun.com/software/appserver/dtds/sun-resources_1_3.dtd">
<resources>
  <jdbc-resource enabled="true" jndi-name="devmedia" object-type="user" pool-name="mysqlPool"/>
  <jdbc-connection-pool allow-non-component-callers="false" associate-with-thread="false" connection-creation-retry-attempts="0" connection-creation-retry-interval-in-seconds="10" connection-leak-reclaim="false" connection-leak-timeout-in-seconds="0" connection-validation-method="auto-commit" datasource-classname="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource" fail-all-connections="false" idle-timeout-in-seconds="300" is-connection-validation-required="false" is-isolation-level-guaranteed="true" lazy-connection-association="false" lazy-connection-enlistment="false" match-connections="false" max-connection-usage-count="0" max-pool-size="32" max-wait-time-in-millis="60000" name="mysqlPool" non-transactional-connections="false" pool-resize-quantity="2" res-type="javax.sql.DataSource" statement-timeout-in-seconds="-1" steady-pool-size="8" validate-atmost-once-period-in-seconds="0" wrap-jdbc-objects="false">
    <property name="databaseName" value="devmedia"/>
    <property name="serverName" value=""/>
    <property name="portNumber" value=""/>
    <property name="User" value="root"/>
    <property name="Password" value="admin"/>
  </jdbc-connection-pool>
</resources>

giant-bug-vs-ants.jpg

e o que ele deveria gerar é isto:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE resources PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 Resource Definitions //EN" "http://www.sun.com/software/appserver/dtds/sun-resources_1_3.dtd">
<resources>
  <jdbc-resource enabled="true" jndi-name="devmedia" object-type="user" pool-name="mysqlPool"/>
  <jdbc-connection-pool allow-non-component-callers="false" associate-with-thread="false" connection-creation-retry-attempts="0" connection-creation-retry-interval-in-seconds="10" connection-leak-reclaim="false" connection-leak-timeout-in-seconds="0" connection-validation-method="auto-commit" datasource-classname="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource" fail-all-connections="false" idle-timeout-in-seconds="300" is-connection-validation-required="false" is-isolation-level-guaranteed="true" lazy-connection-association="false" lazy-connection-enlistment="false" match-connections="false" max-connection-usage-count="0" max-pool-size="32" max-wait-time-in-millis="60000" name="mysqlPool" non-transactional-connections="false" pool-resize-quantity="2" res-type="javax.sql.DataSource" statement-timeout-in-seconds="-1" steady-pool-size="8" validate-atmost-once-period-in-seconds="0" wrap-jdbc-objects="false">
    <property name="url" value="jdbc:mysql:///devmedia"/>
    <property name="URL" value="jdbc:mysql:///devmedia"/>
    <property name="User" value="root"/>
    <property name="Password" value="admin"/>
  </jdbc-connection-pool>
</resources>

com este código funciona tudo OK …
O que eu fiz em casa que funcionou corretamente?
Tentei rodar o projeto pelo netbeans diversas vezes e não funcionou, então criei o ear pelo netbeans, abri o ear, abri o jar dos EJBs removi o arquivo META-INF/sun-resources.xml, acessei o console de administração do glassfish, criei uma conexão JDBC com as configurações descritas no arquivo acima, criei um JDBC Resource apontando para a conexão criada e nome devmedia.
Fiz o deploy do ear gerado pelo netbeans sem o descritor sun-resources e tudo funcionou (quando tentei fazer o deploy com o descritor ainda no arquivo ele dava o mesmo erro que estava ocorrendo no evento).
Fazendo ainda alguns testes depois, removi a aplicação e os resources JDBC que havia criado no passo anterior, alterei o descritor ao invés de remover ele, e também funcionou.
Por tanto, esta declarado que o problema da aplicação não funcionar foi causado por um BUG no NetBeans que esta criando o descritor de deployment com dados errados.

E a partir de hoje eu vou começar a prestar mais atenção nos avisos que aparecem quando se vai baixar uma versão beta de algum software: Não Utilize em produção!

Ja na última palestra, sobre Desenvolvimento Web com Spring Framework, os problemas começaram com o projetor da sala que só aguentava 800×600 (o da outra sala suportou os 1280×800 do meu notebook, espetacular o projetor), quem é que consegue trabalhar com 800×600?
Depois disto, o eclipse Europa, que não é mais beta, não tinha nada beta instalado, resolveu que iria cair a cada 5 minutos, e considerando o fiasco que eu ja tinha feito na palestra anterior, em que o exemplo não funcionou, eu comecei a ficar desesperado, e agradeço a quem estava na platéia que deve ter visto a minha cara de pânico e disse, por que tu não usa o IDEA?
Abri o IDEA e o pânico aumentou, pois em 800×600 o layout dele não se ajeitava …
Lembrei de remover a barra inferior do KDE e tudo resolvido, IntelliJ IDEA funcionando, consegui fazer o mini curso de desenvolvimento web com spring framework sem maiores problemas …
Os erros que ocorreram eram mais ou menos previstos, pois a idéia era mostrar como fazer uma aplicação do zero, o que pode dar errado, e como procurar soluções …
No final tudo funcionando, clientes sendo cadastrados, layout podre (não sou nenhum designer :D )
O único problema foi que devido aos problemas emocionais do Eclipse Europa, a palestra atrasou um pouco e não deu tempo de passar mais com mais detalhes sobre a escrita de testes unitários (tem alguns exemplos aqui para quem quiser se adiantar), mas vou colocar os testes no exemplo que sera disponibilizado hoje a noite aqui no blog.

Lições aprendidas:

  1. Não utilizar software open source e beta em palestras (e digo open source e beta pois o IDEA que me salvou do fiasco total foi o milestone 2 do IntelliJ IDEA 7
  2. O NetBeans esta ficando muito bom, mas falha de integração com o glassfish que vem junto com ele no pacote de instalação é inaceitável
  3. Praticamente perdi a confiança no eclipse, uma instalação vanilla, feita dois dias antes, em um workspace em branco, resolveu que não iria funcionar e simplesmente fechava sozinho sem explicações
  4. IntelliJ IDEA Rocks, isto prova que vale a pena pagar por uma IDE de qualidade!
  5. Se uma IDE diz que vai fazer uma coisa, ela é obrigada a fazer, se não vai fazer, diz que não faz, como o eclipse e o IDEA fazem, ou seja, nenhum dos dois promete configurar o data source no servidor de aplicações, e nenhum deles se perde se tu configurar manualmente
  6. O Eclipse Europa esta funcionando muito bem na maquina windows que tenho no escritório, sabe-se la por que ele encrencou de não funcionar no linux, sendo que eu utilizava ele a uns 2 meses atrás, antes do Europa Final, ou seja, os betas do Europa funcionavam bem, eu só não esperava este problema ocorrendo com a versão final, como ja disseram nos comentários, provavelmente foi alguma incompatibilidade com a versão da JVM

Fora isto só posso pedir desculpas novamente a quem estava assistindo a palestra de EJB3 + JPA + JSF, e como prometi para todos hoje a noite os exemplos estarão na página de publicações aqui do blog com um passo a passo de como fazer para funcionarem, ainda vou adicionar alguns exemplos de código e um video provando que o netbeans me sabotou na primeira palestra :D

PS.: desculpem pelo texto gigantesco, mas eu tinha muita coisa para explicar …

Se você gostou deste post, lembre-se de assinar o RSS feed do blog, para ser notificado de novos posts!

Um pouco de tudo e tudo de nada - correndo atrás da máquina

fields.JPGUma das coisas legais de trabalhar com TI é que todo dia tem novidade, uma das coisas ruins de trabalhar com TI é que precisamos pelo menos ter uma idéia sobre tudo o que esta acontecendo …

Então, segue mais um daqueles posts com poucas opiniões e muitos links …

  • Annotated to the bones:
    Parece que o pessoal não aprende mesmo, em vez de diminuir a quantidade de configurações necessárias eles só mudam elas de lugar, mas mesmo assim ja melhora um pouco, a versão 2.0 da especificação do JMX (Java Managenment Extensions) vai suportar a definição de MBeans via anotações como podemos ver neste post.
  • Parece que o JavaFX esta pegando mesmo, ja existem projetos para criação de bibliotecas de componentes para o JavaFX, alem do projeto do compilador que deve diminuir bastante o startup das aplicações em JFX transformando a aplicação em um .class padrão, mas o que eu quero realmente ver, é quando vai estar disponível o Java FX Mobile! por que quanto mais eu apanho pro Java ME, mais eu me convenço que Java ME só serve pra fazer joguinhos.
  • E depois que eu escreve um post sobre Design By Contract, na verdade em um dos comentários postados, fiquei sabendo do Spring DBC (Spring Design By Contract) que é uma biblioteca que facilita a utilização de Design By Contract em projetos que utilizam o Spring Framework, utilizando o AOP dinâmico do Spring Framework em vez de AOP estático do AspectJ, a única coisa que não gostei é que a especificação do “Contrato” é feita no XML, ou seja, longe da classe.
  • A Vingança dos Nerds! não, eu não estou falando daquele filme, estou falando deste post do BizRevolution, um ótimo post de uma “pessoa normal”, dizendo que mesmo os “humanistas” não gostando da idéia, o mundo é dos Nerds :D
  • A ZDnet finalmente revelou quais são os “7 hábitos dos desenvolvedores eficientes“, e sinceramente eu concordo com eles, com estes 7 hábitos, qualquer desenvolvedor se torna mais eficiente do que seria sem eles, os 7 hábitos são:
    • Entender o problema
    • Usar as ferramentas adequadas
    • Focar a simplicidade (foi a melhor tradução para Strive que eu consegui :( )
    • Mantenha o seu código limpo e claro
    • Aprenda a debugar
    • Use o que ja esta disponível (não re-invente a roda)
    • Continue a aprender
  • Ja começou a aprender a usar o Guice? se não começou ainda, ja esta na hora, tem empresas pedindo experiência com o Guice na hora de contratar, faz um tempinho já, mas eu falei um pouco sobre o Guice aqui no blog :D
  • glassfish.pngUm pouco sobre o Glassfish a implementação de referência do Java EE 5 (e um ótimo servidor de aplicações):
  • Sabe aqueles bug reports maravilhosos que ajudam aresolver problemas? se você gosta deles, não permita que seus usuários leiam isto. O Guia de como criar os piores bugs reports possíveis, e pior, baseado em fatos reais.
  • A equipe de desenvolvimento do Eclipse Web Tools ja esta trabalhando na versão 3.0, por enquanto a única alteração é o suporte ao Jetty :D
  • xplogo.gifXP: Melhor em Java ou em Ruby? é um post sobre um TCC falando de metodologias ágeis (no caso XP) comparando o mesmo projeto desenvolvido em Java e em Ruby, o meu único comentário sobre isto é: Ágil não quer dizer apenas entregar a primeira versão rápido (não estou dizendo que este é o caso), acho que as comparações deles valem tanto quanto dizer que delphi é melhor para desenvolvimento ágil do que java por que cria mais rápido uma aplicação Desktop de frontend para bancos de dados :D
  • Finalmente parece que o mercado esta acordando para as metodologias ágeis (tanto de desenvolvimento como de gerenciamento), todos os dias vejo uma noticia nova de mais uma empresa começando a utilizar XP ou SCRUM ou …
    Só espero que não façam a mesma porcaria que fizeram com o RUP que é muito bom, mas todas as empresas que eu conheço que dizem usar RUP usam Waterfall …
  • Java Server Faces

Se você gostou deste post, lembre-se de assinar o RSS feed do blog, para ser notificado de novos posts!

AJDT (AspectJ Development Tools) inconsistente ou eu que não captei a idéia?

Antes de seguir com o problema, vamos começar com um joguinho de procure o erro:

ajdt1.png

Alguém viu alguma coisa extranha na imagem acima?

Ninguém?

Se vocês prestarem atenção no Package Explorer, ele não apresenta nenhum erro na classe “Teste”, mas o editor de código diz que a classe “TestEntity” não possui o método “save” …

O legal é que isto vai acontecer sempre que eu abrir o editor de código, por tanto não é a famosa “perda de sincronia” que acontece de vez em quando no Eclipse.

Mas se eu mandar executar a classe “Teste” vai ocorrer tudo sem problemas, mesmo com o erro que é mostrado no editor de código, por que ela compila sem problemas …

Para se ver livre deste erro, tive que exportar um jar do do projeto onde estão as classes com aspectos, e mover a classe “Teste” para outro projeto, la o editor de código entende que existe o método “save” na classe “TestEntity” que foi introduzido pela compilação do AspectJ, da mesma forma que a classe executa sem problemas no primeiro projeto …

Por tanto, o editor de java do Eclipse, não fica nem sabendo que existe o compilador do AspectJ e que este altera as classes em tempo de execução, mas o package explorer, como tem os erros marcados pelo compilador, sabe que a classe esta OK, pois a compilação ocorreu sem problema algum …

Como eu fiz para confundir o eclipse?

Criei um projeto do AspectJ, e escrevi o seguinte aspecto:

package introduction;

public aspect EntityAspects
{
	declare parents: (@javax.persistence.Entity *) extends SmartEntity;

	public boolean SmartEntity.save()
	{
		return false;
	}
}

Depois eu criei a classe TestEntity:

package introduction;

import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;

@MappedSuperclass
public abstract class SmartEntity
{
	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	protected Integer id;

	public Integer getId()
	{
		return id;
	}

	public void setId(Integer id)
	{
		this.id = id;
	}

	public abstract boolean save();
}

Criei uma Entity que teria os métodos injetados:

package introduction;

import javax.persistence.Entity;

@Entity
public class TestEntity
{

}

Depois disto foi só criar uma classe que usaria a classe TestEntity (qualquer uma com um public static void main)

package introduction;

import introduction.TestEntity;

public class Teste
{
	public static void main(String[] args){
		TestEntity te = new TestEntity();
		System.out.println(te.save());
	}
}


Prontinho, o eclipse se perdeu, mas se você mandar isto executar, vai funcionar sem problema algum.

Vou realizar o mesmo teste com o suporte a aspectJ do IntelliJ IDEA e do Netbeans a noite para ver se isto acontece com eles também, mas eu fiquei bastante decepcionado com o AJDT :(

PS.: sim, este teste foi influencia do Ruby On Rails, estava testando se seria possível com uma combinação de AOP + JPA + Qualquer outra coisa que eu não pensei ainda, um ambiente tão produtivo quanto o RoR :D

Na verdade, neste caso, apenas uma mistura de ActiveRecord com Repository, que ja ficaria bem legal …

A parte de CoC (Convencion over Configuration) é possível implementar em java sem problemas :D

UPDATE: instalei o plugin deste link no NetBeans e o comportamento é tão estranho quanto o do Eclipse, o netbeans marca o arquivo com erro no código fonte e no package explorer, mas se mandar rodar a aplicação, funciona tranqüilo :D

Se você gostou deste post, lembre-se de assinar o RSS feed do blog, para ser notificado de novos posts!

DevMedia TechWeek - Algumas alterações de agenda para o próximo sábado :D

Como eu falei aqui, no próximo sábado (01/09/2007) eu estarei ministrando alguns mini cursos no DevMedia TechWeek.

Ocorreram algumas alterações na grade (que ainda não se refletiram no site), alem do mini curso sobre Java EE (JPA e EJB3 + JSF) vou apresentar também o mini curso: Desenvolvendo aplicações Web com o Spring Framework, pois pelo que me avisaram, parece que o palestraste teve alguns problemas de saúde ou algo parecido.

Então, para quem quiser levar um notebook para acompanhar os mini cursos, o ambiente que vou utilizar será o seguinte:

Para ambos os mini cursos: My SQL (Se preferirem uma GUI podem instalar também o MySQL Administrator e o MySQL Query Browser), todos podem ser encontrados em http://www.mysql.org

Não esqueçam de baixar o driver JDBC para o MySQL

glassfish.pngPara os mini cursos Java EE: NetBeans 6.0M10 + GlassFish (vocês podem baixar um bundle com a IDE e Servidor de aplicações aqui)

Para o mini curso de desenvolvimento Web com Spring Framework: um servidor Tomcat, ou até mesmo o próprio Glassfish se vocês já tiverem ele instalado e um Eclipse Europa instalado da seguinte forma:

classic2.jpgBaixe o Eclipse Classic da página do eclipse (ou deste post), que é o mesmo Eclipse SDK que ja estamos acostumados.

Descompacte ele e abra a IDE, depois disto clique em Help, Software Updates, Find And Install, New Features.

Marcar os update sites do Europa e Eclipse Project, alem de adicionar os seguintes update sites:

Subversive: http://www.polarion.org/projects/subversive/download/1.1/update-site/ (que como eu comentei aqui, esta migrando para um sub projeto do eclipse)
Spring IDE: http://springide.org/updatesite/
Mylyn Extras: http://download.eclipse.org/tools/mylyn/update/e3.3

E marcar as seguintes opções (agrupadas por update site):

  • Europa Update Site
    • MyLyn
    • Programing Languages
      • AspectJ Development Tools
      • Dynamic Languages - Ruby
    • Testing and Performance
    • Web And JEE Development
  • MyLyn Extrax
    • Integration
  • SpringIDE
    • Core
    • Integrations
  • Subversive
    • Team Providers
    • Client Libraries
  • The Eclipse Project Updates
    • Eclipse 3.3 Patches

Next, Next, Finish …

Se quiserem ja deixar o servidor que vão utilizar configurado fica mais fácil :D

Fiz este passo a passo pois eu não tinha o Eclipse instalado na minha maquina, pois formatei ela semana passada e só tinha re-instalado o IntelliJ IDEA e achei que os mini cursos seriam mais interessantes em IDEs open source que todos pudessem utilizar :D


PS.: sim, eu sei que eu ja tinha um passo a passo para configuração do Eclipse, mas como a cada 2 ou 3 meses eu mudo completamente quais os plugins que eu utilizo, achei que ter o mesmo ambiente iria facilitar a vida de quem quiser acompanhar o desenvolvimento das aplicações no próprio notebook :D

Se você gostou deste post, lembre-se de assinar o RSS feed do blog, para ser notificado de novos posts!

Plugins legais para se instalar no Eclipse (ou como entulhar mais a sua IDE preferida :D )

Atualmente no trabalho não posso utilizar o IntelliJ IDEA, que é a IDE que uso para trabalhar em casa (projetos open source e afins), e estou utilizando o Eclipse + WPT 2.0 (Europa Vanilla praticamente).
Mas encontrei estes plugins que suprem exatamente aquelas necessidades que você não sabia que tinha antes de começar a usar (como aquela velha frase que diz que: A informática veio para resolver todos os problemas que você não tinha antes dela).

O Legal é que estes plugins foram desenvolvidos pelos mesmos dois consultores, ou seja, os caras são bem criativos :D

Os plugins que eu achei que valia a pena postar aqui no blog são os seguintes:

EclipseWiki

Uma Wiki engine que roda dentro do eclipse, uma ótima idéia para documentar um projeto, ainda mais com a facilidade de linkar qualquer tipo de recurso do projeto dentro do texto do wiki, e com um editor bem razoável dentro do mesmo ambiente :D

Save Me

É a solução para não perder mais aquele arquivo que você estava editando a horas mas esqueceu de salvar por algum motivo, ele simplesmente salva qualquer arquivo que você estiver editando, assim que o editor perder o foco, e não se preocupe com isto, pois se você fizer besteira pode voltar as versões com o Local History do Eclipse :D

E por último, mas não menos importante:

Sort It

Que permite que você selecione um bloco de texto e mande o eclipse ordenar este bloco de texto em qualquer editor :D

Eu ja precisei disto várias vezes, na verdade não enquanto estava editando código fonte, mas editando outros arquivos e principalmente para executar algum tipo de rotina em batch.

Estes foram os culpados por o meu eclipse não ser mais um “Europa Vanilla“, ou seja, estes são os únicos plugins fora o Europa que estou utilizando atualmente :D

Quem quiser instalar algum deles, todos podem ser encontrados neste update site: http://www.stateofflow.com/UpdateSite

Esta é uma das maiores vantagens do Eclipse, sempre aparece um plugin Divertido (se bem que não posso reclamar o IntelliJ IDEA, ele também tem vários plugins divertidos para nos ajudar a transformar a nossa IDE preferida em uma carroça :D

Se você gostou deste post, lembre-se de assinar o RSS feed do blog, para ser notificado de novos posts!

Design By Contract para Java, usando Java 5 Annotations + AspectJ e ainda tem um plugin para o eclipse de Bônus

O ContractJ é um conjunto de: anotações + aspectos + um plugin para o eclipse para facilitar o uso disto, mas pode ser utilizado em qualquer ambiente que tenha suporte ao AspectJ.

A idéia básica de Design By Contract é que seja possível documentar todas as pré condições e pós condições de um método, e a partir desta documentação, caso seja passado um parâmetro inválido, ou o estado posterior a execução seja inválido, deve ser gerada uma excessão.

O ContractJ possui algumas anotações para definição de pré condições e pós condições, e ja possui aspectos implementados para estas anotações, desta forma ele faz o trabalho sujo de cuidar das condições definidas e gerar excessões quando for necessário, e as próprias anotações ja servem como documentação pois estão exatamente no ponto que possui a pré ou pós condição, e podem caso seja necessário, ser processadas utilizando o APT por exemplo, para geração de algum documento mais formal.

Para ficar um pouco mais claro, vamos pegar um exemplo (o mesmo do site do projeto):

@NotNegative public int calculaExpectativaDeVida (@NotNull Pessoa pessoa);

Este método, precisa receber uma Pessoa existente, por tanto, o parâmetro pessoa, foi anotado com um @NotNull, e claro que a expectativa de vida de alguem não pode ser negativa, então o método foi anotado com um @NotNegative.

A partir deste ponto, todos os que lerem o código vão ficar sabendo que o parâmetro pessoa não pode ser nulo, e que o resultado do calculo não pode ser negativo, ou seja, as pré e pós condições estão corretamente documentadas.

Para prosseguir, o ideal é que o projeto esteja sendo compilado com o AspectJ, existem plugins para o Eclipse, NetBeans e IntelliJ IDEA para facilitar a compilação do código com o AspectJ, mas se você quiser muito, pode também utilizar Load-Time-Weaving para não interferir no processo de compilação do projeto.

Em runtime, utilizando qualquer uma das duas opções apresentadas, se o método calculaExpectativaDeVida receber um parâmetro null, uma InvalidArgumentException sera lançada, e caso por algum erro de programação, o método retorne um valor negativo, sera lançada uma IllegalStateException.

Pronto, temos a documentação, e a verificação em runtime implementadas, sem quase nenhum esforço.

Para melhorar só se isto estivesse integrado com uma ferramenta MDA e as definições de pré e pós condições fossem flexíveis o suficiente para serem lidas do código OCL definido no diagrama UML, mas já é um ótimo começo.

Quem quiser instalar ele para testar, ou até mesmo usar no próximo sistema que for desenvolver, é só usar este Update Site no eclipse: http://update.aspectbrains.org/

Ou então baixar da página do projeto no source forge.

Se você gostou deste post, lembre-se de assinar o RSS feed do blog, para ser notificado de novos posts!

Eclipse Europa - Uma melhor “primeira impressão”

Bom, eu ja havia comentado sobre o Eclipse 3.3 aqui e aqui, mas devido a esta noticia, e a mania “nerd” de utilizar este tipo de camisetas, eu resolvi escrever este review …

Se você programa em Java e não vive em algum outro planeta ou no fundo do oceano, a esta atura ja deve ter ouvido falar do Europa, ou pelo menos do Eclipse.

O Eclipse Europa, é o maior “release train” até o momento (o primeiro foi o Calisto em 2006), e que eu saiba, se não “o”, com certeza, um dos maiores releases coordenados de projetos Open Source diferentes …
E considerando que foram 21 projetos, é que o release final não atrasou, é um feito de fazer inveja em muita empresa grande por ai :D
Uma das coisas mais legais desta nova release do Eclipse, são os bundles prontos para download, coisa que o Netbeans tem desde sempre, mas o eclipse ainda não tinha …
Agora na página de Downloads do Eclipse, existem pacotes prontos para:

Eclipse IDE for Java Developers
Ferramentas essenciais para todo desenvolvedor Java, como o Editor de código do Eclipse, cliente CVS e o Myln. Mais detalhes…

Windows
Linux
MacOSX


Eclipse IDE for Java EE Developers
Ferramenta para desenvolvedores Java criando aplicações Java EE, inclui uma IDE Java, ferramentas para Java EE e JSF, Mylyn e muiros outros. Mais detalhes…

Windows
Linux
MacOSX

Eclipse IDE for C/C++ Developers
Uma IDE para desenvolvedores C/C++. Mais Detalhes…

Windows
Linux
MacOSX

Eclipse for RCP/Plug-in Developers
Uma ferramenta completa para a criação de plugins ou aplicações baseadas no Eclipse RCP. Inclui o SDK completo, algumas ferramentas e o código fonte. Find out more…

Windows
Linux
MacOSX


Eclipse Classic
Este é o Download tradicional, que inclui o Eclipse SDK que todos ja conhecem. Find out more…

Windows
Linux
MacOSX

(ja com os links para download pra facilitar a vida de vocês)

Vamos então para o que eu não achei legal no Europa:

  • Quando se instala o pacote para desenvolvedores Java EE, por exemplo não é possível (ou pelo menos não é fácil) instalar oturos componentes via Update Site do Europa, aparece um erro dizendo que faltam algumas bibliotecas
  • É dificil de conseguir adivinhar o por que do Profiling não funcionar direto assim que se instala o eclipse e abre um projeto ja existente que utiliza o Java 6

Bom, acho que é só isto, a lista do que não gostei é pequena mesmo …

O que eu Gostei no Europa

  • Os pacotes prontos para download, pois facilitam muito para os iniciantes, mas eu ainda prefiro baixar o SDK e costumizar o que eu quiser
  • A inclusão do AspectJ no release train facilitou bastante
  • O DLTK (Dynamic Language Toolkit) ficou excelente, eu não conhecia antes do Europa
  • O projeto Dash (Eclipse Monkey) adicionou uma feature que eu queria a bastante tempo, a possibilidade de automatizar tarefas no eclipse utilizando Scripting
  • O Myln (antigamente conhecido como Mylar) melhora muito a produtividade, o único problema é que meio viciante, fica difícil trabalhar sem ele depois
  • O Web Tools Platform esta cada vez melhor, o suporte para JSF melhorou muito, e o editor visual para JSF também esta bem agradável

O que esta incluído no Europa

Eclipse Europa Projects
Project Name Homepage Version New And Noteworthy Download
AspectJ Development Tools (AJDT) 1.5 New Download
Business Intelligence and Reporting Tools (BIRT) 2.2.0 New Download
Buckminster 0.1.0 Download
C/C++ Development Tools (CDT) 4.0 New Download
Data Tools Platform (DTP) 1.5 New Download
Device Software Development Platform - Device Debugging (DSDP.DD) 0.9 New Download
Device Software Development Platform - Target Management (DSDP.TM) 2.0 New Download
Dynamic Languages Toolkit (DLTK) 1.0 Download
Dash (Eclipse Monkey) 1.0 New Download
Eclipse Communication Framework (ECF) 1.0.0 New Download
Eclipse Platform, JDT, PDE and Equinox. 3.3 New Download
Eclipse Modeling Framework (EMF) 2.3 New Download
Eclipse Modeling Framework - Query, Transaction, Validation (MQ, MT, VF) 1.1 New Download
Graphical Editing Framework (GEF) 3.3 - Download
Graphical Modeling Framework (GMF) 2.0 New Download
Model Development Tools (MDT) 1.0 New Download
Model to Text (M2T) - JET 0.8 New Download
Mylyn 2.0 New Download
SOA Tools Platform (STP) 0.6 Download
Test and Performance Tools Platform (TPTP) 4.4 New Download
Web Tools Platform (WTP) 2.0 New Download

Web Tools Platform (WTP)

Bom, eu ja falei bastante do WTP por aqui, mas eles estão cada vez melhores.
Uma coisa que eu percebi de cara nesta nova versão é que a performance melhorou muito …
Tem muitas novidades, uma das que mais fez diferença para mim pelo menos, é o suporte ao Tomcat 6 (que infelizmente não esta funcionando direito no IntelliJ IDEA).
Ele finalmente inclui suporte a Tag Files que é uma coisa que me irritava muito nas versões anteriores.
Uma coisa que eu achei espetacular, é o auto completar para URIs das Tag Libraries, ou seja, você digita <@ taglib prefix=”c” uri=”
aperta CTRL+SPACE e pronto, ele lista a URI de todas as tag libraries que estiverem no classpath da aplicação …
Alem do CTRL+Click funcionar agora também para as Taglibs ou seja, ele leva para o TLD ou Tag File onde a tag clicada foi declarada, isto facilita bastante a vida :D
O Suporte a JPA do WTP também melhorou bastante, mas eu ainda acho irritante ele ficar marcando como erro no projeto uma tabela não existir mesmo quando a implementação de JPA esta configurada para criar as tabelas automagicamente …

Dynamic Languages Toolkit (DLTK)

O DLTK foi uma agradavel surpresa …
Ainda mais agora que estou tomeçando a programar em Ruby também …
O Code Complete do DLTK é perfeito para Ruby pelo menos, des de que sejam adicionadas todas as bibliotecas ao “classpath” do interpretador configurado …
Um problema que encontrei é que pelo menos no windows, ele impede a utilização de um “.bat” como interpretador, ou seja, é impossivel utilizar o JRuby com o DLTK pelo menos por enquanto, mas isto não chega a ser um problema para quem utiliza algum *nix (como o Ubuntu no meu caso).
Uma coisa que ainda esta faltando no DLTK é o suporte a edição de arquivos rhtml, claro, eu posso configurar eles como HTML no eclipse para trabalhar com Rails, mas não funciona tão bem assim por que o eclipse começa a marcar como erros os locais onde existe código Ruby no meio do HTML.

Alem de Ruby o DLTK vem de fabrica com suporte a Tcl/TK, Javascript e tem um tutorial do tipo “faça você mesmo”, para que você crie uma IDE para Python usando o DLTK …

Business Intelligence and Reporting Tools (BIRT)

O BIRT é o “gerador de relatórios” para o Eclipse, eu testei ele, fiz algumas palestras sobre ele, utilizei em clientes e achei espetacular …
Nesta nova versão, para mim, a melhor novidade foi o suporte a crosstables, mas a performance melhorou muito também …


Bom, eu não sou o maior expert em Eclipse do planeta, mas ja uso a ferramenta a algum tempo, e o Eclipse é o culpado por eu não conseguir aproveitar a licensa do IntelliJ IDEA que eu ganhei de gratis …
Mesmo eu sabendo de coisas que o IDEA faz que o eclipse não faz, e que facilitam muito a vida, eu não consigo me acostumar com outra IDE sem um esforço consideravel …
Então, recomendo que vocês pelo menos testem esta nova versão do Eclipse, esta muito bom mesmo …

PS.: acho que este review vale uma das camisetas, pena que acho pouco provável ganhar a jaqueta hehehe :D

Se você gostou deste post, lembre-se de assinar o RSS feed do blog, para ser notificado de novos posts!

Eclipse com suporte a Subversion de fabrica :D

Pois é isto mesmo, provavelmente as proximas versões do eclipse ja virão com suporte a Subversion “de fábrica” :D
Eu lembro de uma discussão a algum tempo, sobre qual seria a implementação a ser incluida por padrão no eclipse (Subclipse ou Subversive).

não sei se é noticia muito velha, mas a discussão ja acabou!

O Subversive, agora é um subprojeto do Eclipse!

O projeto ainda esta incubado, mas tem tudo para sair da incubação rapidinho.

Infelizmente não vai ser a tempo do Europa …

Se você gostou deste post, lembre-se de assinar o RSS feed do blog, para ser notificado de novos posts!

Melhores teclas de atalho do Eclipse

Seguindo a ideia deste, e deste post no GUJ, resolvi postar aqui a minha lista de atalhos favoritos do eclipse, apenas aqueles que eu uso com uma certa frequencia para evitar tirar as mãos do teclado e precisar usar o mouse para realizar pequenas tarefas que são na maioria das vezes, realizadas com mais rapidez e facilidade apenas com o teclado …
Os atalhos não estão em nenhuma ordem especifica, fora os dois primeiros que com certeza são os mais importantes de todos eles: Read the rest of this entry »

Se você gostou deste post, lembre-se de assinar o RSS feed do blog, para ser notificado de novos posts!

Pequenos detalhes, grandes diferenças

Bom, só pra não parecer que eu abandonei o blog.
Tenho 5 cursos para ministrar no próximo mes, e não terminei o material de todos ainda, por isto não tenho escrito muita coisa por aqui (hoje a noite um post de pura propaganda sobre o próximo curso da Tech Office em Porto Alegre :D )
Mas voltando ao assunto, olhem esta imagem:
eclipse33m6.GIF
O Eclipse 3.3, finalmente resolver agrupar todos aqueles jars que adicionamos no classpath do projeto dentro de um único container …
O que deixa muito mais limpo o ambiente, e pelo menos na minha opinião, mais fácil de trabalhar …
Ja estava na hora mesmo, o NetBeans e o IDEA ja trabalham assim há bastante tempo.

Se você gostou deste post, lembre-se de assinar o RSS feed do blog, para ser notificado de novos posts!

Eclipse - Callisto : Europa! Tudo o que você queria, e mais um monte de coisas …

Bom, precisei trocar de maquina no trampo hoje, a maquina que eu estava usando era alugada, e acabou de chegar a maquina que vou usar, então isto significa, instalar o eclipse novamente. Mas como quem me conhece sabe que sou bastante teimoso, e metido a testador de coisas novas :D
Resolvi ir pelo caminho mais dificil, mas um pouquinho mais divertido :D Read the rest of this entry »

Se você gostou deste post, lembre-se de assinar o RSS feed do blog, para ser notificado de novos posts!

Eclipse 3.3M5 + WebTools 2.0 = Drag`n`Drop para páginas WEB no Eclipse (WYSIWYG)

É, como eu comentei no outro post, eu estou brincando um pouquinho com o Eclipse 3.3M5, e acabei de testar um esquema nele que esta ficando bem legal …

O webtools 2.0, vem com um editor visual (que até quebra um galho) para páginas WEB, com suporte para JSPs e JSF (pelo menos foi o que eu testei até agora …

O editor é bem parecido com o que vem no Exadel, tem drag`n`drop de componentes de todas as taglibs disponiveis no classpath do projeto (não sei se ele mostra qualquer uma de forma visual, mas as de JSF que eu testei apareciam de forma visual, até mesmo a dataTable do RI-Sandbox que estou usando (ela gera um elemento caption quando se adiciona a facet caption) …

As propriedades da tag podem ser editadas via código ou via a view de properties padrão do eclipse.

Deem uma olhadinha na cara do brinquedo novo :D
eclipse33m5webtools2.JPG

É só clicar na imagem para amplia-la …

PS.: eu sei que o visual pack do netbeans ja faz isto, mas com o visalpack eu tenho que usar a estrutura de código dele, com este eu uso da forma como eu quiser …

O editor ainda não esta perfeito, mas esta prometendo :D
Pelo menos a aba de preview ja esta bem legal :D
Alguem mais por ai ja esta testando o eclipse 3.3 com webtools 2.0?

Se você gostou deste post, lembre-se de assinar o RSS feed do blog, para ser notificado de novos posts!

Eclipse 3.3M5 - primeiras impressões

Este não é exatamente um post útil, mas estou com o eclipse 3.3M5 instalado aqui e resolvi escrever algumas coisinhas que achei legais nele …

a versão exata dos plugins que tenho instalados aqui para o 3.3M5 funcionar é esta (ja que para esta versão o Calisto ainda não rola … ): Read the rest of this entry »

Se você gostou deste post, lembre-se de assinar o RSS feed do blog, para ser notificado de novos posts!

Ambiente básico para desenvolvimento Java/Web + Configuração Eclipse.

Bom, tem bastante gente em foruns e listas de discução que quer saber o que precisa para começar a desenvolver em java para web …

E como Hoje pela milhonésima vez precisei montar um ambiente de desenvolvimento para mim …

Resolvi então escrever este post como um passo a passo bem simples de como montar um ambiente, mas não se esqueça, que logo depois deste ambiente montado, você vai precisar estudar muito a API de Servlets e JSPs. Por favor, não tente nem começar a programar em java antes de entender orientação a objetos, e não tente desenvolver em java para web antes de entender a API de Servlets e JSPs, o que é possivel colocar no web.xml, o que ele faz, o que é um FIlter, quais são os tipos de Listeners disponibilizados pela API, para que servem os metodos de um servlet, a ordem de chamada deles, …

Estas e outras coisinhas básicas são necessárias para se desenvolver um sistema web em java, mas para facilitar o estudo, e poder trabalhar depois dele, um bom ambiente de desenvolvimento é necessário …

E a ideia deste post é mostar uma forma fácil de montar este ambiente, apenas com ferramentas gratuitas …
Read the rest of this entry »

Se você gostou deste post, lembre-se de assinar o RSS feed do blog, para ser notificado de novos posts!