<?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"
	>

<channel>
	<title>Going Modern</title>
	<atom:link href="http://blog.nexaweb.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.nexaweb.com</link>
	<description>Thoughts, Field Notes and News from Nexaweb</description>
	<pubDate>Fri, 19 Feb 2010 01:31:02 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
	<language>en</language>
			<item>
		<title>The Data Window Makes PowerBuilder Sticky!</title>
		<link>http://blog.nexaweb.com/post/the-data-window-makes-powerbuilder-sticky/</link>
		<comments>http://blog.nexaweb.com/post/the-data-window-makes-powerbuilder-sticky/#comments</comments>
		<pubDate>Wed, 17 Feb 2010 13:56:41 +0000</pubDate>
		<dc:creator>Adam Markey</dc:creator>
		
		<category><![CDATA[Java]]></category>

		<category><![CDATA[Application Modernization]]></category>

		<category><![CDATA[Data Window]]></category>

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

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

		<guid isPermaLink="false">http://blog.nexaweb.com/?p=150</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://blog.nexaweb.com/post/the-data-window-makes-powerbuilder-sticky/";</script>PowerBuilder has been around and successful for almost two decades now and after many discussions with PowerBuilder developers, it has become apparent to me what the marquee feature of PowerBuilder really is.  Some developers would comment on the ease of report creation, and others on the presence of client-side processing capabilities, but most only wanted [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://blog.nexaweb.com/post/the-data-window-makes-powerbuilder-sticky/";</script><p>PowerBuilder has been around and successful for almost two decades now and after many discussions with PowerBuilder developers, it has become apparent to me what the marquee feature of PowerBuilder really is.  Some developers would comment on the ease of report creation, and others on the presence of client-side processing capabilities, but most only wanted to talk about their beloved Data Window.  After taking a look at what makes the DataWindow tick, it is truly the power of the DataWindow that makes developers’ lives easy.</p>
<p>Over the last 18 months, I&#8217;ve gotten to work with a variety of PowerBuilder versions, and had first-hand experience with the Data Window. When you look at it, it is a fantastic piece of tech.  For those of you who don&#8217;t understand the concept and what it does, let me try to explain.  The DataWindow is a group of user interface elements that can easily be tied to the database using the PowerBuilder IDE.  What makes the DataWindow so sticky is that once the interface has been defined and the SQL statements have been written, the two-way data connection can be made. Two way data means that if the data is updated on the UI and saved by the user it will be persisted to the database, and if the data changes on the database, upon refresh of the UI that data will be sent back. Developers love this because it is a minimal amount of code to begin developing screens that map to their business requirements quickly. This allows them to focus on the solving the business problem at hand because they do not have to worry about application infrastructure.</p>
<p>Unfortunately, there are number of architectural elements of PowerBuilder that severely limit its ability continue to be a viable option for continued IT support. Most prominently is its lack of support for a rich web environment that can recreate the performance, client side processing capabilities, and UI widgets that are considered standard in today’s Web 2.0 frameworks and delivered in a centrally managed, no-install medium. Also, finding resources to maintain and enhance PowerBuilder are severely hindering the IT department’s ability to continue support these applications as they age. The customers I&#8217;m working with are in need of a solution for the deployment issues, legacy language/skillset issues, diminishing support for PowerBuilder, and the need to move to a more open codebase like Java.</p>
<p>To help these customers, we’ve built Java technology that should be an easy transition for current PowerBuilder developers and Java developers interested in building a Java web app that gives that “Desktop Application in a Browser” feeling. In addition to building technology that can meet or exceed the client side capabilities of a PowerBuilder application in the web, Nexaweb has developed a semi-automated process that can quickly cut the process of moving from PowerBuilder to J2EE with greater functionality, flexibility and maintainability.</p>
<p>Modernizing to J2EE from PowerBuilder will be our focus in a demo today (Wednesday, February 17 at 2 p.m. EST) during our webinar with Sierra Atlantic.  I would definitely recommend checking it out.  You can register here: https://www1.gotomeeting.com/register/798601449.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nexaweb.com/post/the-data-window-makes-powerbuilder-sticky/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Revenue is Key Driver of Application Modernization</title>
		<link>http://blog.nexaweb.com/post/revenue-is-key-driver-of-application-modernization/</link>
		<comments>http://blog.nexaweb.com/post/revenue-is-key-driver-of-application-modernization/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 01:37:49 +0000</pubDate>
		<dc:creator>Chris Heidelberger</dc:creator>
		
		<category><![CDATA[Ajax]]></category>

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

		<category><![CDATA[Add new tag]]></category>

		<category><![CDATA[Application Modernization]]></category>

		<guid isPermaLink="false">http://blog.nexaweb.com/?p=145</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://blog.nexaweb.com/post/revenue-is-key-driver-of-application-modernization/";</script>The current state of affairs has most organizations asking IT to build business cases for new expenditures, especially when it comes to updating an application that isn&#8217;t necessarily broken.  For IT, broken tends to mean that an application is getting harder to find resources to keep it current, maintenance is time consuming, and the technology [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://blog.nexaweb.com/post/revenue-is-key-driver-of-application-modernization/";</script><p>The current state of affairs has most organizations asking IT to build business cases for new expenditures, especially when it comes to updating an application that isn&#8217;t necessarily broken.  For IT, broken tends to mean that an application is getting harder to find resources to keep it current, maintenance is time consuming, and the technology it&#8217;s built on can&#8217;t support the features the business is asking for.  For the business, it&#8217;s about revenue.  If an application gives them what they need, let&#8217;s them do their job, it works.  However, if they feel the application is holding them back and keeping them from realizing the most revenue possible, it gets top modernization priority. For example several of our most recent banking customers want to leverage existing back office systems (e.g. pricing engines) to extend their global trading systems to external traders, partners and banking customers. This drives significant revenue by dramitically increasing transaction volume and customer satisfaction through eCommerce.</p>
