<?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>Simon Whatley &#187; CFML</title>
	<atom:link href="http://www.simonwhatley.co.uk/tag/cfml/feed" rel="self" type="application/rss+xml" />
	<link>http://www.simonwhatley.co.uk</link>
	<description>The opposite of every great idea is another great idea</description>
	<lastBuildDate>Wed, 02 Nov 2011 09:28:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>The Java Behind a ColdFusion Array and Structure</title>
		<link>http://www.simonwhatley.co.uk/the-java-behind-a-coldfusion-array-and-structure</link>
		<comments>http://www.simonwhatley.co.uk/the-java-behind-a-coldfusion-array-and-structure#comments</comments>
		<pubDate>Wed, 12 Mar 2008 09:10:48 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Adobe ColdFusion]]></category>
		<category><![CDATA[array]]></category>
		<category><![CDATA[Ben Nadel]]></category>
		<category><![CDATA[BlueDragon]]></category>
		<category><![CDATA[CFML]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[NewAtlanta]]></category>
		<category><![CDATA[Railo]]></category>
		<category><![CDATA[Railo Technologies]]></category>
		<category><![CDATA[struct]]></category>
		<category><![CDATA[structures]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=466</guid>
		<description><![CDATA[Following a conversation with a friend regarding how ColdFusion handles arrays and structures in 'the background', I was interested to find out what Java classes each were mapped to. This was a relatively simple case of using the functions <code>getClass()</code>, <code>getSuperClass()</code> and <code>getName()</code> to parse out the name of the Java classes.]]></description>
			<content:encoded><![CDATA[<p>Following a conversation with a friend regarding how ColdFusion handles arrays and structures in &#8216;the background&#8217;, I was interested to find out what Java classes each were mapped to. This was a relatively simple case of using the functions <code>getClass()</code>, <code>getSuperClass()</code> and <code>getName()</code> to parse out the name of the Java classes.</p>

<div class="wp_syntax"><div class="code"><pre class="cfm" style="font-family:monospace;"><span style="color: #333333;"><span style="color: #808080; background-color:#ffff80;">&lt;!--- Arrays (repeat up the hierarchy) ---&gt;</span></span>
<span style="color: #333333;"><span style="color: #800000;">&lt;cfdump</span> <span style="color: #0000ff;">var</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;#arrayNew(1).getClass().getName()#&quot;</span><span style="color: #800000;">&gt;</span></span>
<span style="color: #333333;"><span style="color: #800000;">&lt;cfdump</span> <span style="color: #0000ff;">var</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;#arrayNew(1).getClass().getSuperClass().getName()#&quot;</span><span style="color: #800000;">&gt;</span></span>
<span style="color: #333333;"><span style="color: #808080; background-color:#ffff80;">&lt;!--- Structures (repeat up the hierarchy) ---&gt;</span></span>
<span style="color: #333333;"><span style="color: #800000;">&lt;cfdump</span> <span style="color: #0000ff;">var</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;#structNew().getClass().getName()#&quot;</span><span style="color: #800000;">&gt;</span></span>
<span style="color: #333333;"><span style="color: #800000;">&lt;cfdump</span> <span style="color: #0000ff;">var</span><span style="color: #0000ff;">=</span><span style="color: #009900;">&quot;#structNew().getClass().getSuperClass().getName()#&quot;</span><span style="color: #800000;">&gt;</span></span></pre></div></div>

<p>What became immediately apparent was that both were handled differently. In the case of a ColdFusion array, the parent class was the <code>java.util.Vector</code>, which seemed obvious. The <code>Vector</code> class implements a growable array of objects. Like an array, it contains components that can be accessed using an integer index. However, the size of a <code>Vector</code> can grow or shrink as needed to accommodate adding and removing items after the <code>Vector</code> has been created.</p>
<p>ColdFusion structures, however, are handled entirely differently, with the parent class being a <code>coldfusion.runtime</code> class. In fact, as we can see below, the code to handle a ColdFusion structure is entirely written for ColdFusion until the root class of <code>java.lang.Object</code>. Clearly ColdFusion does some complex wizardry to handle the complex nature of structues (associative arrays).</p>
<p>The class hierarchy for an Adobe ColdFusion array:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">java.lang.Object
	java.util.AbstractCollection
		java.util.AbstractList
			java.util.Vector
				coldfusion.runtime.Array</pre></div></div>

<p>The class hierarchy for an Adobe ColdFusion structure:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">java.lang.Object
	coldfusion.util.CaseInsensitiveMap
		coldfusion.util.FastHashtable
			coldfusion.runtime.Struct</pre></div></div>

<p>Being an inquisitive person, I applied the same code to <a href="http://www.railo-technologies.com/en/index.cfm" title="Railo Technologies CFML Server" target="_blank" rel="nofollow">Railo</a> and <a href="http://www.newatlanta.com/products/bluedragon/index.cfm" title="New Atlanta BlueDragon CFML Server" target="_blank" rel="nofollow">BlueDragon</a>, with equally interesting results.</p>
<p>The Java class hierarchy behind a Railo array:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">java.lang.Object
	railo.runtime.type.ArrayImpl</pre></div></div>

<p>The Java class hierarchy behind a Railo structure:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">java.lang.Object
	railo.runtime.type.StructImpl</pre></div></div>

<p>The Java class hierarchy behind a BlueDragon array:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">java.lang.Object
	com.naryx.tagfusion.cfm.engine.cfData
		com.naryx.tagfusion.cfm.engine.cfJavaObjectData
			com.naryx.tagfusion.cfm.engine.cfArrayData
				com.naryx.tagfusion.cfm.engine.cfArrayListData</pre></div></div>

<p>The Java class hierarchy behind a BlueDragon structure:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">java.lang.Object
	com.naryx.tagfusion.cfm.engine.cfData
		com.naryx.tagfusion.cfm.engine.cfJavaObjectData
			com.naryx.tagfusion.cfm.engine.cfStructData</pre></div></div>

<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<p>Adendum: Ben Nadel has a good little post on <a href="http://www.bennadel.com/blog/380-ColdFusion-Data-Types-From-Different-Sources-And-How-ColdFusion-Sees-Them-.htm" title="Data Types from Different Sources and How ColdFusion Sees Them" target="_blank" rel="nofollow">ColdFusion Data Types from Different Sources and How ColdFusion Sees Them</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/the-java-behind-a-coldfusion-array-and-structure/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Atlanta Open-Sources BlueDragon</title>
		<link>http://www.simonwhatley.co.uk/new-atlanta-open-sources-bluedragon</link>
		<comments>http://www.simonwhatley.co.uk/new-atlanta-open-sources-bluedragon#comments</comments>
		<pubDate>Tue, 11 Mar 2008 09:14:51 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Strategy]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Adobe ColdFusion]]></category>
		<category><![CDATA[BlueDragon]]></category>
		<category><![CDATA[CFML]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[ColdFusion server technology]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[London]]></category>
		<category><![CDATA[New Atlanta]]></category>
		<category><![CDATA[server technology]]></category>
		<category><![CDATA[technology conference]]></category>
		<category><![CDATA[Terrence Ryan]]></category>
		<category><![CDATA[united kingdom]]></category>
		<category><![CDATA[web application server]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=468</guid>
		<description><![CDATA[New Atlanta is announcing today, at CFUnited Europe - a ColdFusion Markup Language (CFML) technology conference in London, U.K.- that they will be creating and distributing a free open-source Java Platform, Enterprise Edition (Java EE) version of BlueDragon, their ColdFusion-compatible web application server.]]></description>
			<content:encoded><![CDATA[<p>New Atlanta is announcing today, at <a href="http://europe.cfunited.com" title="CFUnited Europe" target="_blank" rel="nofollow">CFUnited Europe</a>, a ColdFusion technology conference in London, U.K., that they will be creating and distributing a free open-source Java Platform, Enterprise Edition (Java <acronym title="Enterprise Edition">EE</acronym>) version of BlueDragon, their ColdFusion-compatible web application server.</p>
<p>You can read the full release here:</p>
<p><a href="http://www.newatlanta.com/products/bluedragon/open_source/faq.cfm" title="New Atlanta BlueDragon" target="_blank" rel="nofollow">http://www.newatlanta.com/products/bluedragon/open_source/faq.cfm</a></p>
<p>Will Adobe follow suit with their <a href="http://www.adobe.com/products/coldfusion" title="ColdFusion" target="_blank" rel="nofollow">ColdFusion</a> server technology? They have done similar things with the <a href="http://opensource.adobe.com/wiki/display/flexsdk/Flex+SDK" title="Flex" target="_blank" rel="nofollow>Flex SDK</a> and <a href="http://opensource.adobe.com/wiki/display/blazeds/BlazeDS" title="BlazeDS" target="_blank" rel="nofollow">BlazeDS</a>, so it stands to reason that ColdFusion could follow the same route.</p>
<p>Terrence Ryan sees things differently, however, and has a good article here:</p>
<p><a href="http://www.numtopia.com/terry/blog/archives/2008/03/yawn_blue_dragon_goes_open_source.cfm" title="Yawn, BlueDragon Goes Open Source" target="_blank" rel="nofollow">Yawn, BlueDragon Goes Open Source</a>.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/new-atlanta-open-sources-bluedragon/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ColdFusion (CFML) Engines</title>
		<link>http://www.simonwhatley.co.uk/coldfusion-cfml-engines</link>
		<comments>http://www.simonwhatley.co.uk/coldfusion-cfml-engines#comments</comments>
		<pubDate>Mon, 27 Mar 2006 22:02:25 +0000</pubDate>
		<dc:creator>Simon</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[Adobe ColdFusion]]></category>
		<category><![CDATA[app server]]></category>
		<category><![CDATA[Application Servers]]></category>
		<category><![CDATA[BlueDragon]]></category>
		<category><![CDATA[built-in web server]]></category>
		<category><![CDATA[CFML]]></category>
		<category><![CDATA[ColdFusion]]></category>
		<category><![CDATA[ColdFusion Markup Language]]></category>
		<category><![CDATA[Coral Web Builder]]></category>
		<category><![CDATA[Digital Lattice Orange]]></category>
		<category><![CDATA[engines]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[IgniteFusion]]></category>
		<category><![CDATA[J2EE]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JSP]]></category>
		<category><![CDATA[less closed technology]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[New Atlanta]]></category>
		<category><![CDATA[operating system]]></category>
		<category><![CDATA[Railo]]></category>
		<category><![CDATA[Scripting Engines]]></category>
		<category><![CDATA[Smith Project]]></category>
		<category><![CDATA[Web Builder]]></category>
		<category><![CDATA[web development platforms]]></category>
		<category><![CDATA[Web Server]]></category>
		<category><![CDATA[Web Servers]]></category>
		<category><![CDATA[Web technology industry standards]]></category>

		<guid isPermaLink="false">http://www.simonwhatley.co.uk/?p=64</guid>
		<description><![CDATA[CFML is the name of the scripting language used by ColdFusion and several alternative server environments. It stands for ColdFusion Markup Language and is similar to HTML in appearance in that it uses tags. CFML is the code that powers ColdFusion, a program available from Adobe (formerly Macromedia), as well as such engines as BlueDragon, IgniteFusion, Railo, Coral Web Builder, and other web development platforms.]]></description>
			<content:encoded><![CDATA[<p>CFML is the name of the scripting language used by ColdFusion and several alternative server environments. It stands for ColdFusion Markup Language and is similar to HTML in appearance in that it uses tags. CFML is the code that powers ColdFusion, a program available from Adobe (formerly Macromedia), as well as such engines as BlueDragon, IgniteFusion, Railo, Coral Web Builder, DigitalLattice Orange and other web development platforms.</p>
<p>ColdFusion originated as proprietary technology based on Web technology industry standards. However, it is becoming a less closed technology through the availability of competing products. In fact, one could now make the argument that ColdFusion is even less platform bound than say raw J2EE or .NET, simply because ColdFusion will run on top of a .NET app server (New Atlanta), or on top of any J2EE app server (Websphere, JRun, Tomcat, etc.) In theory, you could move a ColdFusion app unchanged from a J2EE app server to a .NET app server.</p>
<p>Currently, alternative server platforms generally support Coldfusion MX 6.1 functionality, with minor changes or feature enhancements.</p>
<p>I have listed some of the alternatives in order of maturity/populrity.  However, I will leave it up to you to decide which one is the best and easiest to implement.  Please tell me your experiences.</p>
<h2>BlueDragon</h2>
<p>The BlueDragon Server family of Java-based servers (Server and Server JX) enables the stand-alone deployment of CFML. Both BlueDragon Server versions contain a built-in web server for development and testing, and each integrates with Microsoft IIS, Sun ONE/Netscape/iPlanet (JX only), and Apache web servers for deployment.</p>
<p>BlueDragon offers flexibility for the deployment of ColdFusion Markup Language (CFML) pages with native technology platform integration on the operating system, web server and database of your choice.</p>
<p>Visit the New Atlanta website at <a target="_blank" href="http://www.newatlanta.com/products/bluedragon/index.cfm">http://www.newatlanta.com</a> to download the latest version of BlueDragon.</p>
<h2>Railo</h2>
<p>Railo is a ColdFusion Compiler for translating and executing of ColdFusion based websites. The Compiler translates the ColdFusion code into Java classes which can be executed on a Java server. Railo also comes with a runtime engine, which contains all necessary libraries for the translated code. Railo automatically detects wether to translate a ColdFusion file or when to use the runtime engine. You can compare Railo at best with <acronym title="Java Server Pages">JSP</acronym> interfaces. <acronym title="Java Server Pages">JSP</acronym> uses an other syntax but the main functionality is almost the same. Because Railo implements most of the <acronym title="Java Server Pages">JSP</acronym> interfaces, it is highly compatible to <acronym title="Java Server Pages">JSP</acronym> interfaces.</p>
<p>Visit the Railo website at <a target="_blank" href="http://www.railo.ch/en/index.cfm">http://www.railo.ch</a></p>
<h2>IgniteFusion</h2>
<p>IgniteFusion is a ColdFusion compatible script engine that runs ColdFusion scripts. In addition to Coldfusion <acronym title="ColdFusion Markup Language">CFML</acronym> compatibility IgniteFusion has functionality that extends Coldfusion.  Although in Beta, it is approaching release.</p>
<p>Visit the IgniteFusion website at <a target="_blank" href="http://www.ignitefusion.com/">http://www.ignitefusion.com</a> to download the scripting engine.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-6475233631580417";
/* 468x60 Basic */
google_ad_slot = "7117418273";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.simonwhatley.co.uk/coldfusion-cfml-engines/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

