Requirements    
Prerequisite knowledge
Required products
User level
Although an existing knowledge of ColdFusion would help, this article does not require you to have ColdFusion skills. A general understanding of the web technologies is helpful for getting the most out of this article.
Adobe ColdFusion Enterprise Edition (2016 release) (Download trial)
All

 

Adobe ColdFusion 10, the next major, feature rich version of ColdFusion focuses on ease of use, productivity, and security.
This article introduces what is available in ColdFusion 10. Because it is not possible to cover every feature in depth in a single article, I recommend referring other feature-specific articles on Adobe Developer Connection or reading the ColdFusion 10 documentation for more information about individual features.
 

Features pillars of ColdFusion 10

The entire feature set in ColdFusion 10 can be categorized under three pillars. Each pillar is a focus area for ColdFusion 10. This article describes each pillar along with a discussion of the features within each pillar.
Here are the three feature pillars of ColdFusion 10.
  1. Embrace futuristic technologies
  2. Deploy enterprise-ready applications
  3. Build applications quickly
 

Embrace futuristic technologies

Using ColdFusion 10, you can embrace new technologies that ColdFusion 10 features, without having any deep understanding of the modern technologies.
HTML5 is no longer a "buzzword" in the web world. It is emerging as a standard that is used on most modern day websites. ColdFusion 10 lets you adopt HTML5 through its feature set with minimal or zero knowledge of HTML5.
 
HTML5 WebSockets
ColdFusion 10 lets you push data from the server to the client through the built-in support for the WebSocket protocol on the server. With this feature, it is now possible to build true real-time web applications that work with dynamic data. ColdFusion 10 also gives you a messaging infrastructure built on top of the raw WebSockets that let you easily publish or subscribe to one or more channels.
Here's a quick look at the few lines of code required:
First, simply define channel(s) in your application.cfc file, as follows:
 
component { this.name="wsdemoapp"; this.wschannels=[{name="wsdemo"}]; }
Next, use the new ColdFusion CFWEBSOCKET tag to create the WebSocket and establish a WebSocket connection with ColdFusion.
 
<cfwebsocket name="mycfwebsocketobject" onmessage="mymessagehandler" subscribeto="wsdemo" >
Then, specify within the Onmessage attribute the JavaScript message handler that ColdFusion should invoke when a message is published on this channel. The subscribeto attribute is a comma-separated list of channels that the websocket subscribes to.
Finally, use the WSPublish function to publish a message on a channel from the server, as follows:
 
WSPublish("wsdemo","Welcome to wsdemo channel");
 
HTML5 charting
ColdFusion 10 now supports interactive client-side charts based on Canvas, SVG, or Flash. The functionatilty is supported through the existing ColdFusion CFCHART tag. There is support for a wide array of different client-side charts. What's more, you can also customize the style of the charts using JSON objects.
Here's a code snippet that shows results in an HTML5 chart by fetching values from a query:
 
<cfchart format="html" type="bar" height="700" width="500" query="sales" itemcolumn="year" title="Revenue" xaxistitle="Years" yaxistitle="Revenue (in millions)"> <cfchartseries query="sales" valueColumn="sales_us" serieslabel="US"> <cfchartseries query="sales" valueColumn="sales_emea" serieslabel="EMEA"> <cfchartseries type="bar" query="sales" valueColumn="sales_apac" serieslabel="APAC"> <cfchartseries type="line" query="sales" valueColumn="profit" label="profit"> </cfchart>
HTML5 video player
ColdFusion 10 provides a built-in HTML5 video player through the CFMEDIAPLAYER tag.
The exisiting Flash video player that was available with the CFMEDIAPLAYER tag has also been revamped to provide better functionality. The look and feel of the HTML5 and the Flash video player is exactly the same. The JavaScript APIs for both the players is the same. There is also fall-back support between the Flash and HTML5 versions, so that the end user experience continues to be the same across all devices/browsers.
 