<p>When a decision is made to modernize, the discussion always get political.  Some folks are in favor of building their own application to ensure it serves their business, while others feel the cost savings of going with a Commercial Off-the-shelf Software (COTS) solution is a no brainer.  The build vs. buy dilemma is as old and stubborn as PowerBuilder, Visual Basic and C++ themselves.  Neither approach is wrong, but all have their drawbacks.  Modernizing an application using in-house resources ensures that specific features and functionality will be included, but not without a cost.  A COTS solution can dramatically reduce the costs, but tends to require a trade off of features and functions leaving the business without any real advantage or edge.   So, what&#8217;s the answer?  That&#8217;s a million dollar question, and a puzzle more and more organizations are having to solve.  How are you approaching modernization at your organization?  Is revenue driving final decisions?  What are your thoughts on the build vs. buy question?</p>
<p>Chris Heidelberger, CEO, Nexaweb</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nexaweb.com/post/revenue-is-key-driver-of-application-modernization/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Application Modernization Paves the Way for Outsourced Development</title>
		<link>http://blog.nexaweb.com/post/application-modernization-paves-the-way-for-outsourced-development/</link>
		<comments>http://blog.nexaweb.com/post/application-modernization-paves-the-way-for-outsourced-development/#comments</comments>
		<pubDate>Wed, 10 Dec 2008 16:55:20 +0000</pubDate>
		<dc:creator>Adam Markey</dc:creator>
		
		<category><![CDATA[Application Modernization]]></category>

		<guid isPermaLink="false">http://blog.nexaweb.com/?p=141</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://blog.nexaweb.com/post/application-modernization-paves-the-way-for-outsourced-development/";</script>A large percentage of outsourced, onshore and offshore resources, are skilled in XML, Java and other Internet-based languages and development techniques, meaning their ability to tinker with and add features to 3GL/4GL applications is limited at best and that cost savings of such as model is neutralized. Adding to the conversation is the acknowledgment that [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://blog.nexaweb.com/post/application-modernization-paves-the-way-for-outsourced-development/";</script><p>A large percentage of outsourced, onshore and offshore resources, are skilled in XML, Java and other Internet-based languages and development techniques, meaning their ability to tinker with and add features to 3GL/4GL applications is limited at best and that cost savings of such as model is neutralized. Adding to the conversation is the acknowledgment that more than 200 million lines of COBOL code are currently in use while another five million are being written each year. This presents a challenge given the waning number of students studying computer science and the shrinking number of experts in legacy applications.</p>
<p>According to Gartner, “interviews conducted with IT sourcing managers across the Gartner client base hint at what’s to come: Many have seen price hikes of 10% to 15% in certain skills during the past year.”<span id="more-141"></span></p>
<p>Still, the dwindling, expensive legacy expert community is not the only IT population that needs to be addressed.  The rise of the millennium generation should also be top of mind.  Gartner research reports: “College students and 20-somethings are heading toward IT-related work in film, music, multimedia, gaming and Internet companies” and that “students enrolling in science, technology, engineering, and mathematics &#8212; the STEM disciplines – have declined in developed countries and risen in other countries.  In the United States for instance, computer science enrollment has dropped 39% since 2002.</p>
<p>The costs and reduction in the workforce of experienced legacy IT professionals combined with a shrinking pool of Internet IT resources is a significant issue, but so too is it an opportunity &#8212; an opportunity to re-structure IT as a business-driven function. CIO’s, IT executives, and business leaders must identify the roles and competencies that understand how information, processes, and relationships drive business effectiveness and who can lead the development of solutions to support LOB demands. These roles include business process designers and developers, enterprise architects, information modelers, business analysts, and IT financial analysts.  While there is not an overabundance of these resources either, an IT group organized around these roles will require fewer bodies which equates to less operational overhead.  The effect of such a transition however will leave a gap in the more traditional IT roles such as application development, programming, infrastructure and services.</p>
<p>“In China, India and other countries, the IT curriculum attracts enrollment.  Chinese universities graduate about 500,000 IT and high-tech students every year.”  Developing countries such as China and others are quickly becoming part of the workforce solution, but as it relates to Internet-oriented technologies such as Java, .NET, XML and others. Thus, it comes back to application modernization.  There is a tremendous demand among business leaders that IT become business driven.  This requires that IT resources are more business-minded, but such a transition in resource skill set requires growing the IT department and incurring more costs, or focusing the IT organization on these skills and leveraging outsourced resources for development and programming.  To adopt that outsource model effectively however requires that applications and the architecture that supports them exist in a format familiar to that pool of outsource<br />
resources.</p>
<p>Pursuance of an application modernization initiative, regardless of size or scope, is paramount to better utilization of offshore resources.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nexaweb.com/post/application-modernization-paves-the-way-for-outsourced-development/feed/</wfw:commentRss>
		</item>
		<item>
		<title>A Guide to Java MessageFormat (or, How I Learned to Stop Worrying and Love Macros)</title>
		<link>http://blog.nexaweb.com/post/a-guide-to-java-messageformat-or-how-i-learned-to-stop-worrying-and-love-macros/</link>
		<comments>http://blog.nexaweb.com/post/a-guide-to-java-messageformat-or-how-i-learned-to-stop-worrying-and-love-macros/#comments</comments>
		<pubDate>Wed, 10 Dec 2008 16:28:46 +0000</pubDate>
		<dc:creator>Joel Barciauskas</dc:creator>
		
		<category><![CDATA[Development]]></category>

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

		<guid isPermaLink="false">http://blog.nexaweb.com/?p=139</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://blog.nexaweb.com/post/a-guide-to-java-messageformat-or-how-i-learned-to-stop-worrying-and-love-macros/";</script>While working on an application for a client, I encountered some issues with Java&#8217;s MessageFormat.  In particular, I needed to pass MessageFormat a string that contained single-quotes and curly braces that would be treated literally.  This is an issue, because single-quotes and curly braces are special characters in MessageFormat land.
