ColdFusion / Railo
the original RAD platform revisited

A lightning talk presented to BCS Jersey:

Who the heck is this guy?

Rob Dudley - rcwd.me

Local "Full Stack" Web Developer

You may recognise him from such companies as:

ColdFusion is:

Railo is:

Syntactically?

Your first glance at CFML


		<cfset myVar="Hello BCS Jersey!"> 
		<cfoutput>#myVar#</cfoutput>
	

Don't worry, it does get better…

Your first glance at CFScript


		myVar = " BCS Jersey";
		writeOutput('Hello ' & myVar);
	

Told you!

A brief history

The dark times

  • 1995: Allaire Cold Fusion 1
  • 1996: Allaire Cold Fusion 2
  • 1997: Allaire Cold Fusion 3
  • 1998: Allaire ColdFusion 4
    (no more space!)
  • 2001: Macromedia ColdFusion 5
    (First release by Macromedia)

A brief history

The middle ages

  • 2002: Macromedia ColdFusion MX 6
    (Complete Java Rewrite)
  • 2004: Railo version 0
  • 2005: Macromedia ColdFusion MX 7
  • 2006: Railo version 1

A brief history

The golden years!

  • 2007: Adobe ColdFusion 8
  • 2007: Railo version 2
  • 2008: Railo version 3
  • 2009: Adobe ColdFusion 9
    (current production release)
  • 2009: Railo version 3.1
    (Railo open sourced)
  • 2010: Railo 3.2
  • 2011: Railo 3.3

A brief history

The future's bright…

What does it do?

In addition to the standard programming features:

What does it do?

AJAX Made Easy

Why should we care?

ColdFusion as an enterprise hub

ColdFusion in a Microsoft world

A ton of tools to make working with Microsoft technology & platforms simple(r)

Authenticating against a Windows Domain is one line of code:


	<cfntauthenticate username="#theusername#" password="#thepassword#" 
	domain="#thedomain#" result="authresult" />	
	

(wrapping permitting of course)

ColdFusion in a Microsoft world

<cfsharepoint /> provide a range of Sharepoint list manipulation features

<cfsharepoint action="getlistcollection" login="#login#" name="result"/>
<cfsharepoint action="deletelist" login="#login#" name="result1" params="#{listname="mycustomlist"}#"/> 
<cfsharepoint action="addlist" login="#login#"  name="result1" params="#{listname="mycustomlist", description="Adding a list via cfsharepoint", templateid=100}#"/> 
<cfsharepoint action="addview" login="#login#" name="result" params="#{listName="mycustomlist",viewname="myview3",viewFields="#viewFields#", query="#query#",rowlimit="#rowlimit#",type="grid",makeViewDefault=false}#"/> 

And you can embed CF apps via the Page Viewer Web Part

ColdFusion in a Microsoft world

Extensive API for working natively with Excel Spreadsheets

theSheet = SpreadsheetNew("CourseData");
theSecondSheet = SpreadsheetNew("CentersData"); //Populate each object with a query
SpreadsheetAddRows(theSheet,courses);
SpreadsheetAddRows(theSecondSheet,centers);
SpreadSheetWrite(theSheet, "c:\tmp\mysheet.xls");

Also

ColdFusion in a Microsoft world

Support for Exchange integration via web services:

<cfexchangeconnection action="open" connection="myExchangeConnection" server="#serverName#" username="#username#" password="#password#" /> 

<cfexchangecontact action="get" name="myContacts" connection="myExchangeConnection" /> 

<cfexchangecalendar action="get" connection="myExchangeConnection" name="managerCalendar"> 
	<cfexchangefilter name="startTime" from="12/1/2007" to="12/15/2007"/> 
	<cfexchangefilter name="subject" value="Evaluation-Open"/> 
</cfexchangecalendar>

<cfexchangeconnection action="close" connection="myExchangeConnection" />

ColdFusion in a Microsoft world

Access local .Net Assemblies as CF Objects!

<cfobject type=".NET" name="proc" class="System.Diagnostics.Process">
<cfset processes = proc.GetProcesses()>
<cfdump var="#processes#">

and access Java classes in a similar way

<cfobject type="Java" class="MyClass" name="myObj">
<cfset ret=myObj.init(arg1, arg2)>

This gives you access to the full Java / .NET standard class libraries!

ColdFusion & Web Services

SOAP Consumption powered by Axis

<cfinvoke webservice="http://www.xmethods.net/sd/2001/TemperatureService.wsdl" method="getTemp" returnvariable="aTemp">
	<cfinvokeargument name="zipcode" value="55987"/> 
</cfinvoke> 
<cfoutput>The temperature at zip code 55987 is #aTemp#</cfoutput>

Extensive tools for publishing native CF classes as SOAP services

<cfcomponent>
	<cffunction name="echoString" returnType="string" output="no" 
	access="remote">
		<cfargument name="input" type="string">         
	    <cfreturn #arguments.input#>     
    </cffunction> 
</cfcomponent>

ColdFusion & Web Services

RESTful Web Services

Developer Tools

IDEs

  • ColdFusion Builder
    • Commercial IDE
    • Extensions Library
    • MXUnit test support
  • CFEclipse
    • Open source IDE
    • ANT Support
    • MXUnit test support

Both based on Eclipse and provide line debugging, refactoring, database & file system access via RDS & much more

CFML / CFScript supported by a range of lightweight editors - Sublime Text II, VIM, Notepad++, etc.

Developer Tools

Frameworks

A wide range of development frameworks & tools available:

Most frameworks are open source

The CF Community

  • Wide range of blogs / resources
  • Active on Twitter
  • Very approachable / helpful group of people
  • Like beer!

Any questions?

bcscf.rcwd.me

/