<?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>Shaun Abram &#187; JUG</title>
	<atom:link href="http://www.shaunabram.com/tag/jug/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.shaunabram.com</link>
	<description>Java and Technology weblog</description>
	<lastBuildDate>Wed, 18 Jan 2012 00:39:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Selenium talk at SF JUG</title>
		<link>http://www.shaunabram.com/sfjug-selenium/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=sfjug-selenium</link>
		<comments>http://www.shaunabram.com/sfjug-selenium/#comments</comments>
		<pubDate>Wed, 13 Jan 2010 07:26:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[JUG]]></category>
		<category><![CDATA[q]]></category>
		<category><![CDATA[selenium]]></category>
		<category><![CDATA[sfjug]]></category>
		<category><![CDATA[unittesting]]></category>

		<guid isPermaLink="false">http://www.shaunabram.com/?p=749</guid>
		<description><![CDATA[I attended another great San Francisco JUG meeting tonight, this time on How to use Selenium with Maven/Ant to automate testing of web apps. The talk was given by Chris Bedford, from Build Lackey Labs &#8211; &#8220;Automating the Monkey Work Out and the Quality In!&#8221;. Overall, I thought this was a great talk by Chris. [...]]]></description>
			<content:encoded><![CDATA[<p>I attended another great <a href="http://www.sfjava.org/calendar/10674274/">San Francisco JUG</a> meeting tonight, this time on <a href="http://www.sfjava.org/calendar/11982857/">How to use Selenium with Maven/Ant to automate testing of web apps</a>.</p>
<p>The talk was given by Chris Bedford, from <a href="http://buildlackey.com/">Build Lackey Labs</a> &#8211; &#8220;Automating the Monkey Work Out and the Quality In!&#8221;. Overall, I thought this was a great talk by Chris. He clearly has a huge amount of experience creating automated tests and integrating them with build tools and he gave a well structured, interesting, well delivered presentation. I have posted a copy of <a href="http://www.shaunabram.com/attachments/testing-java-web-apps-with-selenium5.ppt">Chris&#8217;s slides</a> and I think the video will be posted on the SF JUG site at some point, but I have also posted my notes from the presentation below&#8230;<br />
<span id="more-749"></span></p>
<h3>Selenium Overview</h3>
<p>Chris started off with an overview of <a href="http://seleniumhq.org/">Selenium</a> &#8211; a tool for automating tests for web based applications. He then introduced us to the Selenium IDE &#8211; a Firefox add-on that allows you to set up tests by recording clicks on a web page, or by manually entering commands. The tests can then be played back as part of your automated test suite.</p>
<h3>Creating Selenium Tests</h3>
<p>Chris showed us the process by both executing an existing test he had already setup, and by walking us through the creation of a new test, which loaded a page, waited for text to be present, clicked on a link, and confirmed that text was present. The test was a html file, but he showed how to export it as <a href="http://testng.org/doc/index.html">TestNG</a> and <a href="http://www.junit.org/">JUnit</a> tests  (although both exports resulted in kind of ugly java code!)</p>
<h3>Possible hiccups with Selenium</h3>
<p>One of the things I thought Chris did well was, in addition to pointing out all the many great things about Selenium, he also pointed out some of the slight issues with Selenium that he has encountered during his time using it, such as</p>
<ul>
<li>Difficulties getting the initial Open page to work</li>
<li>Issues with where the test files get saved</li>
<li>Making sure you have the tests run slow to start with (to avoid timing/loading issues)</li>
<li>The Selenium IDE may be difficult to get working with IE (Firefox is fine)</li>
</ul>
<h3>Selenium Components</h3>
<p>The main Selenium section then finished up with a quick over of the various Selenium Components:</p>
<ul>
<li>Selenium IDE</li>
<li>Selenese Commands</li>
<li>Selenium RC (Remote Control)</li>
</ul>
<p>Chris also had a section on the &#8216;<a href="http://en.wikipedia.org/wiki/Same_origin_policy">same origin</a>&#8216; JavaScript  policy that Selenium manages to circumvent by using the Selenium RC Server. He managed to explain the issue in simple terms.</p>
<h3>Other functional test alternatives</h3>
<p>Chris discussed other functional test alternatives by comparing <a href="http://webtest.canoo.com/webtest/manual/WebTestHome.html">Canoo</a> to Selenium (Canoo is also an automated web app testing framework).</p>
<p>Chris also mentionted <a href="http://code.google.com/p/umangite/">Umangite</a>, Chris Richardson&#8217;s open source testing framework that makes Selenium tests easier to write. I have used this before, and agree it is worth checking out&#8230;</p>
<h3>Using Selenium with Build Tools</h3>
<p>He then discussed using Maven with Selenium, including using <a href="http://cargo.codehaus.org/">Cargo</a> (e.g. using the <a href="http://cargo.codehaus.org/Maven2+plugin">cargo maven2 plugin</a>). Cargo is a set of APIs that assists in</p>
<ul>
<li>installing web containers, such as Tomcat, JBoss</li>
<li>booting and shutting them down</li>
<li>deploying web apps (.wars, .ears)</li>
</ul>
<p>Chris finished the Selenium &#038; build tools section with a quick run through of using Selenium with <a href="http://ant.apache.org/">Ant</a>.</p>
<h4>Continuous Integration</h4>
<p>The final section of the presentation was a talk on Continuous Integration (CI). Chris described CI as: </p>
<ul>
<li>A dedicated box (see my follow up question below!) that runs regular full builds (including tests) of your software</li>
<li>Build triggers when any developer checks into SCM</li>
<li>Team is notified of any issues</li>
</ul>
<p>And talked about how Selenium can be used with <a href="http://hudson-ci.org/">Hudson</a> &#8211; a very cool CI tool from Sun. This leads well into <a href="http://www.sfjava.org/calendar/12296161/">next month&#8217;s SF JUG talk</a>!</p>
<h3>Q&#038;A</h3>
<p>Q: Do you have any info on WebDriver merging with Selenium?<br />
A: No, but sounds interesting!</p>
<p>Q: How closely do test writers work with marketing people?<br />
A: Chris suggested checking out the <a href="http://www.easyb.org/">easyb</a> framework, a behavior driven development framework that allows you to write conditions in a very abstract level, using a DSL that marketers can use and understand. He also suggested looking at the <a href="http://www.fitnesse.org/">fitnesse</a> framework.</p>
<p>Q: I asked Chris via email after the talk what he meant by needing &#8216;dedicated&#8217; box/server for Continuous Integration.<br />
A: He clarified that by &#8216;dedicated&#8217;, he just meant that the build box  should not be a box that you are doing development on, and that there isn&#8217;t anything wrong with having a mix of services on one machine. e.g. having a qa box that has the CI server and maybe hosts the bug tracking system as well&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.shaunabram.com/sfjug-selenium/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>JUG Meetup: Joshua Bloch (Effective Java)</title>
		<link>http://www.shaunabram.com/svwebjug-joshuabloc/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=svwebjug-joshuabloc</link>
		<comments>http://www.shaunabram.com/svwebjug-joshuabloc/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 06:45:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[books]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[JUG]]></category>

		<guid isPermaLink="false">http://www.shaunabram.com/?p=652</guid>
		<description><![CDATA[I had the chance tonight to see Joshua Bloch speak at the Silicon Valley Web JUG meetup down at the Googleplex in Mountain View. I have read and blogged about his great book &#8220;Effective Java&#8221; &#8211; probably the single best book I have read on Java &#8211; so it was great to hear him in [...]]]></description>
			<content:encoded><![CDATA[<p>I had the chance tonight to see Joshua Bloch speak at the Silicon Valley Web JUG <a href="http://www.meetup.com/sv-web-jug/calendar/10878461/">meetup</a> down at the Googleplex in Mountain View. I have read and <a href="http://www.shaunabram.com/effective-java/">blogged</a> about his great book &#8220;Effective Java&#8221; &#8211; probably the single best book I have read on Java &#8211; so it was great to hear him in person. The talk covered a couple of examples from his <a href="http://www.amazon.com/gp/product/032133678X">Java Puzzlers</a> book as well as a discussion on some of the items from the Effective Java book. As expected, he was a great presenter, both insightful and funny.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.shaunabram.com/svwebjug-joshuabloc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SF JUG: Android UIs</title>
		<link>http://www.shaunabram.com/sfjug-android/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=sfjug-android</link>
		<comments>http://www.shaunabram.com/sfjug-android/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 05:22:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[JUG]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://www.shaunabram.com/?p=416</guid>
		<description><![CDATA[There was another great San Francisco JUG meeting tonight down at the Google offices. It was all very well organized as usual by Sasa. The speaker was Romain Guy from Google&#8217;s Android UI team. He gave his talk from Google IO: Turbo-charge your UI: How to Make your Android UI Fast and Efficient. The presentation [...]]]></description>
			<content:encoded><![CDATA[<p>There was another great <a href="http://www.sfjava.org/calendar/10674274/">San Francisco JUG</a> meeting tonight down at the Google offices. It was all very well organized as usual by <a href="http://www.sfandroid.org/members/3329273/">Sasa</a>. The speaker was Romain Guy from Google&#8217;s Android UI team. He gave <a href="http://code.google.com/events/io/sessions/TurboChargeUiAndroidFast.html">his talk</a> from <a href="http://code.google.com/events/io/">Google IO</a>: Turbo-charge your UI: How to Make your Android UI Fast and Efficient.</p>
<p>The presentation slides can be found <a href="http://dl.google.com/io/2009/pres/Th_0230_TurboChargeYourUI-HowtomakeyourAndroidUIfastandefficient.pdf">here</a>.</p>
<p>I thought Romain was an excellent presenter and did a top job of talking on his area of expertise: Android UI development. He covered the issues you need to be aware of when developing Android UIs if you want them to be performant, best practices and work-arounds for the gotchas, as well as useful tools that can be used for development. Personally, I would have benefited from more of a broad overview and introduction to Android, but that is more a reflection of my own lack of knowledge on Android! Maybe the newly created <a href="http://www.sfandroid.org/">Android User Group</a> will provide an &#8216;Intro To&#8217; type talk at some point&#8230;</p>
<p>First, Romain covered the Andriod UI terminology (like Canvas, Drawable, Surfaces and Views) before covering the architecture.</p>
<p>The bulk of his talk covered how to make sure you UI runs fast, including:</p>
<ul>
<li> Avoiding runtime scaling of background images</li>
<li> Avoiding invalidating (i.e. redrawing) the entire screen and instead only invalidate the small part of the screen that has actually changed.</li>
<li> Minimizing the number of views you use (ideally have &lt;100, which seems pretty reasonable for a tiny phone screen!) and talked about some techniques to help with this including using ViewStubs and recycling views</li>
<li> Avoid allocating memory (apparently the Garbage Collector is slow and pretty much stops the world when it is running)</li>
<li> Use SoftReferences (objects that only have soft references to them will be kicked out of memory if the Garbage Collector needs more memory) and WeakReferences (which can help to avoid memory leaks) when possible</li>
</ul>
<p>He also talked about some neat dev and debug tools including <a href="http://android-developers.blogspot.com/2009/02/track-memory-allocations.html">Allocation Tracker</a> (which monitors objects being created, memory being allocated etc) and <a href="http://developer.android.com/guide/developing/tools/hierarchy-viewer.html">Hierarchy Viewer</a> (which shows you all the devices/windows/views you have how long things are taking to render).<br />
He also mentioned the <a href="http://developer.android.com/guide/developing/tools/emulator.html">Android emulator</a> that can be used for testing your apps.</p>
<p>Some of the questions from the Q&amp;A session included:</p>
<p>Q: Will Android support languages other than Java?<br />
A: Romain mentioned that there is a version of Scala and python that work on Android, but currently all APIs are in Java.</p>
<p>Q: Does Flash work on Android?<br />
A: Development is on-going and the Android team is working with Adobe.<br />
(I found more on the web about this topic here: <a href="http://gizmodo.com/5300800/flash-for-android-webos-landing-in-october">http://gizmodo.com/5300800/flash-for-android-webos-landing-in-october</a>)</p>
<p>Q: Can JavaFX be used on Android?<br />
A: Code might be hard to run on the phone and may not be performant.</p>
<p>Q: Apparently, Sony Ericsson are also building an Android phone. How do you plan to avoid fragmentation as other companies start shipping Android phones?<br />
A: CTS &#8211; Compatibility Test Suite<br />
You cant ship a phone as &#8216;Android&#8217; if it doesn&#8217;t pass the CTS.</p>
<p>Other links:<br />
<a href="http://d.andriod.com">http://d.andriod.com</a><br />
<a href="http://source.android.com/">source.android.com</a><br />
<a href="http://android.git.kernel.org/">android.git.kernel.org</a><br />
<a href="http://code.google.com/p/apps-for-android/">code.google.com/p/apps-for-andriod</a><br />
<a href="http://android-developers.blogspot.com/">http://android-developers.blogspot.com/</a><br />
<a href="http://forum.xda-developers.com/">http://forum.xda-developers.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.shaunabram.com/sfjug-android/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Spring and EJB 3 Integration</title>
		<link>http://www.shaunabram.com/spring_ejb3/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=spring_ejb3</link>
		<comments>http://www.shaunabram.com/spring_ejb3/#comments</comments>
		<pubDate>Tue, 23 Jun 2009 04:46:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[EJBs]]></category>
		<category><![CDATA[JUG]]></category>
		<category><![CDATA[spring]]></category>

		<guid isPermaLink="false">http://www.shaunabram.com/?p=318</guid>
		<description><![CDATA[I attended another excellent SF JUG meeting earlier this month. It was a double billing with Talip Ozturk talking about Hazelcast, an opensource clustering and data distribution platform, and Reza Rehman speaking about EJB3 and Spring Integration. Reza is the author of EJB3 in Action and an accomplished speaker whom I had the chance to [...]]]></description>
			<content:encoded><![CDATA[<p>I attended another excellent <a href="http://www.sfjava.org/calendar/10392364/">SF JUG meeting</a> earlier this month. It was a double billing with Talip Ozturk talking about <a href="http://www.hazelcast.com/">Hazelcast</a>, an opensource clustering and data distribution platform, and <a href="http://www.rahmannet.net">Reza Rehman</a> speaking about EJB3 and Spring Integration.</p>
<p>Reza is the author of <a href="http://www.manning.com/panda/">EJB3 in Action</a> and an accomplished speaker whom I had the chance to meet at The Server Side Symposium earlier this year, so I was particularly interested in his talk. </p>
<p>Reza gave some background on EJBs and how they have been completely reinvented as part of the latest (EJB3) release, including using 100% annotations (no xml) and making heavy use intelligent defaulting. He also talked about how Spring became popular as an alternative to the heavyweigth approach of the older EJB releases and has thrived through its focus on integration with standards like JPA, JMS, JDBC and JAX-WS.</p>
<p>He then went on to his main point, which was that EJB3 and Spring can now be viewed as complimentary, rather than competing, technologies and he went on to back this up by discussing the integration strategies that can be used, including</p>
<ul>
<li>Embedding Spring inside a Java EE app server</li>
<li>Embedding an EJB3 embeddable container withing Tomcat with Spring</li>
<li>Enabling Spring @Autowired annotation in EJBs via Interceptors</li>
<li>Using EJB3 natively inside Spring using <a href="http://www.springsource.com/pitchfork">Spring Pitchfork</a></li>
</ul>
<p>Reza finished by reiterating the benefits of using Spring and EJBs together to increase ease of coding and vendor neutrality.</p>
<p>Overall, I thought it was an insightful presentation from Reza. I had studied EJBs back in the v2 release as part of the my SCEA certification, and have used Spring in several projects, but this was the first time I had a chance to hear how they can be used together. </p>
<p>I have made Reza&#8217;s presentation notes available <a href="http://www.shaunabram.com/jug/spring_ejb3_integration.pdf">here</a>, as well as his demo source code available <a href="http://www.shaunabram.com/jug/spring-ejb3-integration-demo.zip">here</a>. You can also follow him on his web site and blog at: <a href="http://www.rahmannet.net">www.rahmannet.net</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.shaunabram.com/spring_ejb3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