<cfmediaplayer name="player_html" source="./videos/test.mp4" type="html" width=800 height=500 align="center" title="HTML Playback" >
Support for RESTful Web Services
RESTful Web Services are becoming increasingly popular mostly because of their simplicity and ease of use. You can access RESTful Web Services easily over HTTP/HTTPS. ColdFusion 10 provides support to easily expose your ColdFusion Component (CFC) as a RESTful Web Service through a few attributes you specify within your CFC.
First, specify the rest attribute as true within the CFC, along with the restpath attribute, which specifies the path of the service accessed over HTTP. On every function in the CFC it is possible to associate the HTTP method that should invoke the corresponding function.
Revamped Enterprise Web Services
ColdFusion 10 now supports Web Services through a revamped AXIS 2 engine. As a result of this, you can use WSDL 2.0, document literal wrapped style and SOAP1.2 protocol to access and publish your Web Service. Specific care has been taken to ensure the new functionality is completely backward compatible.
 

Deploy enterprise-ready applications

This pillar focuses on features that can make your web applications enterprise-class application.
Security enhancements
Security is a key focus area for ColdFusion 10. By upgrading and using the features of ColdFusion 10, you can boost the security of your applications. ColdFusion 10 has built-in functions that you can use to prevent against XSS (Cross-site Scripting) and CSRF (Cross Site Request Forgery) attacks. You can now make session cookies HTTPOnly, secure, and apply only to a particular domain. The team has improved session management and added functionality to invalidate and rotate a session. It is also possible to select the option to install ColdFusion with a secure profile that secures the server with default security settings.
Tomcat integration
ColdFusion 10 now comes integrated with Tomcat and replaces JRun, which was bundled with previous releases of ColdFusion. Since there is active development happening on Tomcat, ColdFusion users can now stay up to date with the Java Platform Enterprise Edition (JEE) technology improvements. There is no difference in the installation procedures and the team has ensured a smooth process for migrating from JRun to Tomcat.
Enhanced caching
You can specify cache settings at an application level in ColdFusion 10. It is now possible to create dynamic cache regions. Cache regions are essentially buckets that can hold cached data. The built-in functions for caching have been modified to now take in a cache region as well. Also, it is now possible to run the cache server as a separate process outside of the ColdFusion JVM.
Hot fix installer and notification
ColdFusion administrator will now list all the updates that are available from Adobe. You will no longer have to follow manual set of instructions to install hot fixes from Adobe. ColdFusion administrator will display available hot fixes. You can download the update and install the hot fix using the hot fix installer. It is also possible to uninstall the hot fix to revert to a state prior to the hot fix installation. You can specify various settings in the administrator on how you would like to be notified when there an update is available.
Improved and revamped scheduler
We have replaced the scheduler engine powering the schedule task functionality with a much more powerful engine in ColdFusion 10. As a result of this, there are a range of new functionalities available in ColdFusion 10. You can group related tasks together. It is possible to create tasks that are applicable to a specific application. You can attach listeners to tasks, which get invoked when the corresponding event gets triggered for the task. It is possible to chain tasks one after the other. You can use CRON syntax to schedule tasks. Task management becomes easier as you can now specify priorities for the tasks, as well as handle errors when working with scheduled tasks.
Microsoft Exchange Server improvements
ColdFusion 10 now supports integration with Microsoft Exchange Server 2010. ColdFusion integrates with Exchange Server using the new Exchange Web Services (EWS). There are also additional functionalities provided around folder operations, user availability, and conversation operations.
Search improvements with Apache Solr
Apache Solr replaces Verity in ColdFusion 10. We have made database indexing easier and more efficient, especially with support for the Data Import Handler in ColdFusion 10. We also added support to pass dynamic custom fields, which allow you flexibility in your search queries.
Microsoft Office file interoperability improvements
ColdFusion 10 now supports office 2010 file formats to its exisiting functionality associated with Microsoft Office documents.
Database enhancements
ColdFusion 10 now supports the new JDBC datatypes such as NCHAR, NVARCHAR, LONGNVARCHAR, NCLOB, SQLXML and more. Database connections are often shared among clients, and sometimes some clients tend to use more resources than others, which can lead to starvation-like situations. In ColdFusion 10, database connections store client information on each connection and as soon as connection returns to pool, it is reset. There is now support in the cfquery , cfupdate , cfinsert, and cfstoredproc tag to provide a struct that contains database-specific client information. You can handle database-specific exceptions due to the introduction of the new attribute database in the cfcatch tag.
Server Monitor and Server Manager enhancements
The Server Monitor has a new section for caching. The cache regions of server list all the cache regions of the server. For each cache region, you can see the hit count, miss count, and number of objects in the cache region. When you select a specific cache region, you can now see some more information about the cache region such as Cache hit ratio, Cache size, Avg get time, and so forth. The server monitor can now also track REST requests that occur over HTTP.
Cache settings are new to server manager. You can now define these settings right within the server manager.
The new server settings of ColdFusion 10 have been added to the server manager. Similarly mail settings around keystore and event handling around scheduled tasks has now been added to the server manager.
 

