<?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>PauloMotta.pro &#187; APLICAÇÃO</title>
	<atom:link href="http://www.paulomotta.pro.br/tag/aplicacao/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.paulomotta.pro.br</link>
	<description>&#34;Qualquer tecnologia suficientemente avançada é indistinguível da mágica&#34; - Arthur C. Clarke</description>
	<lastBuildDate>Thu, 09 Sep 2010 16:39:25 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Tutorial JPA</title>
		<link>http://www.paulomotta.pro.br/2010/05/17/tutorial-jpa/</link>
		<comments>http://www.paulomotta.pro.br/2010/05/17/tutorial-jpa/#comments</comments>
		<pubDate>Mon, 17 May 2010 10:00:29 +0000</pubDate>
		<dc:creator>prmottajr</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Principal]]></category>
		<category><![CDATA[Tutoriais]]></category>
		<category><![CDATA[APLICAÇÃO]]></category>
		<category><![CDATA[JAVA]]></category>
		<category><![CDATA[JPA]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[OBJETOS]]></category>
		<category><![CDATA[PROGRAMAÇÃO]]></category>
		<category><![CDATA[SISTEMA]]></category>
		<category><![CDATA[WEB]]></category>

		<guid isPermaLink="false">http://www.paulomotta.pro.br/?p=452</guid>
		<description><![CDATA[Já há algum tempo eu vinha planejando colocar aqui no site alguns tutoriais, mas o tempo sempre curto me atrapalhava muito. Esse período porém eu tenho um aliado, decidi usar na faculdade o JPA nas disciplinas de Java e de Web, então para economizar o tempo de explicações nada melhor do que colocar aqui o [...]]]></description>
			<content:encoded><![CDATA[<p>Já há algum tempo eu vinha planejando colocar aqui no site alguns tutoriais, mas o tempo sempre curto me atrapalhava muito. Esse período porém eu tenho um aliado, decidi usar na faculdade o JPA nas disciplinas de Java e de Web, então para economizar o tempo de explicações nada melhor do que colocar aqui o primeiro tutorial de como usar JPA (com o auxílio do Netbeans.)</p>
<p>Vamos começar com o que será necessário. Primeiro de tudo meu ambiente é um linux configurado em inglês por isso as telas aqui estão em inglês, então pode ser que precise adaptar os detalhes das telas para o seu ambiente. Aqui eu uso tanto MySQL quanto PostgreSQL, mas nesse tutorial vou assumir que existe um MySQL instalado com um banco de dados criado de nome &#8220;curso&#8221; com um usuário &#8220;javadb&#8221; (e a senha você precisa saber qual configurou aí.) Infelizmente a configuração do MySQL não está no nosso escopo, mas qualquer banco de dados relacional serve (só precisa mudar durante a configuração conforme vou mostrar mais a frente.) Finalmente a última definição é usar o Netbeans 6.7, já temos o 6.8 disponível, mas por questões de projeto ainda não migrei nem testei ele, já a versão 6.7.1 tem alguns problemas com detalhes de web e CVS então sugiro ficar com o 6.7 por enquanto, e pode ser encontrado <a href="http://netbeans.org/downloads/6.7/index.html" target="_blank">aqui</a>.</p>
<p>Então agora vamos começar!</p>
<p>Primeiro precisamos entender do que estamos falando, isso costuma ajudar muito no desenvolvimento de qualquer coisa na vida. JPA é a sigla para Java Persistence Api, ou seja, uma especificação de persistência para Java. Isso significa que depois de anos de trabalho tentando mapear sistemas orientados a objetos em bancos de dados relacionais aprendemos quais são os problemas recorrentes e as soluções foram sendo catalogadas. O resultado disso ao longo dos anos foi a construção de ferramentas que ofereciam soluções parcialmente automáticas. Com a chegada do EJB3 a Sun mudou os Entity Beans (entidades do sistema) para marcar seus relacionamentos via anotações, e além disso incorporou os mecanismos das diversas ferramentas de persistência. Como implementação de referência a Oracle disponibilizou gratuitamente o TopLink, na época Oracle ainda não tinha comprado a Sun.</p>
<p>É claro que usar uma ferramenta de persistência pode sacrificar um pouco o desempenho da aplicação, mas tenha em mente o seguinte, nem todas as partes do sistema precisam ser extremamente rápidas. Quando alguma das partes do sistema não estiver satisfatória podemos deixar de lado a ferramenta e prover alguma solução construída manualmente. Mas por experiência própria, são poucas as vezes que isso é necessário em sistemas de informação.</p>
<p>Então para fechar a parte teórica e começarmos a meter a mão na massa. A Sun já tinha proposto anteriormente o JDBC que é a especificação que permite que os fornecedores de bancos de dados disponibilizem os drivers para acessar seus produtos, agora com o JPA temos o papel de provedor de persistência, neste caso temos <a href="http://www.hibernate.org/" target="_blank">Hibernate</a>, <a href="http://www.oracle.com/technology/products/ias/toplink/index.html" target="_blank">TopLink</a>, <a href="http://www.eclipse.org/eclipselink/" target="_blank">EclipseLink</a> e assim por diante. Entre estes eu não usei ainda o eclipse link.</p>
<p>Agora então temos uma nova camada entre a aplicação e o banco de dados tentando tornar a aplicação cada vez mais independente de tecnologias de infraestrutura. Para o nosso exemplo vamos usar o TopLink que já vem com o Netbeans simplesmente porque o Hibernate requer que a aplicação seja gerenciada por um container, se a ideia fosse uma aplicação web isso seria mais fácil, mas vou usar aqui uma aplicação desktop.</p>
<p>Vamos começar então criando um projeto Java no Netbeans. Escolha Java e Aplicação Java como na figura a seguir.</p>
<p><a href="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/1.jpg"><img class="aligncenter size-medium wp-image-453" title="Iniciando um projeto no Netbeans" src="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/1-300x215.jpg" alt="" width="300" height="215" /></a></p>
<p>Agora precisamos dar um nome ao projeto, sugiro TutorialJPA, uma coisa que o Netbeans sempre faz é perguntar se você quer criar uma classe main, pode desabilitar essa opção. E vamos escolher finalizar.</p>
<p><a href="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/2.jpg"><img class="aligncenter size-medium wp-image-459" title="Nome do projeto" src="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/2-300x215.jpg" alt="" width="300" height="215" /></a></p>
<p>Agora que temos um projeto para trabalhar fica tudo um pouco mais fácil. Para entender melhor o que vamos fazer, a ideia e criar uma aplicação que grave as informações de uma classe Livro no banco de dados. Então precisamos de uma entidade Livro, e vou usar os atributos título, autor, isbn e número de páginas. Para isso vamos criar um pacote java de nome &#8220;domain&#8221; para guardar todas as entidades do nosso pequeno sistema.</p>
<p><a href="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/3.jpg"><img class="aligncenter size-medium wp-image-461" title="Criando um pacote java" src="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/3-300x274.jpg" alt="" width="300" height="274" /></a></p>
<p>E em seguida indique o nome do pacote, domain.</p>
<p><a href="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/4.jpg"><img class="aligncenter size-medium wp-image-462" title="nome do pacote" src="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/4-300x215.jpg" alt="" width="300" height="215" /></a></p>
<p>Certo, agora vamos criar a classe de entidade, para isso temos a opção criar nova classe de entidade que já considera que você vai usar as facilidades de JPA.</p>
<p><a href="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/5.jpg"><img class="aligncenter size-medium wp-image-465" title="criando uma classe de entidade" src="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/5-300x284.jpg" alt="" width="300" height="284" /></a></p>
<p>Agora precisamos escolher o nome da entidade, Livro.</p>
<p><a href="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/61.jpg"><img class="aligncenter size-medium wp-image-467" title="Classe de entidade Livro" src="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/61-300x215.jpg" alt="" width="300" height="215" /></a></p>
<p>Note que usamos o tipo Long para o id dos objetos, além disso o Netbeans no diz que não tem uma unidade de persitência configurada, agora começa a mágica do negócio. Antes de criar essa unidade de persistência, vamos entender do que se trata, para que a nossa aplicação tenha tantas indepedências precisamos configurar em algum lugar onde está o banco, e que tipo de banco estamos usando. Isso é feito em um xml que fica embutido no projeto, se você quiser mudar alguma coisa do banco, basta mexer nesse xml sem compilar nada! Aqui escolhemos Toplink, damos um nome para referenciar dentro da aplicação e precisamos escolher também qual a conexão com o banco de dados. Além disso podemos escolher o comportamento do JPA, se deve criar; remover e criar, ou não tomar ações em relação as tabelas, sim! O JPA pode criar as tabelas para nós no banco de ddaos!</p>
<p><a href="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/7.jpg"><img class="aligncenter size-medium wp-image-468" title="unidade de persistencia" src="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/7-300x160.jpg" alt="" width="300" height="160" /></a></p>
<p>Uma facilidade que o Netbeans nos oferece é criar a conexão durante este processo, é claro que se você já tiver conexões de banco de dados (até porque o Netbeans permite conectar no banco e executar comandos SQL) você pode simplesmente escolher. É claro que aqui eu vou mostrar como criar.</p>
<p><a href="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/8.jpg"><img class="aligncenter size-medium wp-image-469" title="conexao com o banco" src="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/8-300x160.jpg" alt="" width="300" height="160" /></a></p>
<p>E agora configurar a conexão, colocando driver, endereço, nome do banco de dados, login e senha, escolhi também para lembrar a senha.</p>
<p><a href="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/9.jpg"><img class="aligncenter size-medium wp-image-470" title="configuracao de conexao de banco" src="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/9-300x247.jpg" alt="" width="300" height="247" /></a></p>
<p>Terminando esse processo voltamos para a tela de criação da unidade de persistência e clicamos em criar.</p>
<p><a href="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/11.jpg"><img class="aligncenter size-medium wp-image-471" title="conexao criada" src="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/11-300x160.jpg" alt="" width="300" height="160" /></a></p>
<p>O resultado é uma tela que nos permite visualizar de forma amigável o conteúdo do arquivo xml.</p>
<p><a href="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/12.jpg"><img class="aligncenter size-medium wp-image-472" title="visualizando o pu" src="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/12-300x162.jpg" alt="" width="300" height="162" /></a></p>
<p>Agora vamos retomar nossa classe de Entidade, é claro que se fossemos criar várias classes de entidade, apenas na primeira vez seria necessário. Bom podemos ver que a classe Livro foi criada apenas com o atributo id, e vamos colocar agora 4 novos atributos que estão marcados na figura a seguir.</p>
<p><a href="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/13.jpg"><img class="aligncenter size-medium wp-image-475" title="atributos da classe livro" src="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/13-300x162.jpg" alt="" width="300" height="162" /></a></p>
<p>Pela especificação de java beans (já bem antiga) devemos criar os métodos acessores (get/set) para esses atributos, mas calma! O Netbeans ajuda a gente nisso. Para isso vamos clicar com o botão direito do lado de qualquer um dos atributos e aparecerá um menu no qual vamos escolher Refatorar.</p>
<p><a href="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/14.jpg"><img class="aligncenter size-medium wp-image-476" title="refatorar" src="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/14-153x300.jpg" alt="" width="153" height="300" /></a></p>
<p>Depois disso aparecerá outro menu no qual vamos escolher Encapsular Campos.</p>
<p><a href="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/15.jpg"><img class="aligncenter size-medium wp-image-477" title="encapsular campos" src="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/15-204x300.jpg" alt="" width="204" height="300" /></a></p>
<p>Com isso aparecerá uma nova tela na qual vamos escolher quais campos (atributos) queremos encapsular. Vamos escolher os quatro atributos que acabamos de criar.</p>
<p><a href="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/16.jpg"><img class="aligncenter size-medium wp-image-478" title="escolher os atributos" src="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/16-300x192.jpg" alt="" width="300" height="192" /></a></p>
<p>Agora temos um detalhe, quando a classe foi criada o Netbeans gerou para a gente automanticamente dois métodos importantes o equals e o hashCode, esses métodos são fundamentais para conseguir comparar corretamente dois objetos, só que como criamos atributos novos precisamos recriar esses métodos, e novamente vamos ter uma ajuda. Podemos remover os métodos gerados.</p>
<p><a href="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/17.jpg"><img class="aligncenter size-medium wp-image-480" title="equals e hashCode original" src="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/17-300x162.jpg" alt="" width="300" height="162" /></a></p>
<p>Agora podemos recriar os métodos clicando novamente com o botão direito na tela, dentro da classe e escolhendo inserir código.</p>
<p><a href="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/18.jpg"><img class="aligncenter size-medium wp-image-481" title="inserir codigo" src="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/18-300x162.jpg" alt="" width="300" height="162" /></a></p>
<p>E uma nova janela aparece onde escolhemos equals e hashCode.</p>
<p><a href="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/19.jpg"><img class="aligncenter size-full wp-image-482" title="equals e hashCode" src="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/19.jpg" alt="" width="153" height="134" /></a></p>
<p>Agora, surgirá uma nova tela onde podemos escolher os atributos que serão usados para comparar dois objetos.</p>
<p><a href="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/21.jpg"><img class="aligncenter size-medium wp-image-483" title="escolha de atributos" src="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/21-300x190.jpg" alt="" width="300" height="190" /></a></p>
<p>Antes de continuar, vamos dar uma pausa para uma outra configuração, precisamos importar para o nosso projeto a biblioteca do MySQL, como esse passo é bem simples é um bom momento para descansar a cabeça <img src='http://www.paulomotta.pro.br/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Então agora vamos clicar com o botão direito sobre o projeto e vamos escolher propriedades.</p>
<p><a href="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/30.jpg"><img class="aligncenter size-medium wp-image-484" title="propriedades do projeto" src="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/30-300x162.jpg" alt="" width="300" height="162" /></a></p>
<p>Isso nos abre uma outra tela na qual vamos escolher a opção bibliotecas. E agora vamos escolher adicionar bibliotecas.</p>
<p><a href="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/31.jpg"><img class="aligncenter size-medium wp-image-485" title="escolher bibliotecas 1" src="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/31-300x234.jpg" alt="" width="300" height="234" /></a></p>
<p>Com isso vai aparecer a opção para escolhermos quais as bibliotecas queremos adicionar, neste caso a do MySQL.</p>
<p><a href="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/32.jpg"><img class="aligncenter size-medium wp-image-486" title="biblioteca do mysql" src="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/32-261x300.jpg" alt="" width="261" height="300" /></a></p>
<p>Fim dos comerciais, agora podemos voltar ao nosso projeto. Vamos agora criar um pacote java chamado app onde ficará nossa classe de &#8220;aplicação&#8221; que vai representar o que seria uma interface gráfica por exemplo. Isso já está explicado aí em cima né ? Então vamos seguir para criar uma classe Java tradicional.</p>
<p><a href="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/231.jpg"><img class="aligncenter size-medium wp-image-488" title="classe de aplicacao" src="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/231-283x300.jpg" alt="" width="283" height="300" /></a></p>
<p>E basta agora dar o nome de Aplicacao e colocar a classe no pacote app. Vamos deixar essa classe em banho-maria por enquanto. Vamos seguir agora para uma outra parte mágica do JPA, o Netbeans permite criar um tipo de classe chamado JPAController, aplicando o padrão de projetos Controller, ele permite fazer a ponte entre a classe de entidade e o banco de dados efetivamente. Quando criada, está classe já vem com as operações básicas, e que muitas vezes são suficientes para alguns cadastros. Algumas vezes o tipo de recurso que queremos criar não está disponível no menu, basta ir até &#8220;outros&#8221;.</p>
<p><a href="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/24.jpg"><img class="aligncenter size-medium wp-image-489" title="outras classes" src="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/24-234x300.jpg" alt="" width="234" height="300" /></a></p>
<p>E em seguida escolher em persistência, JPAController.</p>
<p><a href="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/25.jpg"><img class="aligncenter size-medium wp-image-490" title="jpacontroller" src="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/25-300x215.jpg" alt="" width="300" height="215" /></a></p>
<p>Agora uma nova tela surgirá para que escolhamos para qual Entidade vamos criar o JPAController, sim, para cada entidade teremos um controller diferente.</p>
<p><a href="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/26.jpg"><img class="aligncenter size-medium wp-image-491" title="escolha de entidade" src="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/26-300x203.jpg" alt="" width="300" height="203" /></a></p>
<p>Em nosso projeto só existe uma entidade, e portanto fica fácil de escolher, basta clicar na classe domain.Livro e clicar em adicionar, depois vamos para a próxima tela onde vamos escolher em que pacote as classes vão ser criadas.</p>
<p><a href="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/28.jpg"><img class="aligncenter size-medium wp-image-492" title="pacote do jpa" src="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/28-300x191.jpg" alt="" width="300" height="191" /></a></p>
<p>Neste momento estamos com toda a infraestrutura do nosso projeto criada e podemos retomar a nossa classe de aplicação que vai utilizar todos esses mecanismos. Para conferir a estrutura e as classes criadas segue a próxima figura.</p>
<p><a href="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/29.jpg"><img class="aligncenter size-medium wp-image-493" title="classes criadas" src="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/29-237x300.jpg" alt="" width="237" height="300" /></a></p>
<p>Agora retomando nossa classe de aplicação, o que queremos fazer com um banco de dados ? Persistir os dados de nossa aplicação! Então precisamos criar objetos, preencher os valores, criar uma instância de JPAController e chamar os métodos para realizar as ações desejadas. Nesta figura temos todos os usos das chamadas, criar, buscar, editar e remover. Esse código precisa ser colocado no método main da nossa classe Aplicacao.</p>
<p><a href="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/34.jpg"><img class="aligncenter size-medium wp-image-494" title="codigo" src="http://www.paulomotta.pro.br/wp-content/uploads/2010/05/34-300x164.jpg" alt="" width="300" height="164" /></a></p>
<p>É isso, é claro que até aqui só temos o suficiente para criar um pequeno projeto, mas podemos ampliar os estudos com alguns livros importantes, mais para frente vou colocar aqui umas resenhas de livros importantes para esse tópico.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulomotta.pro.br/2010/05/17/tutorial-jpa/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Diminuindo o risco de alergia com o iPhone</title>
		<link>http://www.paulomotta.pro.br/2010/04/16/diminuindo-o-risco-de-alergia-com-o-iphone/</link>
		<comments>http://www.paulomotta.pro.br/2010/04/16/diminuindo-o-risco-de-alergia-com-o-iphone/#comments</comments>
		<pubDate>Fri, 16 Apr 2010 15:00:23 +0000</pubDate>
		<dc:creator>prmottajr</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Inovação]]></category>
		<category><![CDATA[Principal]]></category>
		<category><![CDATA[Tendências]]></category>
		<category><![CDATA[APLICAÇÃO]]></category>
		<category><![CDATA[INFORMAÇÃO]]></category>
		<category><![CDATA[SISTEMA]]></category>

		<guid isPermaLink="false">http://www.paulomotta.pro.br/?p=380</guid>
		<description><![CDATA[Pesquisadores da universidade Deakin na Austrália estão trabalhando juntamente com a Nestlé no desenvolvimento de uma aplicação para iPhone que permite ao usuário, a partir do código de barras do produto, ter acesso as informações nutricionais a fim de evitar contato com substâncias as quais tenha alergia.
O vídeo do projeto pode ser visto aqui.
Segundo a [...]]]></description>
			<content:encoded><![CDATA[<p>Pesquisadores da universidade Deakin na Austrália estão trabalhando juntamente com a Nestlé no desenvolvimento de uma aplicação para iPhone que permite ao usuário, a partir do código de barras do produto, ter acesso as informações nutricionais a fim de evitar contato com substâncias as quais tenha alergia.</p>
<p>O vídeo do projeto pode ser visto <a href="http://www.deakin.edu.au/news/2010/30032010allergy.php" target="_blank">aqui</a>.</p>
<p style="text-align: left;">Segundo a professora Caroline Chan, os produtos comercializados na Austrália contém um código de barras utilizado para fins comerciais, mas que tem potencial ilimitado, podendo ser usado para acessar informações nutricionais entre outras.</p>
<p style="text-align: left;">Aqui no Brasil isso seria difícil de empregar, porque nossos sistemas não usam os códigos de barra dos produtos, na maioria dos mercados o que vemos são etiquetas com códigos diferente colados por cima, o que, inclusive, dificulta muitas vezes o acesso as informações nutricionais da embalagem.</p>
<p style="text-align: left;">Vale ainda ressaltar que a professora Chan é da área de Sistemas de Informação, isso aliás fica bem claro no teor prático da pesquisa. Ponto para o pessoal de TI !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulomotta.pro.br/2010/04/16/diminuindo-o-risco-de-alergia-com-o-iphone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>O Modelo de Aplicação Web</title>
		<link>http://www.paulomotta.pro.br/2009/08/31/o-modelo-de-aplicacao-web/</link>
		<comments>http://www.paulomotta.pro.br/2009/08/31/o-modelo-de-aplicacao-web/#comments</comments>
		<pubDate>Mon, 31 Aug 2009 21:55:48 +0000</pubDate>
		<dc:creator>prmottajr</dc:creator>
				<category><![CDATA[Desenvolvimento]]></category>
		<category><![CDATA[Principal]]></category>
		<category><![CDATA[APLICAÇÃO]]></category>
		<category><![CDATA[MODELO]]></category>
		<category><![CDATA[PROGRAMAÇÃO]]></category>
		<category><![CDATA[SISTEMA]]></category>
		<category><![CDATA[WEB]]></category>

		<guid isPermaLink="false">http://www.paulomotta.pro.br/2009/08/31/o-modelo-de-aplicacao-web/</guid>
		<description><![CDATA[Quando comeÃ§amos a trabalhar com o desenvolvimento de aplicaÃ§Ãµes web nos deparamos com diversas tecnologias diferentes, todas tentam oferecer o melhor das possibilidades dentro do que Ã© possÃ­vel fazer em termos de tecnologia. Essa variedade de tecnologias Ã© o que mais chama atenÃ§Ã£o nesse modelo de aplicaÃ§Ã£o, ao mesmo tempo Ã© o que gera mais [...]]]></description>
			<content:encoded><![CDATA[<p>Quando comeÃ§amos a trabalhar com o desenvolvimento de aplicaÃ§Ãµes web nos deparamos com diversas tecnologias diferentes, todas tentam oferecer o melhor das possibilidades dentro do que Ã© possÃ­vel fazer em termos de tecnologia. Essa variedade de tecnologias Ã© o que mais chama atenÃ§Ã£o nesse modelo de aplicaÃ§Ã£o, ao mesmo tempo Ã© o que gera mais dificuldades para quem comeÃ§a.</p>
<p>Antes de entender as diversas possibilidades as pessoas deveriam ser apresentadas ao modelo de trabalho proposto pela Web, isso facilitaria muito a adoÃ§Ã£o, e atÃ© mesmo a escolha consciente, de uma tecnologia de implementaÃ§Ã£o. Vamos considerar que tecnologia de implementaÃ§Ã£o Ã© toda a tecnologia que permite desenvolver um sistema baseado em tecnologia Web, dessa forma ASP, PHP, JSP, ColdFusion, e claro HTML alÃ©m de muitas outras sÃ£o tecnologias de implementaÃ§Ã£o. Por outro lado temos ainda as tecnologias de base da Web que sÃ£o o protocolo HTTP e os servidores Web que sÃ£o capazes de atender requisiÃ§Ãµes em formato HTTP, geralmente na porta 80.</p>
<p>EntÃ£o Ã© interessante entender que as tecnologias de implementaÃ§Ã£o usam sempre os mesmos recursos de infraestrtura, isto porque em um mundo globalizado e distribuÃ­do, a tecnologia web facilita para os administradores de sistemas proteger seus servidores, isto porque atravÃ©s da porta 80 sÃ£o permitidas trocas de informaÃ§Ã£o baseada em texto, muito mais fÃ¡ceis de regular. Assim quando um administrador coloca sua mÃ¡quina na rede abre apenas a porta 80, e bloqueia todas as outras formas de acesso a mÃ¡quina.</p>
<p>Outra caracterÃ­stica interessante, Ã© que as conexÃµes web sÃ£o bastante volÃ¡teis, ou seja, o cliente (geralmente um <em>browser</em> ou navegador web) estabele a conexÃ£o, solicita o recurso (normalmente uma pÃ¡gina), recebe sua resposta e desconecta. AtÃ© aÃ­ nenhuma novidade no mundo das redes, no entanto, como os recursos solicitados geralmente sÃ£o texto (e imagens) essas conexÃµes nÃ£o duram muito tempo. &#8220;Ah mas eu acesso o youtube!&#8221; Sim, no entanto a execuÃ§Ã£o de vÃ­deos Ã© <em>servida</em> atravÃ©s de outra conexÃ£o, geralmente com outra mÃ¡quina, ou seja, o HTTP jÃ¡ havia encerrado. Dessa forma o temos alguns pontos a considerar:</p>
<ol>
<li>O servidor web nÃ£o sabe de quem Ã© cada requisiÃ§Ã£o que chega, por isso uma aplicaÃ§Ã£o web precisa ter o conceito de <em>sessÃ£o</em>.</li>
<li>Trocamos texto entre o servidor e o browser, entÃ£o a tela que aparece na mÃ¡quina do cliente nÃ£o <em>veio</em> do servidor, e sim uma descriÃ§Ã£o de <em>como</em> a tela deve ser montada.</li>
<li>NÃ£o ficam variÃ¡veis guardadas na memÃ³ria do computador do cliente, essa Ã© uma parte quase mÃ­stica. Quando programamos uma aplicaÃ§Ã£o com <em>interface</em> web, a aplicaÃ§Ã£o fica no servidor, e somente a descriÃ§Ã£o da tela Ã© enviada para o browser do solicitante, dessa forma toda e qualquer variÃ¡vel que seja manipulada, ficarÃ¡ armazenada na memÃ³ria do servidor e nÃ£o na mÃ¡quina do cliente. Por isso Ã© de extrema importÃ¢ncia que haja algum mecanismo de controle de sessÃ£o de forma que o servidor possa identificar todas as requisiÃ§Ãµes (em conexÃµes diferentes) de um mesmo cliente.</li>
</ol>
<p>No modelo mais simples de implementaÃ§Ã£o web utilizamos a tÃ©cnica de recarregar a pÃ¡gina para cada requisiÃ§Ã£o durante muito tempo essa foi a forma mais difundida de trabalhar atÃ© porque em um passado nÃ£o muito distante qualquer alternativa era muito mais complicada e o esforÃ§o nÃ£o compesava dado o custo extra. Atualmente temos tecnologias para contornar isso, o Ajax permite fazer chamadas ao servidor (no mesmo modelo web tradicional) de forma transparente ao usuÃ¡rio, ou seja, o modelo de aplicaÃ§Ã£o permanece o mesmo, porÃ©m o usuÃ¡rio nÃ£o observa o efeito de recarregar a tela. Podemos observar isso nas ferramentas da Google. Em seu mecanismo de busca e carro chefe, a primeira pÃ¡gina apresenta apenas um campo texto e por isso quando digitamos o que buscamos ela precisa ser recarregada para apresentar a lista de itens que estamos buscando. Por outro lado, no Gmail, a interaÃ§Ã£o do usuÃ¡rio Ã© toda baseada em um modelo de reconstruir a tela localmente, por exemplo quando estamos enviando um email para alguÃ©m, conforme vamos digitando o nome da pessoa aparece uma Ã¡rea de seleÃ§Ã£o com os contatos armazenados no servidor sem que para isso precise recarregar a tela, no entanto os dados tiveram que ser buscados no servidor.</p>
<p>Dessa forma se conhecermos o que acontece &#8220;dentro&#8221; da web fica mais fÃ¡cil de entender e conviver com os detalhes de cada tecnologia de implementaÃ§Ã£o. No final elas trocam texto com seus servidores chamando seus componentes de execuÃ§Ã£o. Se essa visÃ£o estiver clara, o programador vai perceber que passa a desenvolver em nÃ­vel mais abstrato onde apenas descreve como a tela deve ser carregada.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.paulomotta.pro.br/2009/08/31/o-modelo-de-aplicacao-web/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
