<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Rubens Gadelha &#187; Vaadin</title>
	<atom:link href="http://www.rubensgadelha.com.br/tag/vaadin/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.rubensgadelha.com.br</link>
	<description>Tecnologia da Informação e Atualidades</description>
	<lastBuildDate>Mon, 22 Feb 2010 15:38:35 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Tutorial com exemplo de integração Vaadin + Hibernate utilizando a classe HbnContainer</title>
		<link>http://www.rubensgadelha.com.br/2010/02/22/tutorial-com-exemplo-de-integracao-vaadin-hibernate-utilizando-a-classe-hbncontainer/</link>
		<comments>http://www.rubensgadelha.com.br/2010/02/22/tutorial-com-exemplo-de-integracao-vaadin-hibernate-utilizando-a-classe-hbncontainer/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 15:38:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Vaadin]]></category>

		<guid isPermaLink="false">http://www.rubensgadelha.net/?p=192</guid>
		<description><![CDATA[Neste tutorial irei apresentar um exemplo de como alimentar uma listagem (componente Table) do Vaadin simplesmente configurando seu DataSource como sendo uma classe-entidade do Hibernate.
Utilizaremos uma classe bastante interessante chamada HbnContainer, que está na incubadora, portanto, ainda não faz parte do core do Vaadin. Baixe-a neste link e junte ao código-fonte do seu projeto.
Primeiro adicione [...]]]></description>
			<content:encoded><![CDATA[<p>Neste tutorial irei apresentar um exemplo de como alimentar uma listagem (componente <a title="Vaadin Table" href="http://vaadin.com/book/-/page/components.table.html" target="_blank">Table</a>) do Vaadin simplesmente configurando seu DataSource como sendo uma classe-entidade do Hibernate.</p>
<p>Utilizaremos uma classe bastante interessante chamada <a href="http://dev.vaadin.com/browser/incubator/hbncontainer/src/com/itmill/toolkit/data/hbnutil/HbnContainer.java?rev=6383" target="_blank">HbnContainer</a>, que está na incubadora, portanto, ainda não faz parte do core do Vaadin. Baixe-a <a href="http://dev.vaadin.com/browser/incubator/hbncontainer/src/com/itmill/toolkit/data/hbnutil/HbnContainer.java?rev=6383" target="_blank">neste link</a> e junte ao código-fonte do seu projeto.</p>
<p>Primeiro adicione o seguite código ao método init() da sua classe Application (AlunosApplication, no meu caso), ele irá gerenciar as sessões do Hibernate, fechando-as no final de cada transação:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> AlunosApplication <span style="color: #000000; font-weight: bold;">extends</span> Application <span style="color: #000000; font-weight: bold;">implements</span> SessionManager <span style="color: #009900;">&#123;</span>
    @Override
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> init<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        getContext<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">addTransactionListener</span><span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">new</span> TransactionListener<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            @Override
            <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> transactionEnd<span style="color: #009900;">&#40;</span>Application application, <span style="color: #003399;">Object</span> transactionData<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>application <span style="color: #339933;">==</span> BiometriaApplication.<span style="color: #000000; font-weight: bold;">this</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
                    closeSession<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
                <span style="color: #009900;">&#125;</span>
            <span style="color: #009900;">&#125;</span>
&nbsp;
            @Override
            <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> transactionStart<span style="color: #009900;">&#40;</span>Application application, <span style="color: #003399;">Object</span> transactionData<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span></pre></div></div>

<p>Faça com que a sua classe Application implemente a interface <strong>SessionManager</strong>, que pertence a <strong>HbnContainer</strong>. Em seguida, adicione a ela os seguintes métodos:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;">    <span style="color: #008000; font-style: italic; font-weight: bold;">/**
     * Retorna a sessão atual do Hibernate. 
     * Também assegura uma transação aberta do Hibernate.
     */</span>
    <span style="color: #000000; font-weight: bold;">public</span> Session getSession<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        Session currentSession <span style="color: #339933;">=</span> HibernateUtil.<span style="color: #006633;">getSessionFactory</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getCurrentSession</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span>currentSession.<span style="color: #006633;">getTransaction</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">isActive</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            currentSession.<span style="color: #006633;">beginTransaction</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #000000; font-weight: bold;">return</span> currentSession<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000066; font-weight: bold;">void</span> closeSession<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        Session sess <span style="color: #339933;">=</span> HibernateUtil.<span style="color: #006633;">getSessionFactory</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">getCurrentSession</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000000; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>sess.<span style="color: #006633;">getTransaction</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">isActive</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            sess.<span style="color: #006633;">getTransaction</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">commit</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
        <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>sess.<span style="color: #006633;">isOpen</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> sess.<span style="color: #006633;">close</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span></pre></div></div>

<p>A classe <strong>HibernateUtil</strong>, citada no código acima, irá nos fornecer as sessões do Hibernate:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">net.rubensgadelha.alunos.util</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.hibernate.SessionFactory</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.hibernate.cfg.AnnotationConfiguration</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> HibernateUtil <span style="color: #009900;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #000000; font-weight: bold;">final</span> SessionFactory sessionFactory<span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">static</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">try</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #666666; font-style: italic;">// Cria o SessionFactory com base no arquivo hibernate.cfg.xml</span>
            sessionFactory <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> AnnotationConfiguration<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">configure</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">buildSessionFactory</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">catch</span> <span style="color: #009900;">&#40;</span><span style="color: #003399;">Throwable</span> ex<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #003399;">System</span>.<span style="color: #006633;">err</span>.<span style="color: #006633;">println</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Falha na inicialização da SessionFactory: &quot;</span> <span style="color: #339933;">+</span> ex<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #000000; font-weight: bold;">throw</span> <span style="color: #000000; font-weight: bold;">new</span> <span style="color: #003399;">ExceptionInInitializerError</span><span style="color: #009900;">&#40;</span>ex<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> SessionFactory getSessionFactory<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">return</span> sessionFactory<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Agora que já concluímos o ambiente <strong>Vaadin + Hibernate</strong>, criemos a classe mapeada pelo Hibernate:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">net.rubensgadelha.alunos.bean</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">java.io.Serializable</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.persistence.Column</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.persistence.Entity</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.persistence.Id</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">javax.persistence.Table</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.hibernate.validator.Length</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">org.hibernate.validator.NotNull</span><span style="color: #339933;">;</span>
&nbsp;
@SuppressWarnings<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;serial&quot;</span><span style="color: #009900;">&#41;</span>
@<span style="color: #003399;">Entity</span>
@Table<span style="color: #009900;">&#40;</span>name<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;alunos&quot;</span><span style="color: #009900;">&#41;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> Aluno <span style="color: #000000; font-weight: bold;">implements</span> <span style="color: #003399;">Serializable</span> <span style="color: #009900;">&#123;</span>
&nbsp;
    @Id
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">Long</span> oid<span style="color: #339933;">;</span>
&nbsp;
    @Column<span style="color: #009900;">&#40;</span>name<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;matricula&quot;</span>, nullable<span style="color: #339933;">=</span><span style="color: #000066; font-weight: bold;">false</span>, length<span style="color: #339933;">=</span><span style="color: #cc66cc;">5</span><span style="color: #009900;">&#41;</span>
    @NotNull
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">Integer</span> matricula<span style="color: #339933;">;</span>
&nbsp;
    @Column<span style="color: #009900;">&#40;</span>name<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;nome&quot;</span><span style="color: #009900;">&#41;</span>
    @NotNull @Length<span style="color: #009900;">&#40;</span>min<span style="color: #339933;">=</span><span style="color: #cc66cc;">5</span>, max<span style="color: #339933;">=</span><span style="color: #cc66cc;">50</span><span style="color: #009900;">&#41;</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">String</span> nome<span style="color: #339933;">;</span>
&nbsp;
    @Column<span style="color: #009900;">&#40;</span>name<span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;email&quot;</span><span style="color: #009900;">&#41;</span>
    <span style="color: #000000; font-weight: bold;">private</span> <span style="color: #003399;">String</span> email<span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> setOid<span style="color: #009900;">&#40;</span><span style="color: #003399;">Long</span> oid<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">oid</span> <span style="color: #339933;">=</span> oid<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">Long</span> getOid<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">return</span> oid<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> setMatricula<span style="color: #009900;">&#40;</span><span style="color: #003399;">Integer</span> matricula<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">matricula</span> <span style="color: #339933;">=</span> matricula<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">Integer</span> getMatricula<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">return</span> matricula<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">String</span> getNome<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">return</span> nome<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> setNome<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> nome<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">nome</span> <span style="color: #339933;">=</span> nome<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #003399;">String</span> getEmail<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">return</span> email<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">void</span> setEmail<span style="color: #009900;">&#40;</span><span style="color: #003399;">String</span> email<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000000; font-weight: bold;">this</span>.<span style="color: #006633;">email</span> <span style="color: #339933;">=</span> email<span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Finalmente, informamos que a classe acima, que representa uma tabela no banco de dados, irá popular a tabela do Vaadin representada na classe abaixo:</p>

<div class="wp_syntax"><div class="code"><pre class="java" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">package</span> <span style="color: #006699;">net.rubensgadelha.alunos.ui</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">net.rubensgadelha.alunos.AlunosApplication</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">net.rubensgadelha.alunos.bean.Aluno</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">net.rubensgadelha.alunos.util.HbnContainer</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">import</span> <span style="color: #006699;">com.vaadin.ui.Table</span><span style="color: #339933;">;</span>
&nbsp;
@SuppressWarnings<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;serial&quot;</span><span style="color: #009900;">&#41;</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">class</span> TabelaAlunos <span style="color: #000000; font-weight: bold;">extends</span> Table <span style="color: #009900;">&#123;</span>
&nbsp;
    <span style="color: #000000; font-weight: bold;">public</span> ListaAlunos<span style="color: #009900;">&#40;</span>AlunosApplication app<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        HbnContainer hbn <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> HbnContainer<span style="color: #009900;">&#40;</span>Aluno.<span style="color: #000000; font-weight: bold;">class</span>, app<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        setContainerDataSource<span style="color: #009900;">&#40;</span>hbn<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>Pronto! Agora basta que você adicione o componente acima na sua aplicação e você verá que ele será automaticamente populado com os dados do banco.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rubensgadelha.com.br/2010/02/22/tutorial-com-exemplo-de-integracao-vaadin-hibernate-utilizando-a-classe-hbncontainer/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Desenvolva RIA&#8217;s rapidamente com o framework Java Vaadin</title>
		<link>http://www.rubensgadelha.com.br/2010/02/19/desenvolva-rias-rapidamente-com-o-framework-java-vaadin/</link>
		<comments>http://www.rubensgadelha.com.br/2010/02/19/desenvolva-rias-rapidamente-com-o-framework-java-vaadin/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 16:02:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Vaadin]]></category>

		<guid isPermaLink="false">http://www.rubensgadelha.net/?p=182</guid>
		<description><![CDATA[Se você gosta de desenvolver RIA&#8217;s (Rich Internet Applications), não poderá deixar de conhecer o framework Java Vaadin. Com ele você produzirá interfaces bastante interessantes e semelhantes às de uma aplicação desktop, porém, sem preocupar-se com código HTML, CSS ou Javascript, ou seja, você desenvolve 100% em Java como se fosse uma aplicação com Swing, [...]]]></description>
			<content:encoded><![CDATA[<p>Se você gosta de desenvolver <a href="http://pt.wikipedia.org/wiki/Internet_rica" target="_blank">RIA</a>&#8217;s (<a href="http://pt.wikipedia.org/wiki/Internet_rica" target="_blank">Rich Internet Applications</a>), não poderá deixar de conhecer o framework Java <a href="http://vaadin.com">Vaadin</a>. Com ele você produzirá interfaces bastante interessantes e semelhantes às de uma aplicação desktop, porém, sem preocupar-se com código HTML, CSS ou Javascript, ou seja, você desenvolve 100% em Java como se fosse uma aplicação com Swing, pois tanto o processo de desenvolvimento quanto os componentes disponibilizados são bem parecidos, e o framework irá gerar todas as janelas, botões, <em>popups</em>, menus em HTML com temas CSS atraentes e personalizáveis e toda integração entre os componentes já implementada via ajax utilizando o famoso <a title="Google Web Toolkit" href="http://code.google.com/intl/pt-BR/webtoolkit/" target="_blank">GWT &#8211; Google Web Toolkit</a> &#8211; de onde provêm também seus <em>widgets</em>.</p>
<p>Para aprender mais sobre esse framework, o site oficial disponibiliza (em inglês), <a title="Tutoriais do Vaadin" href="http://vaadin.com/tutorial" target="_blank">três tutorais</a>: Uma versão que pode ser concluída em 5 minutos para uma breve iniciação, outra que durará em média 1 hora e, para quem desejar se aprofundar mais no assunto, eles disponibilizam o <a title="Book of Vaadin" href="http://vaadin.com/book" target="_blank">Book of Vaadin</a>, cuja leitura e análise duram em média 1 dia.</p>
<div id="attachment_185" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-185 " title="Exemplo-Vaadin" src="http://www.rubensgadelha.net/wp-content/uploads/2010/02/finished-application1-300x156.png" alt="Exemplo de aplicação com Vaadin" width="300" height="156" /><p class="wp-caption-text">Exemplo de aplicação com Vaadin</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.rubensgadelha.com.br/2010/02/19/desenvolva-rias-rapidamente-com-o-framework-java-vaadin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

