<?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>Technical &#38; Software Blog - ssims.co.uk &#187; Java Development</title>
	<atom:link href="http://blog.ssims.co.uk/index.php/category/javadevelopment/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.ssims.co.uk</link>
	<description>Software, Computing and Web technology discussion</description>
	<lastBuildDate>Tue, 10 Jan 2012 21:34:53 +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>meetingShed &#8211; easy meeting scheduling with Google Calendar</title>
		<link>http://blog.ssims.co.uk/index.php/2011/04/meetingshed-easy-meeting-scheduling-with-google-calendar/</link>
		<comments>http://blog.ssims.co.uk/index.php/2011/04/meetingshed-easy-meeting-scheduling-with-google-calendar/#comments</comments>
		<pubDate>Tue, 26 Apr 2011 18:44:40 +0000</pubDate>
		<dc:creator>ssims</dc:creator>
				<category><![CDATA[Business Development]]></category>
		<category><![CDATA[Java Development]]></category>
		<category><![CDATA[Technology News]]></category>

		<guid isPermaLink="false">http://blog.ssims.co.uk/?p=729</guid>
		<description><![CDATA[Today is the beta launch of my hosted web app called meetingShed. It is a tool for scheduling and booking meetings (and other events) which uses people&#8217;s Google Calendar data to find acceptable meeting times. Some of the features include: Google Calendar integration Import Google Contacts Narrow down time slots and avoid double bookings based [...]]]></description>
			<content:encoded><![CDATA[<p>Today is the beta launch of my hosted web app called <a href="http://www.meetingshed.com">meetingShed</a>. It is a tool for scheduling and booking meetings (and other events) which uses people&#8217;s Google Calendar data to find acceptable meeting times.</p>
<p><a href="http://blog.ssims.co.uk/techblog/wp-content/uploads/2011/04/SchedulingScreenshot.jpg"><img class="alignright size-medium wp-image-731" title="meetingShed" src="http://blog.ssims.co.uk/techblog/wp-content/uploads/2011/04/SchedulingScreenshot-300x296.jpg" alt="" width="300" height="296" /></a></p>
<p>Some of the features include:</p>
<div id="_mcePaste">
<ul>
<li>Google Calendar integration</li>
<li>Import Google Contacts</li>
<li>Narrow down time slots and avoid double bookings based on attendee and location availability</li>
<li>Notifications by email</li>
<li>Assign positions for a location using Google Maps, allowing all attendees to receive a map in the notification email</li>
</ul>
</div>
<p>The app is now live and can be tried out at <a href="http://www.meetingshed.com">www.meetingshed.com</a></p>
<p>The scheduling functionality uses the KMS-dev development platform for logic programming.</p>
<p>I urge anyone reading to please give it a go and any feedback you can provide would be gratefully received!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ssims.co.uk/index.php/2011/04/meetingshed-easy-meeting-scheduling-with-google-calendar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>KMS-dev: development platform for logic programming</title>
		<link>http://blog.ssims.co.uk/index.php/2011/04/kms-dev-development-platform-for-logic-programming/</link>
		<comments>http://blog.ssims.co.uk/index.php/2011/04/kms-dev-development-platform-for-logic-programming/#comments</comments>
		<pubDate>Tue, 26 Apr 2011 12:47:38 +0000</pubDate>
		<dc:creator>ssims</dc:creator>
				<category><![CDATA[Java Development]]></category>
		<category><![CDATA[Technology News]]></category>

		<guid isPermaLink="false">http://blog.ssims.co.uk/?p=724</guid>
		<description><![CDATA[KMS-dev, a platform for integrating SWI-Prolog software components with web applications has now been released as Open Source Software. The platform uses a Java based web service interface to allow communication with an SWI-Prolog instance. Logic programming is a powerful programming paradigm, offering benefits of decreased development time and increased code readability and modifiability. It [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://kms.intelligent-architectures.co.uk/dev">KMS-dev</a>, a platform for integrating SWI-Prolog software components with web applications has now been released as Open Source Software.</p>
<p>The platform uses a Java based web service interface to allow communication with an SWI-Prolog instance.</p>
<p>Logic programming is a powerful programming paradigm, offering benefits of decreased development time and increased code readability and modifiability. It is particularly effective for software involving decision making and constraint satisfaction.</p>
<p>We hope the platform will benefit from contribution by the Open Source and Prolog community and we welcome developers to try it out.</p>
<p>A quick start guide, further information and the KMS-dev platform download are available at:</p>
<p><a href="http://kms.intelligent-architectures.co.uk">kms.intelligent-architectures.co.uk</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ssims.co.uk/index.php/2011/04/kms-dev-development-platform-for-logic-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>EJBs in the three tier system</title>
		<link>http://blog.ssims.co.uk/index.php/2011/03/ejbs-in-the-three-tier-system/</link>
		<comments>http://blog.ssims.co.uk/index.php/2011/03/ejbs-in-the-three-tier-system/#comments</comments>
		<pubDate>Mon, 21 Mar 2011 21:39:10 +0000</pubDate>
		<dc:creator>ssims</dc:creator>
				<category><![CDATA[Java Development]]></category>
		<category><![CDATA[Opinions and Observations]]></category>

		<guid isPermaLink="false">http://blog.ssims.co.uk/?p=713</guid>
		<description><![CDATA[This is primarily written as a basic primer for those CMP students on the same course as me that are struggling and or frustrated with Enterprise JavaBeans. I won&#8217;t give any course work specific info, but hopefully this may help at least a bit. Firstly I should probably mention I have worked in a real [...]]]></description>
			<content:encoded><![CDATA[<p>This is primarily written as a basic primer for those CMP students on the same course as me that are struggling and or frustrated with Enterprise JavaBeans. I won&#8217;t give any course work specific info, but hopefully this may help at least a bit.</p>
<p>Firstly I should probably mention I have worked in a real software development environment coding EJBs and I&#8217;m also using the technology in my third year project, so there is a real practical use for it in the big bad world.</p>
<p><em>So, what the heck is all this EJB stuff?</em><br />
Well Enterprise JavaBeans allow you, amongst other things, to get data from a database and manipulate it. Using EJBs adds an extra tier to your system architecture, which essentially cuts down on the amount of SQL and database connectivity code you have to write (see <a href="http://blog.ssims.co.uk/index.php/web-application-architecture/">here for more info about web application architecture</a>). You&#8217;ve got three main types of beans:</p>
<ul>
<li>Entity beans &#8211; these represent tables in the database. They&#8217;re just a class with a few annotations which tell the EJB container to map between the table columns and the fields in the class.</li>
<blockquote>
<li>Example:
<div id="_mcePaste">@Entity</div>
<div id="_mcePaste">@Table(name=&#8221;YOUR_TABLE_NAME_HERE&#8221;)</div>
<div id="_mcePaste">public class EntityName implements Serializable {</div>
<div id="_mcePaste">private Integer id; //column 1</div>
<div id="_mcePaste">private String name; //column 2</div>
<div id="_mcePaste">private List&lt;AnotherEntity&gt; otherEntities = new ArrayList&lt;AnotherEntity&gt;(); //a one to many relationship</div>
<div id="_mcePaste">public EntityName () { }</div>
<div id="_mcePaste">@Id</div>
<div id="_mcePaste">@GeneratedValue(strategy=GenerationType.IDENTITY) //container generates id</div>
<div id="_mcePaste">@Column(name=&#8221;id&#8221;) //here we tell the container the name of the column this field maps to</div>
<div id="_mcePaste">public Integer getId() {</div>
<div id="_mcePaste">return id;</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">public void setId(Integer id) {</div>
<div id="_mcePaste">this.id = id;</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">@Column(name=&#8221;name&#8221;)</div>
<div id="_mcePaste">public String getName() {</div>
<div id="_mcePaste">return name;</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">public void setName(String name) {</div>
<div id="_mcePaste">this.name = name;</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">@OneToMany(cascade={CascadeType.ALL},</div>
<div id="_mcePaste">fetch=FetchType.EAGER,</div>
<div id="_mcePaste">orphanRemoval=true)</div>
<div id="_mcePaste">@JoinTable(name=&#8221;YOUR_JOIN_TABLE_HERE&#8221;,</div>
<div id="_mcePaste">joinColumns={@JoinColumn(name=&#8221;entity_id&#8221;)},</div>
<div id="_mcePaste">inverseJoinColumns={@JoinColumn(name=&#8221;another_entity_id&#8221;)})</div>
<div id="_mcePaste">public List&lt;AnotherEntity&gt; getOtherEntities() {</div>
<div id="_mcePaste">return otherEntities;</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">public void setOtherEntities(List&lt;AnotherEntities&gt; entities) {</div>
<div id="_mcePaste">this.otherEntities = entities;</div>
<div id="_mcePaste">}</div>
<p>&#8230;</li>
</blockquote>
<li>Session Beans &#8211; this is where you stick all your actual code which does stuff with the entities.</li>
<blockquote>
<li> Example:</li>
<li>@Stateless</li>
<li>public class DoStuffSessionBean implements DoStuffInterface {</li>
<li><span style="white-space: pre;"> </span>@PersistenceContext(unitName=&#8221;PERSISTENCE_CONTEXT&#8221;) //defines where mapping to database</li>
<li><span style="white-space: pre;"> </span>private EntityManager entityManager; //entity manager allows you to insert, update and delete tables in the database</li>
<li><span style="white-space: pre;"> </span>@Override</li>
<li><span style="white-space: pre;"> </span>public AnotherEntity findAnotherEntityById(Integer id) {</li>
<li><span style="white-space: pre;"> </span>try {</li>
<li><span style="white-space: pre;"> </span>return entityManager.find(Location.class, id);</li>
<li><span style="white-space: pre;"> </span>} catch(NoResultException e) {</li>
<li><span style="white-space: pre;"> </span>return null;</li>
<li><span style="white-space: pre;"> </span>}</li>
<li><span style="white-space: pre;"> </span>}<br />
&#8230; (thats a pretty boring session bean, see entityManager.merge, entityManager.persist and entityManager.remove for more things you can do</li>
</blockquote>
<li>Message Driven Beans, these are nothing to do with the database but are very useful for delivering messages for event driven processes, not really covered in the module we are carrying out though</li>
</ul>
<p><em>Great, but how do I set it all up in the first place?</em><br />
That&#8217;s half the battle with this sort of stuff. I use Eclipse IDE, you can create a new enterprise application which gives a nice structure to your project, NetBeans will also do this for you though. Its worth noting <strong>our lab machines have no facilities for developing EJB components as NetBeans doesn&#8217;t link to any EJB compatible server (e.g. JBOSS or Glassfish, it does have TomCat but this is only a servlet container so can&#8217;t do it), and the version of Eclipse is not Enterprise Edition. </strong><br />
So its down to using your own machines for development and then deploying on JBOSS when you&#8217;re done, or fiddle with the lab machines a bit&#8230; Eclipse runs out of a directory (of course you would ask a member of staff first before doing this in case we are not supposed to do this&#8230;)</p>
<p><em>OK what&#8217;s the point in doing it this way?</em><br />
Aside from the benefits already mentioned, EJBs are very scalable due to session beans. Instead of opening and closing database connections specifically, the EJB container manages all this for you and selects a bean out of a pool of them which are ready and waiting to process the method you want to perform. Basically when you have thousands of users of a system, all heavily hitting the database it enables your web application to still respond quickly.</p>
<p><em>How does it fit in with the rest of the application?</em><br />
Well, you use your session bean to gain access to, create and modify your entity beans. You can access the session bean from a servlet (using a JNDI lookup or dependancy injection &#8211; a simple @EJB annotation). There is some setup to do in the way of XML files, but IDEs can get you a long way in that respect.</p>
<p><em>Anything else?<br />
</em>There are loads of great tutorials but be aware there are a shed load of different ways to implement EJBs, so make sure at the very least its an example for EJB 3.0 you&#8217;re looking at. If something isn&#8217;t working out from one tutorial, take a look at some others and see what the most commonly used approaches are. <em> </em></p>
<p>I hope that very short intro is in some part useful to people. I have very little time to put into something like this, but I know there are going to be people tearing their hair out (to put it mildly) with this particular course work.</p>
<p><em> </em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ssims.co.uk/index.php/2011/03/ejbs-in-the-three-tier-system/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OAuth for Google Data API &#8211; not that easy to implement</title>
		<link>http://blog.ssims.co.uk/index.php/2011/02/oauth-for-google-data-api-not-that-easy-to-implement/</link>
		<comments>http://blog.ssims.co.uk/index.php/2011/02/oauth-for-google-data-api-not-that-easy-to-implement/#comments</comments>
		<pubDate>Mon, 28 Feb 2011 22:35:47 +0000</pubDate>
		<dc:creator>ssims</dc:creator>
				<category><![CDATA[Java Development]]></category>
		<category><![CDATA[Opinions and Observations]]></category>

		<guid isPermaLink="false">http://blog.ssims.co.uk/?p=705</guid>
		<description><![CDATA[Google are fantastic at building APIs, but their authentication mechanisms (while I&#8217;m sure are very secure) are not always the easiest thing to implement. I&#8217;m working with the Google Data APIs at the moment for my project, for which an app needs access to google accounts, cue OAuth. Anyone who doesn&#8217;t agree it is difficult [...]]]></description>
			<content:encoded><![CDATA[<p>Google are fantastic at building APIs, but their authentication mechanisms (while I&#8217;m sure are very secure) are not always the easiest thing to implement.</p>
<p>I&#8217;m working with the Google Data APIs at the moment for my project, for which an app needs access to google accounts, cue OAuth.</p>
<p style="text-align: left;">Anyone who doesn&#8217;t agree it is difficult to use need look no further than the exceptions you can expect if something goes wrong:</p>
<p style="text-align: center;"><img class="size-full wp-image-707 aligncenter" title="exceptionmania" src="http://blog.ssims.co.uk/techblog/wp-content/uploads/2011/02/exceptionmania1.jpg" alt="" width="615" height="433" /></p>
<p style="text-align: left;">Yay! There&#8217;s no short-cut either. One thing to be thankful for is the fact that the ClientLogin authentication mechanism (really only meant for installed apps) can be implemented in two lines of code and provides a great way of testing web apps in the development phase. Unfortunately eventually you&#8217;ll have to implement OAuth if you want a properly secure web app for your users.</p>
<p style="text-align: left;">I will try and post some advice to others that need to implement OAuth once I figure it out. Even Google themselves admit in the documentation it is not the easiest of things to use, which does speak volumes. Supposedly however it helps make your apps authentication extensible if using other providers web services, although I&#8217;ve yet to check how many other web service providers use OAuth.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ssims.co.uk/index.php/2011/02/oauth-for-google-data-api-not-that-easy-to-implement/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Vaadin web UI framework</title>
		<link>http://blog.ssims.co.uk/index.php/2011/02/vaadin-web-ui-framework/</link>
		<comments>http://blog.ssims.co.uk/index.php/2011/02/vaadin-web-ui-framework/#comments</comments>
		<pubDate>Mon, 28 Feb 2011 14:36:46 +0000</pubDate>
		<dc:creator>ssims</dc:creator>
				<category><![CDATA[Java Development]]></category>
		<category><![CDATA[Technology News]]></category>
		<category><![CDATA[Web User Interfaces (AJAX and RIAs)]]></category>

		<guid isPermaLink="false">http://blog.ssims.co.uk/?p=698</guid>
		<description><![CDATA[Now that web applications require increasingly sophisticated user interfaces, nearly all web app developers have some experience of a user interface framework. Dynamic pages such as JSPs in Java EE and ASPs in .NET don&#8217;t allow for these richer user experiences. Delivering a range of features from simple text fields to full blown desktop &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-701" title="vaadinsamplescreenshot" src="http://blog.ssims.co.uk/techblog/wp-content/uploads/2011/02/vaadinsamplescreenshot.jpg" alt="" width="426" height="335" />Now that web applications require increasingly sophisticated user interfaces, nearly all web app developers have some experience of a user interface framework. Dynamic pages such as JSPs in Java EE and ASPs in .NET don&#8217;t allow for these richer user experiences. Delivering a range of features from simple text fields to full blown desktop &#8211; style applications is now possible through these &#8216;AJAX&#8217; web technologies. There are many different approaches taken by these frameworks and platforms and I have blogged previously about some of the open source offerings such as OpenLaszlo, ThinWire and GWT.</p>
<p>Lately I have been using Vaadin which provides an excellent environment for rapid web UI development for Java developers. Vaadin is actually built on top of GWT, the principle advantage of which was that it required no hand-coding of javascript which is notoriously fiddly. GWT works by compiling Java code into javascript. Vaadin takes this concept a step further and renders javascript on the fly, essentially pushing everything the developer writes server side. This eliminates the need for RPC calls to deal with more complex features (not appropriate to be running on the client&#8217;s browser) such as object relational mapping with EJBs.</p>
<p>Essentially Vaadin allows Java developers to work solely in Java with whichever APIs and libraries they wish without thinking about what&#8217;s happening in the client and what&#8217;s happening on the server. In addition Vaadin provides some very slick, open source visual components to use in one&#8217;s application which certainly speeds up development time.</p>
<p>This approach is very similar to that taken in the ThinWire AJAX platform, however ThinWire unfortunately hit a lack of community support and current development has slowed right down. In contrast Vaadin, created by a Finnish company (previously called The IT Mill, now simply Vaadin Ltd), has a commercial backing from consultancy and support as well as a vibrant open source community.</p>
<p>For now, I think that suffices as a good introduction to the framework. Now I&#8217;ve worked with such visually and programmatically appealing platforms as this, I find it quite surprising there are not more development companies using these kinds of technology particularly if they are develping web apps and hand coding large amounts of javascript. A good starting point is the <a href="http://vaadin.com/demo">Vaadin component sampler which can be found here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ssims.co.uk/index.php/2011/02/vaadin-web-ui-framework/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Don&#8217;t try to use a web service from the Java source</title>
		<link>http://blog.ssims.co.uk/index.php/2010/10/dont-try-to-use-a-web-service-from-the-java-source/</link>
		<comments>http://blog.ssims.co.uk/index.php/2010/10/dont-try-to-use-a-web-service-from-the-java-source/#comments</comments>
		<pubDate>Thu, 21 Oct 2010 16:21:31 +0000</pubDate>
		<dc:creator>ssims</dc:creator>
				<category><![CDATA[Java Development]]></category>

		<guid isPermaLink="false">http://blog.ssims.co.uk/?p=620</guid>
		<description><![CDATA[A quick one to remember, more to save myself some pain when I forget what the problem was, but if anyone is helped out by this post then that would be a great thing too. Never try to invoke a method on a Java web service using the source of the web service, e.g: @WebServiceRef(wsdlLocation=&#8221;http://localhost:8080/blah/blah?wsdll&#8221;) [...]]]></description>
			<content:encoded><![CDATA[<p>A quick one to remember, more to save myself some pain when I forget what the problem was, but if anyone is helped out by this post then that would be a great thing too.</p>
<p>Never try to invoke a method on a Java web service using the source of the web service, e.g:</p>
<blockquote>
<div id="_mcePaste">@WebServiceRef(wsdlLocation=&#8221;http://localhost:8080/blah/blah?wsdll&#8221;)</div>
<div id="_mcePaste">private static BlahService blahService;</div>
<div>blahService.myBlahMethod();</div>
</blockquote>
<div>This will compile and build but bad things will happen when you try to deploy it, Glassfish gave a particularly unhelpful error (included in the stack trace was a very generic JavaEEDeployer exception, drilling down to a null pointer in ConcurrentHashMap).</div>
<div>Needless to say this is a stupid mistake to make, easily rectified by compiling the stubs for the web service you are trying to use and using the above code with the stubs allowing you to access the .getPort() method which in turn allows you to use the web service. Or in my case simply commenting out the code as it was shortly to be removed anyway.</div>
<div>Several hours were lost in the making of this cautionary tale!</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.ssims.co.uk/index.php/2010/10/dont-try-to-use-a-web-service-from-the-java-source/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android App: Organise yourself with Organisa Lite!</title>
		<link>http://blog.ssims.co.uk/index.php/2010/10/android-app-organise-yourself-with-organisa-lite/</link>
		<comments>http://blog.ssims.co.uk/index.php/2010/10/android-app-organise-yourself-with-organisa-lite/#comments</comments>
		<pubDate>Mon, 04 Oct 2010 15:21:26 +0000</pubDate>
		<dc:creator>ssims</dc:creator>
				<category><![CDATA[Android Development]]></category>
		<category><![CDATA[Business Development]]></category>
		<category><![CDATA[Java Development]]></category>
		<category><![CDATA[Technology News]]></category>

		<guid isPermaLink="false">http://blog.ssims.co.uk/?p=573</guid>
		<description><![CDATA[My new task management / to do list android app, Organisa Lite, has a few features I think some people will like: Organise all your notes in a unique tree-like hierarchy An innovative user interface where everything is managed from one screen &#8211; no clumsy flicking between multiple menus to get things done Put notes under [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.ssims.co.uk/techblog/wp-content/uploads/2010/10/OrganisaLiteMenu.jpg"><img class="size-medium wp-image-575 alignright" title="Organisa Lite" src="http://blog.ssims.co.uk/techblog/wp-content/uploads/2010/10/OrganisaLiteMenu-300x290.jpg" alt="" width="210" height="203" /></a></p>
<p>My new task management / to do list android app, Organisa Lite, has a few features I think some people will like:</p>
<ul>
<li>Organise all your notes in a unique tree-like hierarchy</li>
<li>An innovative user interface where everything is managed from one screen &#8211; no clumsy flicking between multiple menus to get things done</li>
<li>Put notes under different headings called projects which can be maximised or minimised as required</li>
<li>Export the workspace to backup and use on other android devices &#8211; email your workspace and share with others</li>
<li>Update your Android calendar(s) with the dates that you put into Organisa Lite at the touch of a button</li>
</ul>
<p>Organisa Lite is available from the Android Market and has now been reduced to £1.65, due to a slow start with downloads. I didn&#8217;t necessarily expect a high volume but want to get some feedback and start the ball rolling. I hope people enjoy the app and if they have any problems I&#8217;ll be happy to assist.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ssims.co.uk/index.php/2010/10/android-app-organise-yourself-with-organisa-lite/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Android SDK &#8211; a quick run-down of the features and quirks involved in developing android applications</title>
		<link>http://blog.ssims.co.uk/index.php/2010/08/the-android-sdk/</link>
		<comments>http://blog.ssims.co.uk/index.php/2010/08/the-android-sdk/#comments</comments>
		<pubDate>Sun, 01 Aug 2010 20:36:15 +0000</pubDate>
		<dc:creator>ssims</dc:creator>
				<category><![CDATA[Android Development]]></category>
		<category><![CDATA[Java Development]]></category>
		<category><![CDATA[Opinions and Observations]]></category>

		<guid isPermaLink="false">http://blog.ssims.co.uk/?p=484</guid>
		<description><![CDATA[Firstly, in comparison to most other big tech companies google are great at helping developers get the most out of their APIs and software development kits. They obviously try quite hard to make developing applications using their technologies as straightforward as possible. However some of the features they do implement such as virtual testing environments, while [...]]]></description>
			<content:encoded><![CDATA[<p>Firstly, in comparison to most other big tech companies google are great at helping developers get the most out of their APIs and software development kits. They obviously try quite hard to make developing applications using their technologies as straightforward as possible. However some of the features they do implement such as virtual testing environments, while clever, actually tend not to really be that helpful and often slightly buggy too.</p>
<p>Nevertheless I found it very easy to get started developing android apps using their <a href="http://developer.android.com">developer site</a>. The SDK and associated Eclipse plug-in they provide makes creating a new project from their template extremely easy and thankfully the template project is very minimal. This is definite boon as it can be extremely frustrating chopping out all the rubbish some Eclipse plug-in developers add to their template projects. As far as I&#8217;m concerned I always want to start more or less from scratch with this sort of thing.</p>
<p>With that said there is a certain app development pattern that you simply have to follow because of the way in which android apps get packaged and deployed on mobile devices. Therefore there are some concepts developers must familiarise themselves with and get used to because there is no alternative.</p>
<p>If you&#8217;ve used GWT you&#8217;ll notice there are some similarities in the SDK style. The Android SDK does try to do a bit too much for you: it generates the resources (&#8216;R&#8217;) class on the fly for the purposes of updating Eclipse&#8217;s auto complete facility and to avoid IDE compiler errors. Which on one hand is a good thing, but I think that this, in combination with other automatic actions it carries out under the covers while your writing code, contribute to the fact that it seems somewhat buggy. Anyone who regularly uses Eclipse will know that from time to time it gets itself into a state of confusion, not surprising when you consider that it is constantly compiling code as you&#8217;re writing it to pick up compiler errors on the fly.</p>
<p>Also provided with the SDK is the facility to test your apps on virtual android devices. This is a very useful feature but occasionally you will find it gets itself into a state where you have to close the virtual device and start it again. This does take some time and I actually found it quicker to build the apps using Apache Ant and copying it across to a physical device connected by USB. This brings up some additional points  - the USB debugging feature was not possible with my device as the number of drivers for different platforms is fairly limited. But in actual fact its probably a more useful and realistic test to simply copy your apps (using the debug .apk which you can build with the ant &#8216;debug&#8217; task) to the device and install them and run them properly.</p>
<p>I should probably mention that the supplied &#8216;tools&#8217; which live in the SDK directory where you extracted the SDK to, include a useful tool called &#8216;android&#8217; which allows you to generate an empty project. This allows you to edit and build runnable .apk files without using the Eclipse plug-in and indeed in any other IDE you may choose. Building the project is possible as mentioned using the Apache Ant script which the android task generates for you. This ability to generate a bare-bones buildable project is probably the most useful feature of the SDK in my opinion. Other platform tool developers could do well to follow this example, I know of plenty of open source projects that could certainly benefit from such a feature as much of the learning curve is often just getting everything organised so you can run anything at all.</p>
<p>I think this would be a convenient point to break my analysis of android development platform until I get a bit more used to it. Apart from anything else, I need to reboot my machine because Eclipse has become well and truly stressed out by the whole thing! Still its all good fun&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ssims.co.uk/index.php/2010/08/the-android-sdk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Developing Android Apps&#8230; step 0.1</title>
		<link>http://blog.ssims.co.uk/index.php/2010/07/developing-android-apps-step-0-1/</link>
		<comments>http://blog.ssims.co.uk/index.php/2010/07/developing-android-apps-step-0-1/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 23:55:17 +0000</pubDate>
		<dc:creator>ssims</dc:creator>
				<category><![CDATA[Android Development]]></category>
		<category><![CDATA[Java Development]]></category>

		<guid isPermaLink="false">http://blog.ssims.co.uk/?p=479</guid>
		<description><![CDATA[Well, from tiny acorns mighty oaks do grow&#8230; I really should be asleep, but here&#8217;s a screenshot of my new Android tablet (an EKEN M-001) running my first Android application. I will leave any comments on the development SDK till later. Generally seems quite painless to write small applications, complying with Android standard app architecture [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_480" class="wp-caption alignright" style="width: 310px"><a href="http://blog.ssims.co.uk/techblog/wp-content/uploads/2010/07/DSC00436.jpg"><img class="size-medium wp-image-480" title="DSC00436" src="http://blog.ssims.co.uk/techblog/wp-content/uploads/2010/07/DSC00436-300x225.jpg" alt="" width="300" height="225" /></a><p class="wp-caption-text">Hello World on Android</p></div>
<p>Well, from tiny acorns mighty oaks do grow&#8230; I really should be asleep, but here&#8217;s a screenshot of my new Android tablet (an EKEN M-001) running my first Android application.</p>
<p>I will leave any comments on the development SDK till later. Generally seems quite painless to write small applications, complying with Android standard app architecture and following an appropriate UI style might take a bit more getting used to.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ssims.co.uk/index.php/2010/07/developing-android-apps-step-0-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Intelligent Architectures &#8211; a space for development projects and business oriented ventures</title>
		<link>http://blog.ssims.co.uk/index.php/2010/03/intelligent-architectures-a-space-for-development-projects-and-business-oriented-ventures/</link>
		<comments>http://blog.ssims.co.uk/index.php/2010/03/intelligent-architectures-a-space-for-development-projects-and-business-oriented-ventures/#comments</comments>
		<pubDate>Sat, 20 Mar 2010 21:17:59 +0000</pubDate>
		<dc:creator>ssims</dc:creator>
				<category><![CDATA[Java Development]]></category>

		<guid isPermaLink="false">http://blog.ssims.co.uk/?p=399</guid>
		<description><![CDATA[I have just launched a new website to use as a space for posting information related to the Knowledge Management Environment Specification which I am working on under the organisation name - Intelligent Architectures. It seemed convenient to have an area to publish material related to this project and other similar ventures which have more scope [...]]]></description>
			<content:encoded><![CDATA[<p>I have just launched a new website to use as a space for posting information related to the Knowledge Management Environment Specification which I am working on under the organisation name - <a href="http://www.intelligent-architectures.co.uk/">Intelligent Architectures</a>. It seemed convenient to have an area to publish material related to this project and other similar ventures which have more scope than can be hosted on a blog or my personal website. It also has a fresh and clean design more appropriate for pitching to potentially interested parties.</p>
<p><a href="http://www.intelligent-architectures.co.uk/">For further information, see the new site in its all its tentative but nevertheless functional glory here</a>:</p>
<p><a href="http://www.intelligent-architectures.co.uk">Intelligent Architectures</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ssims.co.uk/index.php/2010/03/intelligent-architectures-a-space-for-development-projects-and-business-oriented-ventures/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

