<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3.2" -->
<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/"
	>

<channel>
	<title>Tech O2 Blog</title>
	<link>http://TechO2.com/blog</link>
	<description>New Breed of IT Services Company, Bringing Life to Technology Partnerships</description>
	<pubDate>Mon, 16 Aug 2010 09:19:47 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.2</generator>
	<language>en</language>
			<item>
		<title>Should the SMB Market Consider Custom Built IT Applications? Or Buy Off the Shelf?</title>
		<link>http://TechO2.com/blog/?p=19</link>
		<comments>http://TechO2.com/blog/?p=19#comments</comments>
		<pubDate>Mon, 16 Aug 2010 09:19:47 +0000</pubDate>
		<dc:creator>Harry</dc:creator>
		
		<category><![CDATA[CRM, CEM]]></category>

		<category><![CDATA[Communications]]></category>

		<category><![CDATA[IT Management]]></category>

		<category><![CDATA[SMB]]></category>

		<category><![CDATA[Software Development]]></category>

		<category><![CDATA[Custom built IT applications]]></category>

		<guid isPermaLink="false">http://TechO2.com/blog/?p=19</guid>
		<description><![CDATA[The answer to buy or build could be yes to both, according to Matt  Holtle, vice president of The Gartner Group. If you can find  off-the-shelf functionality that meets 80-100 percent of your business  needs then the answer is easy: buy it. If you need a lot of  customization for the [...]]]></description>
			<content:encoded><![CDATA[<p>The answer to buy or build could be yes to both, according to Matt  Holtle, vice president of The Gartner Group. If you can find  off-the-shelf functionality that meets 80-100 percent of your business  needs then the answer is easy: buy it. If you need a lot of  customization for the application to meet your business needs, then you  are probably better off going custom. Factor in the cost for  customization and the annual licensing fees, and it could be cost  prohibitive to buy off the shelf.</p>
<p>The good news is that some of your applications—the ones that  automate commodity business processes—can be bought off the shelf, and  the ones that are dealing with the core processes that differentiate  your company can be custom.</p>
<p>With the growing software market and the global economy, there are  many choices when it comes to custom-built software. Overseas  development and open source frameworks made the process much more  affordable, but you still need the right technology partner.</p>
<p>Here are some of the top things to consider when looking for a custom software developer:</p>
<ol>
<li>Make sure they understand your business requirements and objectives</li>
<li>Take  time with the design and planning stages. This is extremely important  and should have the appropriate time allotted for the task</li>
<li>Make sure you completely understand the scope of the project before starting development</li>
<li>Be  involved with the entire development process and all iterations, and  make sure your partner uses the latest development methods (Agile)</li>
<li>Make sure you have local support and Project Management (most projects fail because of poor project management)</li>
<li>Find out how Quality Assurance is handled and what portion of development is allocated for QA</li>
<li>Set reasonable expectations and timelines for deliverables</li>
<li>Discuss how cross-functional departments may be affected by the new application and make sure they are involved in the process.</li>
</ol>
<p>Follow these steps and you will be off to a good start.  Custom  application disasters can normally be traced back to three areas: poor  design and scope, poor project management and lack of stakeholder&#8217;s  involvement in the process.</p>
<p>Sreeni Jakka of TechO2 puts it best when he says &#8220;projects evolve,  not change.&#8221; It is a guarantee that projects will have many changes  throughout the development process, so if we are aware of this and  anticipate them, it is evolution, not change.</p>
]]></content:encoded>
			<wfw:commentRss>http://TechO2.com/blog/?feed=rss2&amp;p=19</wfw:commentRss>
		</item>
		<item>
		<title>Ajaxification of UI components using OpenFaces</title>
		<link>http://TechO2.com/blog/?p=18</link>
		<comments>http://TechO2.com/blog/?p=18#comments</comments>
		<pubDate>Thu, 29 Apr 2010 19:51:05 +0000</pubDate>
		<dc:creator>TechO2 Team</dc:creator>
		
		<category><![CDATA[AJAX]]></category>

		<category><![CDATA[JSF]]></category>

		<category><![CDATA[Open Source]]></category>

		<category><![CDATA[OpenFaces]]></category>

		<guid isPermaLink="false">http://TechO2.com/blog/?p=18</guid>
		<description><![CDATA[OpenFaces is an open-source library of AJAX-powered JSF components, an Ajax framework and a client-side validation framework. OpenFaces is based on the set of JSF components formerly known as QuipuKit. OpenFaces is contributed and administered by TeamDev Ltd. OpenFaces is one of the dozen component libraries that are developed in the last 5 years to [...]]]></description>
			<content:encoded><![CDATA[<p>OpenFaces is an open-source library of AJAX-powered JSF components, an Ajax framework and a client-side validation framework. OpenFaces is based on the set of JSF components formerly known as QuipuKit. OpenFaces is contributed and administered by <a href="http://www.teamdev.com/" target="_default">TeamDev Ltd.</a> OpenFaces is one of the dozen component libraries that are developed in the last 5 years to enhance the JSF core component library.</p>
<p>Ajax  is a group of interrelated web development techniques used on the client-side to create interactive web applications. With Ajax, web applications can retrieve data from the server asynchronously in the background without interfering with the display and behavior of the existing page. The use of Ajax techniques has led to an increase in interactive or dynamic interfaces on web pages.</p>
<p>Almost all OpenFaces components have built-in ajax functionality by using an optional attribute “render”, Example: o:commandLink; render attribute specifies what components should be reloaded after the ajax request is complete.<br />
OpenFaces 2.0 also introduces an Ajax framework which allows adding Ajax-based interactions in cases when components&#8217; built-in ajax capabilities are not enough. Open Faces Ajax framework addresses a common scenario where the whole page has to be submitted to perform some application-specific action and reload certain components of the page with the results. o:ajax is a non-visual component that can be used to ajaxify any JSF (or even html) component.</p>
<p>Here&#8217;s a simple example which demonstrates the usage of the o:ajax component:</p>
<p>&lt;h:inputText id=&#8221;in&#8221; value=&#8221;#{}&#8221;/&gt;<br />
&lt;h:commandButton value=&#8221;Update&#8221;&gt;<br />
&lt;o:ajax execute=&#8221;in&#8221; render=&#8221;out&#8221;/&gt;<br />
&lt;/h:commandButton&gt;<br />
&lt;h:outputText id=&#8221;out&#8221; value=&#8221;#{}&#8221;/&gt;</p>
<p>Some Gotchas using o:ajax:</p>
<ol>
<li>The method binding for the action that need to be executed when the event is trigger will have to implement an action listener using ActionEvent as the parameter. Frameworks such as a4j use action attributes without action listeners to achieve the same.</li>
<li>OpenFaces implementation of Ajax is strictly for in-page transitions; meaning you should use Ajax for rendering/reloading components in the same page. Other frameworks allow page transitions from the action event triggered by ajax requests; OpenFaces doesn’t. Example: if your action method returns a navigation cue for faces-config to go to another page, OpenFaces ajax request completion will not honor that. This is true for all ajax-enabled OpenFaces components as well.</li>
<li>When o:ajax is used to trigger an action on the server side (managed bean), all the components that are part of the execute attribute (explicit submission of certain components), the component that’s triggering the ajax call, and the components that are part of the render attribute (the components that need to be redrawn) get submitted to the managed bean as part of the ajax life cycle. This causes issues for a very common use case where possible values for a component are dynamically returned from the server using ajax. This use case will not work with o:ajax implementation as the target component value will also be submitted to the life cycle, and they may fail validation (if the component is subjected to a validation), and basically the action will never happen. A big shout out to the OpenFaces developers! They quickly responded to our request and added an attribute declaration for o:ajax to handle this very common use case; executeRenderedComponents, that you can use to turn off value submission of the rendered components during ajax request.</li>
<li>All components involved such as the ones triggering the ajax request, the ones specified in execute attribute, and the components specified in render attribute should be located in the same form!</li>
<li>Use of o:ajax with components from other frameworks such as RichFaces is unpredictable.</li>
</ol>
<p>o:ajax plays well with all the other JSF components and o:defaultProgressMessage (please wait message that you may want to use to convey the user that the ajax request is in progress).</p>
<p>We still think that there will be use cases where the ajax request action have to result in a transition conditionally. Example, ajax request is invoked with specification of what component to be rerendered after the request is complete. The request is binded with an action method which based on a certain condition will result in a navigation to a different page. In most cases, the behavior will be to render the component(s) specified in the request. If o:ajax can support that use case, I think you can pretty much implement all variations of ajaxification using o:ajax.</p>
]]></content:encoded>
			<wfw:commentRss>http://TechO2.com/blog/?feed=rss2&amp;p=18</wfw:commentRss>
		</item>
		<item>
		<title>JSF Component Vs. Value binding</title>
		<link>http://TechO2.com/blog/?p=17</link>
		<comments>http://TechO2.com/blog/?p=17#comments</comments>
		<pubDate>Fri, 22 Aug 2008 04:18:56 +0000</pubDate>
		<dc:creator>Sreeni Jakka</dc:creator>
		
		<category><![CDATA[JSF]]></category>

		<category><![CDATA[Java]]></category>

		<category><![CDATA[Software Development]]></category>

		<category><![CDATA[component binding]]></category>

		<category><![CDATA[Java EE 5]]></category>

		<category><![CDATA[JSF 1.2]]></category>

		<category><![CDATA[value binding]]></category>

		<guid isPermaLink="false">http://TechO2.com/blog/?p=17</guid>
		<description><![CDATA[JSF is a component-oriented, event driven web application framework. For those, that haven’t checked out JSF yet, I think it’s time! JSF 1.2 is now part of Java EE 5. I wouldn’t go into comparing JSF with Struts and other frameworks here… lot of folks did that already! I would just say that once you [...]]]></description>
			<content:encoded><![CDATA[<p>JSF is a component-oriented, event driven web application framework. For those, that haven’t checked out JSF yet, I think it’s time! JSF 1.2 is now part of Java EE 5. I wouldn’t go into comparing JSF with Struts and other frameworks here… lot of folks did that already! I would just say that once you start working with JSF, you will realize what you have been missing all these years!</p>
<p>JSF like several other noted web frameworks follows the MVC pattern. The managed beans ala backing beans form the model, components form the view, and the Faces Servlet forms the controller.  It’s the Component that’s the subject of this post. Components are typically UI components that are factory built, and come with rich features similar to AWT/Swing components. So, one key benefit JSF offers in terms of UI design is you have rich set of UI components to build desktop-like rich user interface applications, and also reduces the presentation layer development efforts dramatically.</p>
<p>JSF provides two ways of binding these components to data: Component binding and Value binding. Component binding binds the view component to a Java instance of the UI component in the backing bean. Value binding binds the value of the view component to a property on the backing bean.<br />
Example of value binding:<br />
The view component is defined something like this</p>
<p>&lt;h:inputText id value=&#8221;#{myBean.someProperty}&#8221;/&gt;</p>
<p>The backing bean property is defined as something like this</p>
<p>public class MyBean {</p>
<p>String someProperty = “”;</p>
<p>public String getSomeProperty() {</p>
<p>return someProperty;<br />
}<br />
public void setSomeProperty(String property) {<br />
someProperty = property;<br />
}</p>
<p>}</p>
<p>Example of component binding:<br />
The view component is defined something like this</p>
<p>&lt;h:inputText value=&#8221;#{ myBean.someProperty}&#8221;</p>
<p>binding=&#8221;#{ myBean.somePropertyInputText}&#8221;/&gt;</p>
<p>The backing bean definition goes something like this</p>
<p>public class MyBean {</p>
<p>HtmlInputText somePropertyInputText;</p>
<blockquote></blockquote>
<p>public HtmlInputText get somePropertyInputText () {<br />
return somePropertyInputText;<br />
}<br />
public void set somePropertyInputText (HtmlInputText input) {<br />
somePropertyInputText = input;<br />
}</p>
<p>}</p>
<p>There is always a debate whether you implement value binding or component binding in JSF. Personally, if you look at the component binding example, it starts looking like more .NETish… I guess it’s a matter of philosophy; I have seen developers writing backing beans with ton of code using component APIs embedded in it.</p>
<p>Though, sometimes it’s easier to work with the inherent component binding at the API level (ex: populating a list box using &lt;f:selectItem&gt;), personally I prefer to go with value binding and minimize component binding. Here are my reasons:<br />
1.    Gives a clean separation of UI design and Java code. Also from work division perspective, this is very relevant in environments where you have dedicated UI designers that focus on the component representation in the view part (xhtml, or jsp) and Java programmers for the Java side of the equation.<br />
2.    Besides separation of development efforts, value binding also gives opportunities for interchanging UI components that front a backing bean property very easily. You may decide that you would like a Scrollable Data Table instead of a Data Table, and accomplish it with no changes on the backing bean side.<br />
3.    JSF is very extendable where you can plug in UI component libraries from third parties. Rich Faces, Facelets, Ajax4jsf, JSF Avatar, etc. are some of the component libraries you can stack up on top of JSF. Component binding in such scenario will work against pluggable functionality if you decide to swap Rich Faces with let’s say MyFaces Tomahawk. Now, you will have to plow through your backing bean code to replace the component APIs with the new ones.<br />
4.    JSF also supports custom components. The above arguments about pluggability and isolation of UI APIs vs. managed bean code also hold good here.<br />
5.    When solving a business problem you think in terms of objects, their properties, relationships and interaction; not in terms of how those objects are mapped to a specific UI component. From a philosophical perspective, that’s my biggest reason for not using component binding and the component APIs in the managed beans.</p>
<p>Component binding does have it’s niche in situations where you want to implement valueChangeListener, or want to dynamically change the contents of a component (of course, you can Ajax enable your view and achieve the same without component binding in most cases). But, I would like to stick with value binding for 95% of my needs.</p>
]]></content:encoded>
			<wfw:commentRss>http://TechO2.com/blog/?feed=rss2&amp;p=17</wfw:commentRss>
		</item>
	</channel>
</rss>