MessageFormat is designed to [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://blog.nexaweb.com/post/a-guide-to-java-messageformat-or-how-i-learned-to-stop-worrying-and-love-macros/";</script><p>While working on an application for a client, I encountered some issues with Java&#8217;s MessageFormat.  In particular, I needed to pass MessageFormat a string that contained single-quotes and curly braces that would be treated literally.  This is an issue, because single-quotes and curly braces are special characters in MessageFormat land.</p>
<p>MessageFormat is designed to allow you to dynamically create a string based on a static pattern and a set of inputs. For example, this is from the MessageFormat JavaDoc:</p>
<blockquote>
<pre> Object[] testArgs = {new Long(3), "MyDisk"};

 MessageFormat form = new MessageFormat(
     "The disk \"{1}\" contains {0} file(s).");

 System.out.println(form.format(testArgs));

 // output, with different testArgs
 <em>output</em>: The disk "MyDisk" contains 0 file(s).
 <em>output</em>: The disk "MyDisk" contains 1 file(s).
 <em>output</em>: The disk "MyDisk" contains 1,273 file(s).</pre>
</blockquote>
<p><span id="more-139"></span><br />
Seems pretty straight forward.  However, say you wanted to format a string that contained curly braces, such as &#8220;{ Hello {0}! I&#8217;m inside curly braces }&#8221;.  Of course, to support this, MessageFormat uses single-quotes to specify strings that should be treated literally.  So, naively, one might think to format</p>
<blockquote>
<pre>{ Hello {0}! I'm inside curly braces }</pre>
</blockquote>
<p>with the following output where {0} = &#8220;Joel&#8221;</p>
<blockquote>
<pre>{ Hello Joel! I'm inside curly braces }</pre>
</blockquote>
<p>We would come up with something like</p>
<blockquote>
<pre>'{ Hello {0}! I'm inside curly braces '}</pre>
</blockquote>
<p>This would work, if single-quote were an escape character like many of us are accustomed to using, for instance in regular expressions, and in Java literal strings, backslash &#8220;\&#8221; is an escape character.  Of course, if single-quote were like an escape character, the above example would work and I wouldn&#8217;t be writing this post.  <strong>But the single-quote isn&#8217;t an escape character. </strong></p>
<p>The rules for MessageFormat escaping are most easily understood like this:</p>
<ol>
<li>Strings inside single quotes are treated literally</li>
<li>Two single-quotes next to each other will be interpreted as a single single-quote, rather than an empty literal string</li>
</ol>
<p>The understanding of single-quote as an escape character comes from the second rule.  In this case, it is similar to &#8220;\\&#8221; in Java, C, Perl, etc, where to get the literal character &#8220;\&#8221; rather than an escaped string to be interpreted specially (e.g., &#8220;\n&#8221; for new line, &#8220;\u2297&#8243; for a special Unicode character), you type the escape character twice, i.e., &#8220;\\&#8221;.  However, the two single-quotes in a row are a special case, and most of the time you will use a string inside a set of single-quotes to represent a set of characters that should be ignored by the MessageFormat parser as it searches for placeholders (e.g., {0}, {1}, &#8230;).</p>
<p>Following these rules, to format</p>
<blockquote>
<pre>{ Hello {0}! I'm inside curly braces }</pre>
</blockquote>
<p>where {0} = &#8220;Joel&#8221;, i.e.,</p>
<blockquote>
<pre>{ Hello Joel! I'm inside curly braces }</pre>
</blockquote>
<p>We really only need to tell the parser to ignore the start and end curly braces.  To do this, we will use the following pattern:</p>
<blockquote>
<pre>'{' Hello {0}! I'm inside curly braces '}'</pre>
</blockquote>
<p>And that actually works!</p>
<p>Now, let&#8217;s look at the problem I was trying to solve, and see if these rules can help us out.  The string I was trying to format looked like this:</p>
<blockquote>
<pre>&lt;label text="{ bind('dataSource=joelDS; select=text; type=ONE_WAY') }" /&gt;</pre>
</blockquote>
<p>I was using this string in an <a href="http://dev.nexaweb.com/home/us.dev/index.html@cid=1447.html">XModify Macro</a>, however, such as this:</p>
<blockquote>
<pre>&lt;macro:macro xmlns:macro="http://openxal.org/core/macro"
	name="addTradingTab"&gt;
	&lt;xm:modifications xmlns:xm="http://openxal.org/core/xmodify"&gt;
		&lt;xm:append select="id('container')"&gt;
			&lt;label text="{ bind('dataSource={0}; select=text; type=ONE_WAY') }" /&gt;
		&lt;/xm:append&gt;
	&lt;/xm:modifications&gt;
&lt;/macro:macro&gt;</pre>
</blockquote>
<p>Notice that the string to be appended contains a {, a }, and two &#8216;, all of which need to be escaped, without smothering the {0} from the parser.  First lets tell the parser to ignore the first { and last }:</p>
<blockquote>
<pre>&lt;macro:macro xmlns:macro="http://openxal.org/core/macro"
	name="addTradingTab"&gt;
	&lt;xm:modifications xmlns:xm="http://openxal.org/core/xmodify"&gt;
		&lt;xm:append select="id('container')"&gt;
			&lt;label text="'{' bind('dataSource={0}; select=text; type=ONE_WAY') '}'" /&gt;
		&lt;/xm:append&gt;
	&lt;/xm:modifications&gt;
&lt;/macro:macro&gt;</pre>
</blockquote>
<p>Next, lets escape the single quotes inside the parens:</p>
<blockquote>
<pre>&lt;macro:macro xmlns:macro="http://openxal.org/core/macro"
	name="addTradingTab"&gt;
	&lt;xm:modifications xmlns:xm="http://openxal.org/core/xmodify"&gt;
		&lt;xm:append select="id('container')"&gt;
			&lt;label text="'{' bind(''dataSource={0}; select=text; type=ONE_WAY'') '}'" /&gt;
		&lt;/xm:append&gt;
	&lt;/xm:modifications&gt;
&lt;/macro:macro&gt;</pre>
</blockquote>
<p>We can test the above string using the <a href="http://java.sun.com/j2se/1.4.2/docs/guide/intl/demos/MessageFormat/1.1/example1.html">MessageFormat demo provided by Sun</a>, which runs in an applet.  Entering the</p>
<blockquote>
<pre>&lt;label text="'{' bind(''dataSource={0}; select=text; type=ONE_WAY'') '}'" /&gt;</pre>
</blockquote>
<p>line in the Pattern field, and entering &#8220;joelDS&#8221; in the 0 argument, we get:</p>
<blockquote>
<pre>&lt;label text="{ bind('dataSource=joelDS; select=text; type=ONE_WAY') }" /&gt;</pre>
</blockquote>
<p>Wahoo, it works!</p>
<p>To review:</p>
<ol>
<li>While MessageFormat single-quotes act like escape characters, it is much easier to think of them as a string-literal syntax</li>
<li>When in doubt, test your Macro patterns using the <a href="http://java.sun.com/j2se/1.4.2/docs/guide/intl/demos/MessageFormat/1.1/example1.html">MessageFormat demo provided by Sun</a>.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://blog.nexaweb.com/post/a-guide-to-java-messageformat-or-how-i-learned-to-stop-worrying-and-love-macros/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Legacy Impact: Globalization &#038; Application Modernization (Part 1 of 4)</title>
		<link>http://blog.nexaweb.com/post/legacy-impact-globalization-application-modernization-part-1-of-4/</link>
		<comments>http://blog.nexaweb.com/post/legacy-impact-globalization-application-modernization-part-1-of-4/#comments</comments>
		<pubDate>Wed, 05 Nov 2008 16:32:38 +0000</pubDate>
		<dc:creator>Adam Markey</dc:creator>
		
		<category><![CDATA[Application Modernization]]></category>

		<guid isPermaLink="false">http://blog.nexaweb.com/?p=99</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://blog.nexaweb.com/post/legacy-impact-globalization-application-modernization-part-1-of-4/";</script>Legacy applications have architectural limitations that prohibit their ability to support large scale deployments. They often necessitate servers and technicians at each location with continuous client software maintenance and service, all creating redundant headcounts, resources and costs.
Application modernization toward an open, web architecture can address these technology limitations as they relate to the demands of [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://blog.nexaweb.com/post/legacy-impact-globalization-application-modernization-part-1-of-4/";</script><p>Legacy applications have architectural limitations that prohibit their ability to support large scale deployments. They often necessitate servers and technicians at each location with continuous client software maintenance and service, all creating redundant headcounts, resources and costs.</p>
<p>Application modernization toward an open, web architecture can address these technology limitations as they relate to the demands of globalization and will create new opportunities in terms of people and delivery. First, regarding the architectural limitations of legacy technologies, modernization toward an open, web architecture supports centralized deployments and zero-client installation which significantly lessens the need for local technicians, eliminates client software maintenance needs, and supports a reduction in hardware and infrastructure &#8211;consequently lessening energy requirements. From a pure software development perspective, adopting a loosely coupled architectural Web approach can reduce the time to execute a change request by 90 percent.</p>
<p>Secondly, modernization with Internet-based technology creates new methods of delivery and new ways to carve the resources pie. In terms of people, transformation toward an open, standardized application platform allows better utilization of a global workforce, especially from countries such as China and India. In terms of delivery, the lack of skilled IT resources against the demand will drive innovation and investment in new delivery models such as SaaS, IT process automation, and Internet-based service offerings that lessen reliance on human resources to resolve issues that can be solved in other ways.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nexaweb.com/post/legacy-impact-globalization-application-modernization-part-1-of-4/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Tutorial: Hibernate, DWR and dojo.E</title>
		<link>http://blog.nexaweb.com/post/tutorial-hibernate-dwr-and-dojoe/</link>
		<comments>http://blog.nexaweb.com/post/tutorial-hibernate-dwr-and-dojoe/#comments</comments>
		<pubDate>Mon, 06 Oct 2008 18:16:12 +0000</pubDate>
		<dc:creator>Joel Barciauskas</dc:creator>
		
		<category><![CDATA[Ajax]]></category>

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

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

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

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

		<guid isPermaLink="false">http://blog.nexaweb.com/?p=96</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://blog.nexaweb.com/post/tutorial-hibernate-dwr-and-dojoe/";</script>I just presented a tutorial on Friday on using Direct Web Remoting, Hibernate and dojo.E.  It’s a very simple demo, but demonstrates the power of these three technologies combined to create simple, dynamic Java applications very quickly.  The tutorial is available on SlideShare.
DWR, Hibernate and Dojo.E - A Tutorial
View SlideShare presentation or Upload your [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://blog.nexaweb.com/post/tutorial-hibernate-dwr-and-dojoe/";</script><p>I just presented a tutorial on Friday on using Direct Web Remoting, Hibernate and <a href="http://dojoe.nexaweb.com/">dojo.E</a>.  It’s a very simple demo, but demonstrates the power of these three technologies combined to create simple, dynamic Java applications very quickly.  The tutorial is available on SlideShare.</p>
<div style="left;"><a title="DWR, Hibernate and Dojo.E - A Tutorial" href="http://www.slideshare.net/jbarciauskas/dwr-hibernate-and-dojoe-a-tutorial-presentation?type=powerpoint">DWR, Hibernate and Dojo.E - A Tutorial</a></p>
<div style="2px;">View SlideShare <a title="View DWR, Hibernate and Dojo.E - A Tutorial on SlideShare" href="http://www.slideshare.net/jbarciauskas/dwr-hibernate-and-dojoe-a-tutorial-presentation?type=powerpoint">presentation</a> or <a href="http://www.slideshare.net/upload?type=powerpoint">Upload</a> your own. (tags: <a href="http://slideshare.net/tag/tutorials">tutorials</a> <a href="http://slideshare.net/tag/tutorial">tutorial</a>)</div>
</div>
<p>Note that there is a bug that obscures the URL for the SVN project.  The URL is <a href="http://source.nexaweb.com/svn/repos/trunk/tutorials/ajax/DWRExample/">http://source.nexaweb.com/svn/repos/trunk/tutorials/ajax/DWRExample/</a>.</p>
<p>You can check out the project via SVN using this URL.</p>
<p>Also, to copy and paste the code snippets, <a href="http://www.slideshare.net/jbarciauskas/dwr-hibernate-and-dojoe-a-tutorial-presentation/download">download the document</a> and open directly in PowerPoint. When copying and pasting, watch out for “smart quotes”. Some of the quotation characters in the PPT have been replaced with “smart quotes”, which are not recognized by XML parsers.</p>
<p>This will get even more exciting with the new features of DWR 3.0, which will add a RESTful layer to DWR’s remoting.  To learn more about DWR 3.0, I recommend <a href="http://joel.barciausk.as/2008/10/06/speaking-of-dwr-3/">Joe Walker&#8217;s presentation</a> from The Ajax Experience last week.  He&#8217;s the lead developer for DWR.</p>
<p>Joel Barciauskas</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nexaweb.com/post/tutorial-hibernate-dwr-and-dojoe/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Box layout containers for Dojo</title>
		<link>http://blog.nexaweb.com/post/box-layout-containers-for-dojo/</link>
		<comments>http://blog.nexaweb.com/post/box-layout-containers-for-dojo/#comments</comments>
		<pubDate>Thu, 20 Mar 2008 17:57:45 +0000</pubDate>
		<dc:creator>mmikhaylov</dc:creator>
		
		<category><![CDATA[Ajax]]></category>

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

		<guid isPermaLink="false">http://dev.nexaweb.com/blogs/nexablog/?p=17</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://blog.nexaweb.com/post/box-layout-containers-for-dojo/";</script>What is it?
HorizontalBoxContainer and VerticalBoxContainer is a pair of layout managers that allow multiple children components to be laid out either vertically or horizontally. This is similar to BoxLayout from the Java Swing toolkit.

So, why do we need Box Containers?
Box layout is simple to understand and easy to use. It allows us to apply successful [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://blog.nexaweb.com/post/box-layout-containers-for-dojo/";</script><h2>What is it?</h2>
<p>HorizontalBoxContainer and VerticalBoxContainer is a pair of layout managers that allow multiple children components to be laid out either vertically or horizontally. This is similar to BoxLayout from the Java Swing toolkit.</p>
<p><span id="more-18"></span></p>
<h2>So, why do we need Box Containers?</h2>
<p>Box layout is simple to understand and easy to use. It allows us to apply successful “divide and conquer” tactic to User Interface design. The allotted container space can be arbitrarily divided, say, horizontally, then, in turn, each part can be divided vertically and so on, thus leading to potentially complex UI designs.</p>
<h2>How is that better than SplitContainer?</h2>
<p>xBoxContainer is not intended as a replacement for SplitContainer. It is useful when you want to divide the allotted space into three or more sub-areas. Children can also be set up to resize automatically when the amount of allotted space changes.</p>
<h2>Automatic sizing</h2>
<p>Both managers allow top/bottom and left/right alignment or &#8220;stretch&#8221; of children components. In addition, one or more children components can define a &#8221;flex&#8221; attribute to claim unallocated Container space. In case of many children with the &#8221;flex&#8221; attribute, the value determines the relative elasticity of each component. For example, if one child component has a flex of 2 and another has a flex of 1, the first child component will claim twice as much space to fill the bounds of the Container.</p>
<h2>Examples</h2>
<p>Here are links to some examples:</p>
<p><a href="/home/content/dojoe.widgets/test_VerticalBoxContainer.html">VerticalBoxContainer</a><br />
<a href="/home/content/dojoe.widgets/test_HorizontalBoxContainer.html">HorizontalBoxContainer</a></p>
<h2>Source</h2>
<p>Complete source code for both HorizontalBoxContainer and VerticalBoxContainer can be found here.</p>
<p><a href="/home/content/dojoe.widgets/BoxContainer.zip">BoxContainer.zip</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nexaweb.com/post/box-layout-containers-for-dojo/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Nexaweb Advance Getting Plenty of Attention</title>
		<link>http://blog.nexaweb.com/post/nexaweb-advance-getting-plenty-of-attention/</link>
		<comments>http://blog.nexaweb.com/post/nexaweb-advance-getting-plenty-of-attention/#comments</comments>
		<pubDate>Tue, 11 Mar 2008 14:04:56 +0000</pubDate>
		<dc:creator>Adam Markey</dc:creator>
		
		<category><![CDATA[Ajax]]></category>

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

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

		<guid isPermaLink="false">http://dev.nexaweb.com/blogs/nexablog/?p=24</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://blog.nexaweb.com/post/nexaweb-advance-getting-plenty-of-attention/";</script>Legacy applications are an even bigger headache than was originally thought.  The announcement of Nexaweb Advance has generated huge attention in the media and has caused a 400% jump in traffic to www.nexaweb.com over a normal 5 day period.  Check out some of the coverage below:

Nexaweb offers way to move apps from desktop [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://blog.nexaweb.com/post/nexaweb-advance-getting-plenty-of-attention/";</script><p>Legacy applications are an even bigger headache than was originally thought.  The announcement of Nexaweb Advance has generated huge attention in the media and has caused a 400% jump in traffic to <a href="http://www.nexaweb.com/">www.nexaweb.com</a> over a normal 5 day period.  Check out some of the coverage below:</p>
<p><span id="more-17"></span></p>
<p><a href="http://www.infoworld.com/archives/emailPrint.jsp?R=printThis&amp;A=/article/08/03/03/Nexaweb-modernizing-apps_1.html"><strong>Nexaweb offers way to move apps from desktop to Web</strong></a><br />
InfoWorld<br />
3/3/08<a href="http://www.infoworld.com/archives/emailPrint.jsp?R=printThis&amp;A=/article/08/03/03/Nexaweb-modernizing-apps_1.html"><br />
</a></p>
<p><strong><a href="http://weblog.infoworld.com/editor/archives/2008/03/endless_demand.html">Endless demand for richer experience</a><br />
</strong>InfoWorld<br />
3/3/08<a href="http://weblog.infoworld.com/editor/archives/2008/03/endless_demand.html"><br />
</a></p>
<p><a href="http://blogs.zdnet.com/Gardner/?p=2615"><strong>Nexaweb Advance takes RIA value to the enterprise application modernization imperative</strong></a><br />
ZDNet<br />
3/3/08<a href="http://blogs.zdnet.com/Gardner/?p=2615"><br />
</a></p>
<p><strong><a href="http://web2.sys-con.com/read/510235.htm">Nexaweb Advance Offers Customers Comprehensive Solution for Legacy Modernization and Enterprise Web 2.0 Adoption</a><br />
</strong>Ajax Magazine<a href="http://web2.sys-con.com/read/510235.htm"><br />
</a></p>
<p><a href="http://www.internetnews.com/dev-news/article.php/3731791/Nexaweb+Offers+Legacy+App+Migration+to+Java.htm"><strong>Nexaweb Offers Legacy App Migration to Java</strong></a><br />
Internet News<br />
3/3/08<a href="http://www.internetnews.com/dev-news/article.php/3731791/Nexaweb+Offers+Legacy+App+Migration+to+Java.htm"><br />
</a></p>
<p><strong><a href="http://www.itworldcanada.com/a/News/ca740005-4dda-44d5-b658-d2efe175df98.html">Nexaweb tool reverse-engineers legacy software</a><br />
</strong>ComputerWorld Canada<br />
3/4/08<a href="http://www.itworldcanada.com/a/News/ca740005-4dda-44d5-b658-d2efe175df98.html"><br />
</a></p>
<p><a href="http://www.itworldcanada.com/Pages/Docbase/ViewArticle.aspx?id=idgml-ca740005-4dda-44d5&amp;Portal=2e5351f3-4ab9-4c24-a496-6b265ffaa88c&amp;sub=1514864"><strong>Nexaweb tool reverse-engineers legacy software</strong></a><br />
Daily IT Wire Newsletter<br />
3/4/08<a href="http://www.itworldcanada.com/Pages/Docbase/ViewArticle.aspx?id=idgml-ca740005-4dda-44d5&amp;Portal=2e5351f3-4ab9-4c24-a496-6b265ffaa88c&amp;sub=1514864"><br />
</a></p>
<p><a href="http://searchsoa.techtarget.com/news/article/0,289142,sid26_gci1303588,00.html">UML tagged for SOA modernization of client/server apps</a><br />
<strong>SearchSOA.com</strong><br />
3/4/08<a href="http://searchsoa.techtarget.com/news/article/0,289142,sid26_gci1303588,00.html"><br />
</a></p>
<p><a href="http://74.52.83.92/index.php?option=com_content&amp;task=view&amp;id=104&amp;Itemid=1"><strong>Nexaweb Automates Web 2.0 Legacy Renewal</strong></a><br />
Computerwire<br />
3/5/08<a href="http://74.52.83.92/index.php?option=com_content&amp;task=view&amp;id=104&amp;Itemid=1"><br />
</a></p>
<p><strong><a href="http://www.thestandard.com/news/2008/03/10/nexaweb-tool-reverse-engineers-legacy-software">Nexaweb tool reverse-engineers legacy software</a><br />
</strong>The Industry Standard<br />
3/10/08<a href="http://www.thestandard.com/news/2008/03/10/nexaweb-tool-reverse-engineers-legacy-software"><br />
</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nexaweb.com/post/nexaweb-advance-getting-plenty-of-attention/feed/</wfw:commentRss>
		</item>
		<item>
		<title>New version of Studio - beta available</title>
		<link>http://blog.nexaweb.com/post/new-version-of-studio-beta-available/</link>
		<comments>http://blog.nexaweb.com/post/new-version-of-studio-beta-available/#comments</comments>
		<pubDate>Mon, 03 Mar 2008 14:54:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Ajax]]></category>

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

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

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

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

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

		<guid isPermaLink="false">http://dev.nexaweb.com/blogs/nexablog/?p=18</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://blog.nexaweb.com/post/new-version-of-studio-beta-available/";</script>We&#8217;ve been working hard on a new version of our development environment and we&#8217;re releasing a beta into the world.
Some highlights:

Data, data, data - all work flows that interact with data integration have been overhauled
Supporting users that have their own Eclipse environment and don&#8217;t want ours
Editing our &#8220;macros&#8221; - declarative modification blocks that can be [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://blog.nexaweb.com/post/new-version-of-studio-beta-available/";</script><p>We&#8217;ve been working hard on a new version of our development environment and we&#8217;re releasing a beta into the world.</p>
<p>Some highlights:</p>
<ol>
<li>Data, data, data - all work flows that interact with data integration have been overhauled</li>
<li>Supporting users that have their own Eclipse environment and don&#8217;t want ours</li>
<li>Editing our &#8220;macros&#8221; - declarative modification blocks that can be executed on the client</li>
<li>Supporting JSON visualization for data sources</li>
<li>Results from usability testing has been added in</li>
<li>and more&#8230;</li>
</ol>
<p>If you would like to take the beta for a spin, email our support department.</p>
<p>Rob Gagne</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nexaweb.com/post/new-version-of-studio-beta-available/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Using the Dojo XML Parser</title>
		<link>http://blog.nexaweb.com/post/using-the-xml-parser/</link>
		<comments>http://blog.nexaweb.com/post/using-the-xml-parser/#comments</comments>
		<pubDate>Tue, 05 Feb 2008 23:50:16 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Ajax]]></category>

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

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

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

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

		<guid isPermaLink="false">http://dev.nexaweb.com/blogs/nexablog/?p=11</guid>
		<description><![CDATA[<script type="text/javascript">dzone_url = "http://blog.nexaweb.com/post/using-the-xml-parser/";</script>I have spent the last few weeks building examples using XML on top of dojo, including an XML version of the mail application (you can see it here http://trac.dojotoolkit.org/ticket/5766).
1. Setting namespace
Since majority of the tags used are still html tag, it makes things much easier to set the default namespace to be html, in this [...]]]></description>
			<content:encoded><![CDATA[<script type="text/javascript">dzone_url = "http://blog.nexaweb.com/post/using-the-xml-parser/";</script><p>I have spent the last few weeks building examples using XML on top of dojo, including an XML version of the mail application (you can see it here <a href="http://trac.dojotoolkit.org/ticket/5766">http://trac.dojotoolkit.org/ticket/5766</a>).</p>
<p><span id="more-11"></span><strong>1. Setting namespace</strong></p>
<p>Since majority of the tags used are still html tag, it makes things much easier to set the default namespace to be html, in this way, there is no need to put html prefix for all the html tags. To do so, you just need to set like this:</p>
<p><code><em>&lt;ui xmlns:dijit=&#8221;dijit&#8221; xmlns:html=&#8221;html&#8221; xmlns=&#8221;html&#8221;&gt;<br />
&#8230;<br />
&lt;/ui&gt;</em><br />
</code></p>
<p><strong>2. Embedded JavaScript</strong></p>
<p>Using embedded JavaScript can be tricky as it will be underneath the xml parser JavaScript. The solution here is to add html prefix to avoid the confusion of the inner script tag.</p>
<p>Example:</p>
<p>Original html:</p>
<p><code><em>&lt;button dojoType=&#8221;dijit.form.Button&#8221; label=&#8221;Click me&#8221;&gt;<br />
&lt;script type=&#8221;dojo/method&#8221; event=&#8221;onClick&#8221;&gt;<br />
alert(&#8217;clicked&#8217;);<br />
&lt;/script&gt;<br />
&lt;/button&gt;</em></code></p>
<p>Converted xml:</p>
<p><code><em>&lt;ui xmlns:dijit=&#8221;dijit&#8221; xmlns=&#8221;html&#8221; xmlns:html=&#8221;html&#8221;&gt;<br />
&lt;dijit:form.Button label=&#8221;Click me&#8221;&gt;<br />
&lt;html:script type=&#8221;dojo/method&#8221; event=&#8221;onClick&#8221;&gt;<br />
alert(&#8217;clicked&#8217;);<br />
&lt;/html:script&gt;<br />
&lt;/dijit:form.Button&gt;<br />
&lt;/ui&gt;</em></code></p>
<p>It could also be solved by using CDATA as motioned in the following.</p>
<p><strong>3. Inner html</strong></p>
<p>Inner html may raise issue for the xml parser; there are two ways to resolve this issue.</p>
<p>a. Using CDATA to wrap the JavaScript code.<br />
b. Escaping &#8220;&lt;&#8221; and &#8220;&gt;&#8221; by &#8220;&amp;&lt;&#8221; and &#8220;&amp;&gt;&#8221;</p>
<p>Example:<br />
If we have a div defined as:</p>
<p><code></code><code><em>&lt;div id=&#8221;DivExample&#8221;&gt;<br />
Hello World<br />
&lt;/div&gt;</em></code></p>
<p>And an html code to change the div content :</p>
<p><code><em>&lt;button dojoType=&#8221;dijit.form.Button&#8221; label=&#8221;Click me&#8221;&gt;<br />
&lt;script type=&#8221;dojo/method&#8221; event=&#8221;onClick&#8221;&gt;<br />
document.getElementById(&#8217;DivExample&#8217;).innerHTML =  </em></code><code><em><br />
&#8220;&lt;p&gt;Hello&lt;/p&gt;&#8221;;<code><em><br />
</em></code>&lt;/script&gt;<br />
&lt;/button&gt;</em></code></p>
<p>Then you can use either one of the method below to replace the html code (but not both):</p>
<p>a: Using CDATA</p>
<p align="left"><code><em>&lt;ui xmlns:dijit=&#8221;dijit&#8221; xmlns:html=&#8221;html&#8221; xmlns=&#8221;html&#8221; &gt;<br />
&lt;dijit:form.Button label=&#8221;Click me&#8221;&gt;<br />
&lt;html:script type=&#8221;dojo/method&#8221; event=&#8221;onClick&#8221;&gt;<br />
&lt;![CDATA[<br />
document.getElementById('DivExample').innerHTML =   "&lt;p&gt;Hello&lt;/p&gt;";<br />
]]&gt;<br />
&lt;/html:script&gt;<br />
&lt;/dijit:form.Button&gt;<br />
&lt;/ui&gt;</em></code></p>
<p>b: Escaping &#8220;&lt;&#8221; &#8220;&gt;&#8221; by &#8220;&amp;&lt;&#8221; and &#8220;&amp;&gt;&#8221;</p>
<p><code><em>&lt;ui xmlns:dijit=&#8221;dijit&#8221; xmlns:html=&#8221;html&#8221; xmlns=&#8221;html&#8221; &gt;<br />
&lt;dijit:form.Button label=&#8221;Click me&#8221;&gt;<br />
&lt;html:script type=&#8221;dojo/method&#8221; event=&#8221;onClick&#8221;&gt;<br />
document.getElementById(&#8217;DivExample&#8217;).innerHTML =    </em></code><code><em><br />
&#8220;&lt;p&gt;Hello&lt;/p&gt;&#8221;;<br />
&lt;/html:script&gt;<br />
&lt;/dijit:form.Button&gt;<br />
&lt;/ui&gt;</em></code></p>
<p><strong>4. Valid attribute value</strong></p>
<p>For every attribute inside any node, you need to assign a value to it to be a valid xml node.</p>
<p>Example:</p>
<p><em>&lt;hr noshade size=&#8221;1&#8243;&gt;</em> is invalid here and should be converted to:<br />
<em>&lt;hr noshade=&#8221;true&#8221; size=&#8221;1&#8243;/&gt;.</em></p>
<p><strong>5. Table</strong></p>
<p>IE is kind of picky for parsing the table tag. To use xml parser, the table must contain &lt;tbody/&gt; in order to display properly in IE. Also colSpan/rowSpan can not be written in all lower case colspan/rowspan.</p>
<p>Example:<br />
<code></code></p>
<p><code><em>&lt;ui xmlns:dijit=&#8221;dijit&#8221; xmlns:html=&#8221;html&#8221; xmlns=&#8221;html&#8221;&gt;<br />
&lt;table border=&#8221;1px&#8221;&gt;<br />
&lt;tbody&gt;<br />
&lt;tr&gt;<br />
&lt;td&gt;<br />
&lt;label&gt;row 1 col 1&lt;/label&gt;<br />
&lt;/td&gt;<br />
&lt;td&gt;<br />
&lt;label&gt;row 1 col 2&lt;/label&gt;<br />
&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;tr&gt;<br />
&lt;td colSpan=&#8221;2&#8243; style=&#8221;text-align:center;&#8221;&gt;<br />
&lt;label&gt;row 2 col 1&lt;/label&gt;<br />
&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;/tbody&gt;<br />
&lt;/table&gt;<br />
&lt;/ui&gt;</em></code></p>
<p>Without &lt;tbody/&gt;, it will not display in IE, but will show in Firefox. And if using &#8220;colspan&#8221; instead of &#8220;colSpan&#8221;, it will not work either for IE yet Firefox works fine.</p>
<p>Jing Wang</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.nexaweb.com/post/using-the-xml-parser/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