Build applications quickly

The last feature pillar of ColdFusion 10 focuses on features that help you boost developer productivity.
Enhanced Java integration
We have enhanced Java integration with ColdFusion to provide a much tighter integration of ColdFusion with Java.
You can now specify Java-specific settings in the application CFC. It is now possible for you to specify custom paths from which JAR files or Java class files can be picked up from. It is also possible to enable dynamic loading of these JAR and class files where the new files will be picked up without having to restart the server.
You can also now create Java dynamic proxies for ColdFusion components (CFCs) that will let CFCs be treated as Java objects when they are passed to the Java classes.
We have revamped CFCProxy , a utility class to invoke CFCs from Java classes, to provide a much better performance when invoking CFCs from Java.
Object Relational Mapping (ORM) enhancements
The primary feature in this space is the abilty to full text search the ORM entities. The full text search functionlity is powered by the underlying Lucene Search engine. It is possible to configure an offline indexing of ORM entities or an automated one, where the entity is indexed as soon as it is modified or inserted.
Along with the full text search, there are enhancements around support for nested super class, stored procedure support, and HQL logging when using the ORM.
Virtual file system enhancements
Additional support has been added to the virtual file system support in ColdFusion 10. You can now access ZIP, JAR, FTP and S3 file systems as virtual file systems in ColdFusion. In addition to this, you can use an application-specific InMemory file system. It is also possible to restrict the size of the InMemory file system.
Language enhancements
Here's the list of the major enhancements to the language in ColdFusion 10.
  • Use the For-In construct to easily iterate over Query and Lists in the CFScript tag.
  • Specify the content you want to write into a file within the body of the CFFILE tag without having to specify the content through an attribute.
  • Use the CallStack functions, which trace how functions are invoked, to reach the line of code that has the CallStack function.
  • Fetch the appliction settings of an application programatically using the ApplicationMetaDataGet() function.
  • Use the new implicit constructor for a CFC to set values to the properties within the CFC, as follows: emp=new employee(firstName="Tom", lastName="Nash");.
  • CFML now supports closures that let you define and pass functions on the fly.
  • There is now a way to invoke a CFC function in CFScript using the invoke function.
  • The enhanced CFScript tag supports now provide the ability to use more tags in the CFScript tag.
Flex and AIR Lazy Loading
Earlier, when using ORM entities on the server with an Adobe ® Flex or Adobe ® AIR client, you could fetch no related entity of an ORM entity, or fetch all related entities of an ORM entity. Consider a set of department entities that have a set of employee entities that belong to each department. When building a client application for this to display all the departments, and list all the employees of each selected department, you would not want to fetch all the departments and employees in one shot. It would be preferable to list all the departments, letting the end user select a particular department; which would then cause the application to fetch the related employee entities of the department from the server. The Lazy Loading feature in ColdFusion 10 lets you do exactly this when working with ORM and the Flex/AIR client, without the application developer having to worry about supporting Lazy Loading across the client and server.
 

Where to go from here

This article provides a quick introduction to the vast feature set of ColdFusion 10. You can also watch the video What's new in Coldfusion 10. Refer to other articles on Adobe Developer Connection that focus on specific features of ColdFusion 10 for a deep dive into the new features and how to use them. You can visit the online ColdFusion 10 documentation to get more information. There are various blog posts on the Adobe ColdFusion blog that you can read to get more information.