<?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>Blog Espeo Software &#187; news</title>
	<atom:link href="http://blog.espeo.pl/category/news/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.espeo.pl</link>
	<description>O technologii i biznesie naszym zdaniem</description>
	<lastBuildDate>Mon, 23 Aug 2010 12:39:37 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Groovy/Grails update</title>
		<link>http://blog.espeo.pl/2010/08/23/groovy_grails_update/</link>
		<comments>http://blog.espeo.pl/2010/08/23/groovy_grails_update/#comments</comments>
		<pubDate>Mon, 23 Aug 2010 12:39:37 +0000</pubDate>
		<dc:creator>Krzysztof Konwisarz</dc:creator>
				<category><![CDATA[english]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[technologia]]></category>
		<category><![CDATA[grails]]></category>
		<category><![CDATA[groovy]]></category>

		<guid isPermaLink="false">http://blog.espeo.pl/?p=301</guid>
		<description><![CDATA[
Groovy and Grails releases in the last months appear so often that it is really easy to miss them.  Starting with Groovy: it&#8217;s current version is 1.7.4, and the maintenance updates from this branch bring little more than bugfixes, so the below list contains mainly the changes introduced in 1.7.0:


anonymous inner classes – for [...]]]></description>
			<content:encoded><![CDATA[<p><!-- 		@page { size: 21cm 29.7cm; margin: 2cm } 		P { margin-bottom: 0.21cm } 		A:link { color: #000080; so-language: zxx; text-decoration: underline } --></p>
<p style="margin-bottom: 0cm">Groovy and Grails releases in the last months appear so often that it is really easy to miss them.  Starting with Groovy: it&#8217;s current version is 1.7.4, and the maintenance updates from this branch bring little more than bugfixes, so the below list contains mainly the changes introduced in 1.7.0:</p>
<ul>
<li>
<p style="margin-bottom: 0cm">anonymous inner classes – for 	Java compatibility</p>
</li>
<li>
<p style="margin-bottom: 0cm">nested static classes – 	functionality exists, but it is best to use static nested classes if 	any</p>
</li>
<li>
<p style="margin-bottom: 0cm">added annotations on imports, 	packages and variable declarations – this allows for instance to 	declare dependencies with Grape within your code</p>
</li>
<li>
<p style="margin-bottom: 0cm">more readable asserts output with 	Power Asserts</p>
</li>
<li>
<p style="margin-bottom: 0cm">AST Viewer and AST Builder to 	facilitate the use of AST transformations</p>
</li>
<li>
<p style="margin-bottom: 0cm" align="LEFT">Groovy Truth  expanded 	– every class now can customize the way it is evaluated to boolean 	by implementing its <span style="font-family: Courier New,monospace"><span style="font-size: small">asBoolean()</span></span> method</p>
</li>
<li>
<p style="margin-bottom: 0cm" align="LEFT">batch updates using 	<span style="font-family: Courier New,monospace"><span style="font-size: small">sql.witchBatch()</span></span> and <span style="font-family: Courier New,monospace"><span style="font-size: small">sql.withTransaction()</span></span></p>
</li>
<li>
<p style="margin-bottom: 0cm">numerous improvements in testing, 	collection methods, GroovyScriptEngine, Groovy console and other</p>
</li>
</ul>
<p style="margin-bottom: 0cm">
<p style="margin-bottom: 0cm">More on this, especially the exact behavior and limitation of nested classes <a href="http://docs.codehaus.org/display/GROOVY/Groovy+1.7+release+notes">in Groovy 1.7.0 Release Notes.</a></p>
<p style="margin-bottom: 0cm">
<p style="margin-bottom: 0cm">&nbsp;</p>
<p style="margin-bottom: 0cm">Unlike in Goovy, in each of Grails 1.3.x branch releases new features are implemented. Its current version (1.3.4) uses Spring 3.0.3. With 1.3.0 and the following quite a few changes were made:</p>
<p style="margin-bottom: 0cm">
<ul>
<li>
<p style="margin-bottom: 0cm">GORM:</p>
<ul>
<li>
<p style="margin-bottom: 0cm">dirty checking for domain classes 		with <span style="font-family: Courier New,monospace"><span style="font-size: small">.isDirty()</span></span> and <span style="font-family: Courier New,monospace"><span style="font-size: small">.isDirty(&#8217;fieldName&#8217;)</span></span> methods</p>
</li>
<li>
<p style="margin-bottom: 0cm">Hibernate derived properties – 		domain class property value can be now calculated from a formula; <a href="http://blog.eyallupu.com/2009/07/hibernate-derived-properties.html"> here</a> is a nice post on derived properties themselves.</p>
</li>
<li>
<p style="margin-bottom: 0cm">named queries can be combined – 		nested within another named query, chained one by one or made more 		specific by supplying additional conditions when invoked</p>
</li>
<li>
<p style="margin-bottom: 0cm"><span style="font-family: Courier New,monospace"><span style="font-size: small">.find()</span></span> and <span style="font-family: Courier New,monospace"><span style="font-size: small">.findAll()</span></span> query results can now be cached</p>
</li>
</ul>
</li>
</ul>
<ul>
<li>
<p style="margin-bottom: 0cm">GSPs:</p>
<ul>
<li>
<p style="margin-bottom: 0cm">default layout – if defined, it 		will be used by all pages that do not explicitly declare to use one</p>
</li>
<li>
<p style="margin-bottom: 0cm"><span style="font-family: Courier New,monospace"><span style="font-size: small">&lt;g:join&gt;</span></span> tag concatenates strings separating them with a specified delimiter</p>
</li>
<li>
<p style="margin-bottom: 0cm"><span style="font-family: Courier New,monospace"><span style="font-size: small">&lt;g:unless&gt;</span></span> tag is a handier version of  negated <span style="font-family: Courier New,monospace"><span style="font-size: small">&lt;g:if&gt;</span></span></p>
</li>
</ul>
</li>
<li>
<p style="margin-bottom: 0cm">filters</p>
<ul>
<li>
<p style="margin-bottom: 0cm">the order in which filters are 		executed can be specified</p>
</li>
</ul>
</li>
<li>
<p style="margin-bottom: 0cm">testing:</p>
<ul>
<li>
<p style="margin-bottom: 0cm">upgraded to JUnit 4</p>
</li>
<li>
<p style="margin-bottom: 0cm">TagLib testing allows to test 		custom tags that use the <span style="font-family: Courier New,monospace"><span style="font-size: small">pageScope</span></span> property</p>
</li>
</ul>
</li>
<li>
<p style="margin-bottom: 0cm">plugins</p>
<ul>
<li>
<p style="margin-bottom: 0cm">classes, views and templates 		provided by plugins can be overridden</p>
</li>
<li>
<p style="margin-bottom: 0cm">inline plugins don&#8217;t have to be 		plugin-packaged before use</p>
</li>
</ul>
</li>
<li>
<p style="margin-bottom: 0cm">dependency management:</p>
<ul>
<li>
<p style="margin-bottom: 0cm">you can specify plugin 		repositories you want to use in BuildConfig.groovy</p>
</li>
<li>
<p style="margin-bottom: 0cm">publishing plugins on Maven 		compatible repositories</p>
</li>
<li>
<p style="margin-bottom: 0cm">declaring plugin dependencies 		with the IvyDSL</p>
</li>
</ul>
</li>
<li>
<p style="margin-bottom: 0cm">every-day use:</p>
<ul>
<li>
<p style="margin-bottom: 0cm">script name typo detection in 		command line</p>
</li>
<li>
<p style="margin-bottom: 0cm">when creating artifacts suffixes 		like <span style="font-family: Courier New,monospace"><span style="font-size: small">*Controller</span></span>, 		<span style="font-family: Courier New,monospace"><span style="font-size: small">*Service</span></span> are now added only when user hasn&#8217;t supplied one</p>
</li>
<li>
<p style="margin-bottom: 0cm">multiple HTTP proxy configuration</p>
</li>
<li>
<p style="margin-bottom: 0cm"><span style="font-family: Courier New,monospace"><span style="font-size: small">grails 		doc –-pdf</span></span> exports generated documentation to PDF 		and <span style="font-family: Courier New,monospace"><span style="font-size: small">–-init</span></span> generates a documentation template</p>
</li>
</ul>
</li>
</ul>
<p style="margin-bottom: 0cm">Grails release notes for more details:</p>
<p style="margin-bottom: 0cm"><a href="http://www.grails.org/1.3%20Release%20Notes">http://www.grails.org/1.3 Release Notes</a></p>
<p style="margin-bottom: 0cm"><a href="http://www.grails.org/1.3.1%20Release%20Notes">http://www.grails.org/1.3.1 Release Notes</a></p>
<p style="margin-bottom: 0cm"><a href="http://www.grails.org/1.3.2%20Release%20Notes">http://www.grails.org/1.3.2 Release Notes</a></p>
<p style="margin-bottom: 0cm"><a href="http://www.grails.org/1.3.4+Release+Notes">http://www.grails.org/1.3.4 Release Notes</a></p>
<p style="margin-bottom: 0cm">&nbsp;</p>
<p style="margin-bottom: 0cm">As for IDEs – having used Netbeans and Spring Tools Suite lately I must  say, that the latter is a long awaited improvement in Groovy/Grails free  IDE support. There is still a lot to be done, but at the moment syntax  highlighting works quite well, code completions gives some hints without  making you wait for ages, and even refactoring works sometimes <img src='http://blog.espeo.pl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<p style="margin-bottom: 0cm">&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.espeo.pl/2010/08/23/groovy_grails_update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>We have made our first steps in Germany</title>
		<link>http://blog.espeo.pl/2010/07/05/we-have-made-our-first-steps-in-germany/</link>
		<comments>http://blog.espeo.pl/2010/07/05/we-have-made-our-first-steps-in-germany/#comments</comments>
		<pubDate>Mon, 05 Jul 2010 12:16:22 +0000</pubDate>
		<dc:creator>Tomasz Rakowski</dc:creator>
				<category><![CDATA[english]]></category>
		<category><![CDATA[news]]></category>

		<guid isPermaLink="false">http://blog.espeo.pl/?p=296</guid>
		<description><![CDATA[Our neighbour &#8211; Germany, wasn&#8217;t actually one of our key destinations lately.  Being focused on typically English speaking markets (England, Scotland,  Ireland) we had no time to investigate new ones. But this time we decided to change it and explore new destinations,  especially such promising like Germany (one of the richest markets in Europe as [...]]]></description>
			<content:encoded><![CDATA[<p>Our neighbour &#8211; Germany, wasn&#8217;t actually one of our key destinations lately.  Being focused on typically English speaking markets (England, Scotland,  Ireland) we had no time to investigate new ones. But this time we decided to change it and explore new destinations,  especially such promising like Germany (one of the richest markets in Europe as you know). Even when it is hardly possible to find some time for it &#8211; we decided to do it anyway&#8230;</p>
<p>An opportunity to make our first steps in Germany emerged about a week ago, when we were invited by the Wielkopolska ICT Cluster to participate in Berlin-Wielkopolska 2010 Forum, a first conference of collaboration between these two regions.</p>
<p>As nearly everything what is made for the first time, the conference wasn&#8217;t surprisingly successful. On the other hand I managed to establish some interesting local contacts and people enjoyed the idea in general &#8211; so it could be good start for more future events of this kind.</p>
<p>I have never been to Berlin, even though it is closer to Poznan than Warsaw is (it was shocking for me when I discovered it)! No borders now so travelling was smooth and easy.</p>
<p>It turned out that schedule is so tight we weren&#8217;t able to see some more of Berlin. At least we had chance to see a bit more of the most modern technology park in Europe (as Germans say) &#8211; one I can tell, they have invested there a lot! It&#8217;s called Adlershof and it&#8217;s astonishing how fast it grows. I discovered that they&#8217;re open for cooperation and they&#8217;re kind of forced by the law to reply to my enquiry so it is good news for me &#8211; I will definitely take advantage of it.</p>
<p>I hope we&#8217;ll find some proper business partners in Germany this year &#8211; hopefully the process began.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.espeo.pl/2010/07/05/we-have-made-our-first-steps-in-germany/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Time to speed your website &#8211; SparkUp session</title>
		<link>http://blog.espeo.pl/2010/06/01/time-to-speed-your-website-sparkup-session/</link>
		<comments>http://blog.espeo.pl/2010/06/01/time-to-speed-your-website-sparkup-session/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 21:52:49 +0000</pubDate>
		<dc:creator>Sylwia Rogowicz</dc:creator>
				<category><![CDATA[news]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[optimization]]></category>

		<guid isPermaLink="false">http://blog.espeo.pl/?p=288</guid>
		<description><![CDATA[One of the session on SparkUp conference  was devoted to optimization of performance of websites.
Best practises I would like to remind for everyone who creates  for web that were discussed.
Minimize HTTP Requests

 connect javascript files  and
use css sprite

Minimize transferred data.

Minimize css, js and html files,
use gzip compression
use caching &#8211; for elements that do not change [...]]]></description>
			<content:encoded><![CDATA[<p>One of the session on SparkUp conference  was devoted to optimization of performance of websites.<br />
Best practises I would like to remind for everyone who creates  for web that were discussed.</p>
<p>Minimize HTTP Requests</p>
<ul>
<li> connect javascript files  and</li>
<li>use css sprite</li>
</ul>
<p>Minimize transferred data.</p>
<ul>
<li>Minimize css, js and html files,</li>
<li>use gzip compression</li>
<li>use caching &#8211; for elements that do not change often use header expires,set it for one year</li>
<li>optimize jpegs- you can often  make then 50 % size smaller without any visible loss. You can do it  by using tools like JpegTran or Smush.it</li>
<li>optimize png &#8211; use png8 when possible</li>
</ul>
<p>Check also <a href="http://developer.yahoo.com/performance/rules.html">Best Practises for Speeding Up your website </a></p>
<p>Strongly recommend  to use tools below</p>
<ul>
<li>Firebug &#8211; tool for web developement</li>
<li> YSlow analyses web pages and suggests ways to improve their  performance</li>
<li>PageSpeed gives you hint how to optimalize loading time for your webpage</li>
<li>JpegTran  optimizes jpg</li>
<li>Smush.it  optimizes all jpgs at once</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.espeo.pl/2010/06/01/time-to-speed-your-website-sparkup-session/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>user experience and design on SparkUp</title>
		<link>http://blog.espeo.pl/2010/06/01/user-experience-and-design-on-sparkup/</link>
		<comments>http://blog.espeo.pl/2010/06/01/user-experience-and-design-on-sparkup/#comments</comments>
		<pubDate>Tue, 01 Jun 2010 21:14:28 +0000</pubDate>
		<dc:creator>Sylwia Rogowicz</dc:creator>
				<category><![CDATA[news]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[ux]]></category>

		<guid isPermaLink="false">http://blog.espeo.pl/?p=282</guid>
		<description><![CDATA[25th of May, quite unexpectedly cause I decided two days before I attended SparkUp conference.   I was mostly interested in Ux/Web design and  till that time, my knowledge in this subject was rather intuitive.
First session I was interested in was lead by Andy Budd. Persuasive Design: Encouraging Your Users To do What You Want [...]]]></description>
			<content:encoded><![CDATA[<p>25th of May, quite unexpectedly cause I decided two days before I attended SparkUp conference.   I was mostly interested in Ux/Web design and  till that time, my knowledge in this subject was rather intuitive.</p>
<p>First session I was interested in was lead by Andy Budd. Persuasive Design: Encouraging Your Users To do What You Want Them To Do. Andy told us  how  our natural behaviours are used  to make us buy the product.  He went through some persuasion techniques used by advertisers, brands, supermarkets and other people. There is scary amount of those&#8230;</p>
<p>He gave examples how those techniques are used in real world and online. Most of us is so used to appearance and behaviour of popular websites that we do not realize that those tricks are used almost everywhere on web !</p>
<ul>
<li> Trust in authority &#8211; Professional look- white, blue green for webpage of  respected medical companies</li>
<li>Layout and Positioning &#8211; using colors, size, positions to emphasize what you would like your user do on your website</li>
<li>Social Proof &#8211; People prefer services where there is already many users- make at least the impression that your service is popular  </li>
<li>Loss  Aversion &#8211;  Last day of promotion, only till the end of the week you pay for our service half price</li>
<li>Likeability and Gifting &#8211; Make people to like your service by for example giving them scores, good rates &#8211; people like being rewarded somehow , they like to get sth free : Pay 20 and get 5 for free!</li>
<li> Reciprocity </li>
</ul>
<p>Nice study &#8211; go via amazon, basecamp, facebook  etc and   check what they did to make us do what they want <img src='http://blog.espeo.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>The speaker of second session Marek Kasperski concentrate on people behaviour on webpage. The tiltle of this session was Mental Models.  He was giving  advices how to make UI most friendly for users,  there was many  issues he  mentioned, most examples were about e-commerce. he showed proper and wrong designs. Below some facts I remember:</p>
<ul>
<li> mind is selective, always trying to find only exact information  and it&#8217;s blind for the rest (Banner blindness)  Help users  find what they want &#8211; by contrast colours, good  filtering of information, group similar information)</li>
<li>when you design your website try to think like future user</li>
<li>use colours culturally directed for your website users</li>
<li>do not leave user with no information when  long response</li>
</ul>
<p>I bought his book Projektowanie stron WWW (as far as I know only in polish language), I will know more.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.espeo.pl/2010/06/01/user-experience-and-design-on-sparkup/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Google Web Toolkit 2.0 oficjalnie dostępny!</title>
		<link>http://blog.espeo.pl/2009/12/09/google-web-toolkit-2-0-oficjalnie-dostepny/</link>
		<comments>http://blog.espeo.pl/2009/12/09/google-web-toolkit-2-0-oficjalnie-dostepny/#comments</comments>
		<pubDate>Wed, 09 Dec 2009 17:17:45 +0000</pubDate>
		<dc:creator>Michał Kalinowski</dc:creator>
				<category><![CDATA[news]]></category>
		<category><![CDATA[technologia]]></category>
		<category><![CDATA[gwt]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://blog.espeo.pl/?p=174</guid>
		<description><![CDATA[Wczoraj na Google Campfire One został oficjalnie zaprezentowany Google Web Toolkit w najnowszej wersji 2.0. Nowości i zmian jest naprawdę sporo, a jedną z istotniejszych jest wprowadzenie narzędzia Speed Tracer.
Speed Tracer jest dodatkiem do przeglądarki Google Chrome, który umożliwia analizę wydajnościową aplikacji webowych (nie tylko tych tworzonych w GWT). Speed Tracer pozwala na bardzo dokładne [...]]]></description>
			<content:encoded><![CDATA[<p>Wczoraj na <a href="http://code.google.com/campfire/" target="_blank">Google Campfire One</a> został oficjalnie zaprezentowany <a href="http://code.google.com/webtoolkit/" target="_blank">Google Web Toolkit</a> w najnowszej wersji 2.0. Nowości i zmian jest naprawdę sporo, a jedną z istotniejszych jest wprowadzenie narzędzia Speed Tracer.</p>
<p>Speed Tracer jest dodatkiem do przeglądarki Google Chrome, który umożliwia analizę wydajnościową aplikacji webowych (nie tylko tych tworzonych w GWT). Speed Tracer pozwala na bardzo dokładne przyjrzenie się działającej aplikacji, wliczając w to np. obserwację zdarzeń JavaScript&#8217;owych. Zamiast wymieniać następne funkcjonalności narzędzia Speed Tracer, lepiej obejrzeć krótki (1:40) tutorial, gdzie wszystko jest bardzo ładnie pokazane. Warto zwrócić uwagę na naprawdę rewelacyjny interfejs aplikacji (zrobiony oczywiście w GWT <img src='http://blog.espeo.pl/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ).</p>
<p><!-- Smart Youtube --><span class="youtube"><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/Sn_3rJaexKc&amp;rel=1&amp;color1=d6d6d6&amp;color2=f0f0f0&amp;border=&amp;fs=1&amp;hl=en&amp;autoplay=&amp;showinfo=0&amp;iv_load_policy=3&amp;showsearch=0" /><param name="allowFullScreen" value="true" /><embed wmode="transparent" src="http://www.youtube.com/v/Sn_3rJaexKc&amp;rel=1&amp;color1=d6d6d6&amp;color2=f0f0f0&amp;border=&amp;fs=1&amp;hl=en&amp;autoplay=&amp;showinfo=0&amp;iv_load_policy=3&amp;showsearch=0" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="355" ></embed><param name="wmode" value="transparent" /></object></span></p>
<p>Myślą przewodnią nowej wersji GWT są szybsze aplikacje webowe. Szybsze zarówno w sensie szybkości ich działania, jak i szybkości developmentu. Lista zmian i nowości jest naprawdę duża. Zwrócę więc uwagę tylko na te najważniejsze (moim zdaniem).</p>
<p>Wersja 2.0 zdecydowanie poprawia cykl <em>edycja/odświeżenie</em> przez wprowadzenie tzw. <em>development mode</em>, który pozwala uruchomić w trybie <em>debug</em> projekt GWT w dowolnej przeglądarce, a nie jednej, dedykowanej (jak to było wcześniej). Oznacza to, że nareszcie można używać Firefoksa albo Chrome&#8217;a przy tworzeniu aplikacji GWT, a wraz z nimi -- pakietu ulubionych rozszerzeń na czele z Firebugiem <img src='http://blog.espeo.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Nie obeszło się przy tej okazji bez zmiany <a href="http://code.google.com/eclipse/" target="_blank">Google Plugin for Eclipse</a>, którym teraz można całkowicie kontrolować development mode z poziomu naszego ulubionego IDE <img src='http://blog.espeo.pl/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Jeszcze trochę z ciekawostek: development mode działa przez sieć. Można więc &#8220;przypiąć się&#8221; do zdalnej sesji przeglądarki. Wydaje się to szczególnie przydatne dla Linuksiarzy, którzy mogą tylko zgadywać jak wygląda ich aplikacji w IE pod Windows. (Nawet z GWT pewnych rzeczy się nie przeskoczy&#8230;)</p>
<p>Kolejna wielka zmiana, która dla mnie osobiście wydaje się być szalenie interesująca, to wprowadzenie nowego, deklaratywnego sposobu konstruowania interfejsu użytkownika o nazwie <em>UiBinder</em>. Założenie jest takie, by uczynić łatwą (a przy okazji trochę wymusić) separację warstwy widoku od logiki aplikacji. Pomysł polega na tworzeniu dwóch plików dla każdego komponentu warstwy prezentacji. Aspekty widoku zawarte są w pliku <strong>.ui.xml</strong>, który stanowi &#8220;mieszankę&#8221; normalnego HTML&#8217;a oraz komponentów widoku (ang. <em>widgets</em>). Sama implementacja logiki aplikacji pozostaje natomiast w osobnym pliku <strong>.java</strong>. Pozwala to na bardzo wyraźną separację tych dwóch zagadnień i np. bardziej efektywną współpracę programistów oraz web designerów. Dodatkowo, w czasie kompilacji sprawdzane są wszystkie referencje między powyższymi plikami, więc nie ma mowy o żadnych literówkach i tego typu błędach. Naturalnie, Google Plugin for Eclipse wspiera to rozwiązanie w 100%, wliczając refactoring, uzupełnianie kodu itd.</p>
<p>Najnowszy Google Web Toolkit wprowadza również tzw. <em>layout panels</em>, pozwalające na dokładne rozmieszczenie elementów w obrębie strony. Nie ma co ukrywać, że używając HTML i CSS jest to duży problem, który najczęściej wymusza użycie pewnych &#8220;sztuczek&#8221;. Nawet we wcześniejszych wersjach GWT czasami trzeba było pokombinować, żeby coś wyglądało tak jak trzeba we wszystkich przeglądarkach. Nowe rozwiązanie bazuje tylko na standardzie CSS, co ma dać layout nie tylko bardziej stabilny i przewidywalny, ale również szybszy (znane są dość spore problemy wydajnościowe przy zmianie rozmiaru okna przeglądarki we wcześniejszych wersjach GWT). Layout panels, jak łatwo się domyślić, doskonale sprawdzają się w połączeniu z UiBinder.</p>
<p>Kluczową nową funkcjonalnością w GWT 2.0 jest programowe rozdzielanie kodu (ang. <em>code splitting</em>). Polega to na wskazaniu (w kodzie źródłowym), które komponenty muszą być wczytane &#8220;z góry&#8221; i są konieczne do załadowania aplikacji, a które można doczytać chwilę później. To tak trochę jak oglądanie filmu na YouTube: nie trzeba przecież wczytać całości, żeby rozpocząć oglądanie. Moim zdaniem to świetne rozwiązanie. Mamy do czynienia przecież z aplikacjami webowymi; tutaj nie może być poczucia, że coś jest &#8220;instalowane&#8221;. Taką aplikację otwieramy i już ma być; każąc użytkownikowi czekać 15 sekund na pojawienie się pierwszego ekranu, możemy go łatwo stracić. Świetne wyniki tutaj uzyskał zespół Google Wave. W chwili obecnej skompilowana, pełna funkcjonalność tej aplikacji to &#8220;ważący&#8221; prawie 1500 kB JavaScript, który trzeba przecież ściągnąć od razu. Dzięki zastosowaniu rozdzielania kodu, początkowo użytkownik ma do pobrania 200 kB (a po kompresji już tylko 80 kB), a reszta jest &#8220;dociągana&#8221; w czasie, gdy zastanawia się gdzie by tu kliknąć. Różnica właściwie o rząd wielkości! Częściowo zasługa w tym również nowej wersji kompilatora, który tak czy inaczej &#8220;odchudza&#8221; kod nawet o ponad 20%. Można bez problemu skompilować starsze aplikacje. W moim ostatnim projekcie w GWT dało to oszczędność 14% (właśnie sprawdziłem <img src='http://blog.espeo.pl/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> ) tak po prostu, bez dotykania kodu źródłowego.</p>
<p>Z mniejszych zmian, nastąpiło ulepszenie mechanizmu paczek (ang. <em>bundles</em>). Teraz zamykać w paczki można nie tylko grafiki, ale pliki dowolnego rodzaju. Jest również specjalny rodzaj paczki dla plików CSS, który automatycznie optymalizuje dołączone arkusze stylów.</p>
<p>Podsumowując, GWT 2.0 wydaje się być znaczną aktualizacją tego produktu. Poprawiono zarówno efektywność pracy z technologią (co w konsekwencji zmniejsza koszt tworzenia oprogramowania), jak i wydajność samych aplikacji. Google Web Toolkit niewątpliwie potwierdza swoją mocną pozycję na rynku nowoczesnych technologii front-end&#8217;owych dla aplikacji webowych. Dla mnie osobiście, jest to już od dawna faworyt w tej kategorii, który coraz bardziej rośnie w siłę. Gorąco zachęcam do pobrania nowej wersji biblioteki i przyjrzenia się wprowadzonym zmianom. Zainteresowanych kieruję na <a href="http://code.google.com/webtoolkit/" target="_blank">stronę produktu</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.espeo.pl/2009/12/09/google-web-toolkit-2-0-oficjalnie-dostepny/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
