<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">

	<channel>
		<title>Magazine - ext-gwt</title>
		<link>http://www.genbetadev.com</link>
		<description>
Información sobre el sector de los desarrolladores, el desarrollo de aplicaciones, para móviles, desarrollo web, bases de datos, frameworks y lenguajes de programación		</description>
		<pubDate>2013-06-20 09:02:35</pubDate>

		<generator>http://www.genbetadev.com</generator>
                    <item>
      <title><![CDATA[Novedades en la versi&oacute;n previa para desarrolladores de Ext GWT 3.0]]></title>
      <link>http://www.genbetadev.com/java-j2ee/novedades-en-la-versin-previa-para-desarrolladores-de-ext-gwt-30</link>
      <guid>http://www.genbetadev.com/java-j2ee/novedades-en-la-versin-previa-para-desarrolladores-de-ext-gwt-30</guid>
      <pubDate>Wed, 13 Jul 2011 08:32:43 +0000</pubDate>

      <author>mangrar</author>
      <description><![CDATA[
      <p><img id="image77091" src="http://img.genbetadev.com/2011/07/extgwt.png" class="centro" alt="extgwt" /></p>

	<p>Se encuentra disponible desde hace unas semanas una <a href="http://www.sencha.com/blog/ext-gwt-3-dev-preview-1/">versi&oacute;n previa de Ext <span class="caps">GWT</span> 3.0</a>. Ext <span class="caps">GWT</span>, tambi&eacute;n conocido como <span class="caps">GXT</span>, es la implementaci&oacute;n en <span class="caps">GWT</span> de <a href="http://www.sencha.com/products/extjs/">ExtJs</a>. Esta versi&oacute;n esta actualmente en desarrollo, pero nos permite ver que vamos a encontrar en ella. Requiere al menos <span class="caps">GWT</span> 2.3.0. para funcionar.</p>

	<p>Aquellos que conocéis ExtJS y Ext <span class="caps">GWT</span> ya sabéis la potencia que la librería nos ofrece a la hora de generar interfaces para nuestras aplicaciones web de forma sencilla, dinámica y segura. La librería cuenta con un enorme repertorio de objetos y métodos que podemos utilizar en nuestros proyectos. La gran ventaja de Ext <span class="caps">GWT</span>, es que puedes crear aplicaciones ExtJS sin escribir apenas JavaScript, todo con Java. Aunque esto es una opini&oacute;n personal, pues a mi personalmente JavaScript no me gusta nada. Lo veo ca&oacute;tico y dificil de mantener. Pero para gustos, colores.</p>

<p><!--more--></p>

	<p>Las novedades mas importantes que podremos encontrar son las siguientes:</p>

<h2>XTemplates</h2>

	<p>En versiones anteriores, <span class="caps">GXT</span> usaba el mismo c&oacute;digo que Ext JS. Ahora, <strong>se ha implementado por completo en Java</strong>. Po&eacute;is leer mas sobre esto en <a href="http://www.sencha.com/blog/ext-gwt-3-xtemplate-redesign/">esta entrada</a> en el <a href="http://www.sencha.com/blog/">blog de Sencha</a>.</p>

<h2>Gr&aacute;ficas</h2>

	<p>Al igual que han hecho en ExtJS 4, <strong>las gr&aacute;ficas ya no se implementan en flash, sino mediante <span class="caps">SVG</span> y VML</strong>. Un gran avance en mi opini&oacute;n, ya que no dependemos de ning&uacute;n plugin de terceros para visualizarlas.</p>

<h2>Eventos y sus manejadores (event handlers)</h2>

	<p>En esta versi&oacute;n, <strong>se ha sustituido el propio sistema de eventos de <span class="caps">GXT</span> en favor de la nueva <em>Event handler API</em> de GWT</strong>. Ahora los componentes de <span class="caps">GXT</span> aceptan manejadores y disparadores de eventos de la misma manera que los widgets de GWT:</p>

<pre class="prettyprint lang-java">
Button btn = new Button();
btn.addSelectHandler(new SelectHandler() {
  @Override
  public void onSelect(SelectEvent event) {
    //respond to click
  }
});
</pre>

<h2>Apariencia</h2>

	<p>En la versi&oacute;n 2, <strong>los widgets son responsables de crear su propia estructura <span class="caps">DOM</span> directamente</strong>. Esto se puede hacer o bien manualmente o usando un fragmento de <span class="caps">HTML</span> para el elemento o componente. El <span class="caps">HTML</span> para este, se crea enlazando elementos del <span class="caps">DOM</span>, mediante una cadena o a partir de un XTemplate. El problema, es que la vista de un componente esta embebida en este y el nombre de la clase <span class="caps">CSS</span> esta metido dentro del widget. Esto, aunque funcione, crea varios problemas. Se hace muy dificil cambiar el <span class="caps">DOM</span> del componente, ya que esta embebido en el widget. Con el <span class="caps">CSS</span> ocurre algo parecido, es dificil cambiar la apariencia del widget porque el <span class="caps">CSS</span> forma parte de este.</p>

	<p>Para solucionar esto, lo que han hecho, es cambiar por completo la forma en la que se renderiza la vista y se aplican estilos. Se han basado en un patr&oacute;n de dise&ntilde;o de google: <em><a href="http://code.google.com/p/google-web-toolkit/wiki/CellBackedWIdgets#Appearance_Pattern">Appearance Pattern</a></em>. Un <em>Appearance</em> es b&aacute;sicamente <strong>una clase que controla la estructura <span class="caps">HTML</span> y el estilo de la implementaci&oacute;n de un widget</strong>. Pod&eacute;is profundizar sobre esto en <a href="http://www.sencha.com/blog/ext-gwt-3-appearance-design/">este art&iacute;culo</a> de <a href="http://www.sencha.com/blog/">Sencha Blog</a>. Sino, pod&eacute;is esperar a mi pr&oacute;ximo art&iacute;culo sobre este tema. Quiero comentarlo en profundidad una vez saquen la versi&oacute;n estable de <span class="caps">GXT</span>.</p>

<h2>Datos</h2>

	<p>Por desgracia, de momento <strong><span class="caps">GWT</span> no soporta <em>introspection</em> en tiempo de ejecuci&oacute;n</strong>. La instropecci&oacute;n nos permite obtener informaci&oacute;n de un objeto. Usando instropecci&oacute;n, podemos preguntar a un objeto por su clase, por sus m&eacute;todos, propiedades, etc&#8230; </p>

	<p>En versiones anteriores de <span class="caps">GXT</span>, hay dos maneras de conseguir la introspecci&oacute;n:</p>

	<p><ul>
	<li>
		Primero usando mapas clave-valor para las propiedades de un objeto. Pero esto nos fuerza a extender las clases base de Ext <span class="caps">GWT</span>, como <a href="http://www.sencha.com/gxtdocs/#com.extjs.gxt.ui.client.data.BaseModel">com.extjs.gxt.ui.client.data.BaseModel</a>. Como pod&eacute;is observar, hay un constructor que recibe un mapa como entrada:</p>

<pre class="prettyprint lang-java">
  /** 
   * Creates a new base model. 
   *  
   * @param properties the initial values 
   */  
  public BaseModel(Map<string , Object> properties) {  
    this();  
    setProperties(properties);  
  }  
</string></pre>

	<p>Disponemos de setters y getters para establecer y obtener los valores de la propiedad respectivamente en tiempo de ejecuci&oacute;n:</p>

	<p><pre class="prettyprint lang-java">
  public <x> X set(String name, X value);
  public </x><x> X get(String property);<br />
</x></pre>
	</li>
	<li>
		El segundo m&eacute;todo, consiste en hacer uso de <a href="http://code.google.com/intl/es/webtoolkit/doc/1.6/FAQ_Client.html#What_is_Deferred_Binding?"><span class="caps">GWT</span> Deferred binding</a>. Esto se hace mediante el BeanModel <span class="caps">API</span>. Pod&eacute;is ver un ejemplo <a href="http://www.sencha.com/blog/preview-java-bean-support-with-ext-gwt/">aqu&iacute;</a>.
	</li><br />
</ul></p>

	<p>En esta nueva versi&oacute;n, los chicos de Sencha, se han replanteado por completo la manera de conseguir <em>runtime introspection</em>. <strong>El objetivo en Ext <span class="caps">GWT</span> 3.0 es soportar cualquier <span class="caps">POJO</span> o <a href="http://code.google.com/p/google-web-toolkit/wiki/AutoBean">Autobean</a> en cualquier sitio donde necesitemos datos, como los stores, templates o los data widgets</strong>. Es parecido a usar el BeanModel, los m&eacute;todos para acceder a las propiedades se preparan en tiempo de ejecuci&oacute;n, pero solo se crean cuando se piden mediante <span class="caps">GWT</span>.create().</p>

	<p>Las propiedades se manejan mediante ValueProvider<t , V>, donde T es el tipo del Bean y V el tipo de la propiedad. Los datos tambien puedes ser obtenidos mediante una clave, usando ModelKeyProvider</t><t> que extiende el interfaz <a href="http://google-web-toolkit.googlecode.com/svn/javadoc/2.1/com/google/gwt/view/client/ProvidesKey.html">com.google.gwt.view.client.ProvidesKey</a> de <span class="caps">GWT</span> y nos permite especificar una clave &uacute;nica para un objeto de tipo T.</p>

<pre class="prettyprint lang-java">
public class Person {
  public String getSSN() {...}
  public String getName() {...}
  public void setName(String name) {...}
  public List<person> getChildren(){...}
  public void setChildren(List</person><person>children) {...}
}
public interface PersonProperties extends PropertyAccess</person><person> {
  ModelKeyProvider</person><person> ssn();
  ValueProvider</person><person , String> name();
  ValueProvider</person><person , List<Person>> children();
}
</person></pre>

	<p>Explicar&eacute; todo esto mas en profundidad cuando saquen una Beta.</p>

	<p>Mas informaci&oacute;n: <a href="http://www.sencha.com/blog/ext-gwt-3-dev-preview-1/">Sencha Blog</a> ¦ <a href="http://dev.sencha.com/deploy/gxt-3.0.0-dp1.zip">Descarga Ext <span class="caps">GWT</span> 3.0 Developer Preview 1</a></t></p>      ]]></description>
      </item>
        	  <atom:link href="http://www.genbetadev.com/tag/ext-gwt/rss2.xml" rel="self" type="application/rss+xml" />
	</channel>

</rss>


