<?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>Jens-Fabian Goetzmann &#187; Development</title>
	<atom:link href="http://www.jefago.com/category/development/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jefago.com</link>
	<description>Thoughts on (Web) Development, Software Architecture and Other Stuff</description>
	<lastBuildDate>Fri, 30 Jul 2010 21:00:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Smartphone Apps &#8211; Curse and Blessing</title>
		<link>http://www.jefago.com/2010/07/smartphone-apps-curse-and-blessing/</link>
		<comments>http://www.jefago.com/2010/07/smartphone-apps-curse-and-blessing/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 21:00:35 +0000</pubDate>
		<dc:creator>Jens-Fabian Goetzmann</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[App]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Smartphone]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.jefago.com/?p=70</guid>
		<description><![CDATA[Before owning an app-centric smartphone such as the Apple iPhone myself, my thinking has been that apps serve no real purpose &#8211; 90% of the purposes fulfilled by these apps exist as free Web applications and services, and app-centric smartphones usually come with capable Web browsers and data flat rate plans. My thinking has changed, [...]]]></description>
			<content:encoded><![CDATA[<p>Before owning an app-centric smartphone such as the Apple iPhone myself, my thinking has been that apps serve no real purpose &#8211; 90% of the purposes fulfilled by these apps exist as free Web applications and services, and app-centric smartphones usually come with capable Web browsers and data flat rate plans. My thinking has changed, however, since using an iPhone: apps have real (or at least, perceived) advantages when compared to Web applications accessed from a smartphone browser:</p>
<ul>
<li>User experience perfectly adapted to the phone (e.g. touchscreen interaction)</li>
<li>Direct access to device &#8220;periphery&#8221;, e.g. gyroscopic sensor</li>
<li>Integration with other software, e.g. messaging, contacts</li>
<li>Own, colorful app icon</li>
</ul>
<p><span id="more-70"></span></p>
<p>Naturally, most apps do not in fact replace Web applications, they rather augment them with another means of interaction (e.g. think of all the social network apps, news and information apps, etc., that contact their respective &#8220;mother sites&#8221; using dedicated APIs). Nevertheless, the increasing proliferation of app-enabled smartphones means that apps will increasingly be considered a required means of interaction for Web applications. This will naturally have quite an impact on the mid-term development of the software and software development landscape, particularly with respect to those services that are currently being offered primarily as free (and most probably ad-financed) Web applications. In the remainder of this article, I will discuss some aspects of these changes, and highlight their positive as well as negative potential consequences.</p>
<h5>Service monetization</h5>
<p>First and foremost, I will discuss one of the most important and positive aspects of apps: Due to the ease of use of the respective app stores, apps have made it easy to monetize services. Most classic Web applications are offered free of charge, and monetize primarily using advertising. This, however, has many drawbacks: Users develop advertisement blindness, block advertising completely, and more often than not advertising also impedes the user experience of Web applications &#8211; be it in terms of the visual appereance, or even getting in the way of the user wanting to use the application (think layer apps, or Flash ads with sound effects).</p>
<p>In contrast, lots of apps are offered for a relatively little charge around 1$, which is easily payable by the user through the app store, and because all applications carry a price tag (even if it sometimes says &#8220;free&#8221;), it makes it more acceptable for the user to pay for receiving a service. Even though today there are means to charge small amounts to users also in more classic Web applications (think premium SMS messages, PayPal, etc.), it simply doesn&#8217;t feel natural to pay for something on the Web without getting physical goods in return (of course, I am exaggerating here, and there are numerous examples of virtual services and goods being sold for real money, but they mostly fall outside the basic service category I am looking at here).</p>
<h5>Additional effort with limited differentation opportunities</h5>
<p>Apps as one means of interaction with Internet based services are going to be increasingly considered a necessary part of the service itself. The more this is the case, the less will the existence of an app to access the service alone be a unique selling proposition (USP) for that service. Of course, an app with a well designed, intuitive interface can be a USP, but the same holds true for a well designed Web interface, so this argument is not app specific.</p>
<p>On the other hand, designing and developing apps to interface with an Internet based service requires additional effort, especially if the apps are to actually take into account the specialties of the device they are targeting (and a good Web developer/designer doesn&#8217;t necessarily make for a good app developer/designer). This is especially true if the competition offers their apps free of charge (as it is the case now e.g. for social networks), since then there is no way to generate additional revenue to cover the efforts involved in the app development &#8211; except ads, again.</p>
<h5>Multitude of platforms</h5>
<p>Another challenge that is developing is the increasing number of platforms for which an app concept exists. Apple&#8217;s iOS &#8211; powering iPhone, iPad and iPod touch &#8211; is still the most popular and relevant one, but other smartphone (OS) vendors have adopted their app platforms and stores as well: Google&#8217;s Android, Microsoft&#8217;s Windows Phone 7, RIM&#8217;s BlackBerry platform, Palm&#8217;s Web OS, Nokia&#8217;s OVI are only the most relevant, and this means a stunning number of six platforms with incompitable programming environments. Some progress has been made in this direction recently, e.g. Palm focusing on making it easy for developers to port their apps to Web OS. On the other hand, there is Apple as the most important player, whose app store terms effectively prohibit any software not originally developed in Apple&#8217;s C dialect <em>Objective C</em>, making it virtually impossible to easily port any app to iOS.</p>
<p>A way out of this dilemma would be to increase standardisation of smartphone app development platforms. There are multiple possibilities for developing that kind of platform: One would be Java, which has a track record in both platform interoperability and mobile devices, or web technologies such as XML, HTML, and JavaScript, which are quite well known to a lot of developers and can already be used for app development on a number of platforms. Naturally, a standard smartphone app development platform would still have to be able to adapt to specialties of the device, but abstraction layers to accomplish this could probably be conceived relatively easily.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save">Share/Save</a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.jefago.com/2010/07/smartphone-apps-curse-and-blessing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Auto-Starting EJBs</title>
		<link>http://www.jefago.com/2009/06/auto-starting-ejbs/</link>
		<comments>http://www.jefago.com/2009/06/auto-starting-ejbs/#comments</comments>
		<pubDate>Sat, 13 Jun 2009 11:30:41 +0000</pubDate>
		<dc:creator>Jens-Fabian Goetzmann</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[EJB]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Java EE]]></category>

		<guid isPermaLink="false">http://www.jefago.com/?p=30</guid>
		<description><![CDATA[An issue that recently gave me something to gnaw on was that of auto-starting an EJB: I wanted to achieve the effect that an EJB within a Java enterprise application would become active (and in that special case, connect to another component on another machine) as soon as it was deployed (or the container was [...]]]></description>
			<content:encoded><![CDATA[<p>An issue that recently gave me something to gnaw on was that of auto-starting an EJB: I wanted to achieve the effect that an EJB within a Java enterprise application would become active (and in that special case, connect to another component on another machine) as soon as it was deployed (or the container was started). If possible, I wanted the solution to be container independent. After a lot of googling and trying, I found a solution that works, but it is probably one of the most awkward hacks to solve a problem that sounds as simple as this.</p>
<p><span id="more-30"></span>First and foremost: What I tried first was using the <a title="Reference documentation for @PostConstruct annotation" href="http://java.sun.com/javaee/5/docs/api/javax/annotation/PostConstruct.html" target="_blank"><code>@PostConstruct</code> annotation</a> on a method that should be called after deployment – but that doesn&#8217;t work, because the EJB is not guaranteed to be instantiated directly after deployment. As a matter of fact, at least the JBoss I was using lazily instantiates the EJB the moment it is first invoked.</p>
<p>After a while, I came across <a href="http://forums.sun.com/thread.jspa?threadID=5172902" target="_blank">this thread in Sun&#8217;s forum</a>, in which a Sun developer states that better support for this use case is planned for a future EJB version, and currently the only way to achieve the desired effect is to rely on a <a href="http://java.sun.com/javaee/5/docs/api/javax/servlet/ServletContextListener.html" target="_blank"><code>ServletContextListener</code></a>, which provides a <code>contextInitialized()</code> method that is called as soon as a servlet context is initialized. However, like the &#8220;servlet&#8221; implies, there needs to be a web application to use this listener – so I ended up adding a web application to my enterprise application with no content besides that context listener that would poke the EJB in order to get started. Now although this method is far from elegant, at least it works reliably and most possibly independent of the container used; at least I can verify its functionality on the JBoss 5 used in my test system.</p>
<p><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save">Share/Save</a> </p>]]></content:encoded>
			<wfw:commentRss>http://www.jefago.com/2009/06/auto-starting-ejbs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
