Entries Tagged as 'Mobile'

Following two articles on CFMobile are now live on Adobe DevNet site - 

  1. Build your first mobile app with ColdFusion 11
  2. Overview: Mobile application development with ColdFusion 11

Check them out if you want to know how to develop mobile applications using ColdFusion 11 and ColdFusion Builder 3.

-Ram Kulkarni


We are excited to announce that the next versions of ColdFusion Server and ColdFusion Builder are now live and available

Thanks to everyone from the ColdFusion community who has contributed to this release in terms of constant feedback and support. 

Here are some of the highlights of ColdFusion 11 and ColdFusion Builder 3:

Mobile Application Development Workflow

ColdFusion 11 along with ColdFusion Builder 3 gives you a unique end-to-end workflow for mobile application development addressing the challenges associated with building, testing, debugging and deploying enterprise class mobile applications - both web based as well as installed mobile apps.

Language Enhancements

While there are a range of enhancements made to the language, some of the features that can be called out are full CFSCRIPT support, support for Member Functions and JSON enhancements.

PDF Functionality

ColdFusion 11 now leverages a new engine for HTML to PDF conversion that does an almost perfect job of converting most HTML/CSS to its corresponding PDFs pixel-to-pixel. Along with the new engine, CFPDF has additional functionality to support digital signatures and archiving PDFs. 


ColdFusion 11 has a built-in mechanism to prevent access of Administrator or its components from external access. ColdFusion 11 has additional built-in functions to prevent XSS, thus allowing  concurrent logins through CFLOGIN. ColdFusion also supports mail encryption through CFMAIL.

For a more detailed overview of what’s new in ColdFusion 11, take a look at this link from the documentation.

ColdFusion Builder 3 bundled with ColdFusion 11

ColdFusion 11 Standard and ColdFusion 11 Enterprise is bundled with copy (ies) of ColdFusion Builder 3. With one copy of ColdFusion Standard, you get one license of ColdFusion Builder 3 and with one copy of ColdFusion Enterprise, you get three copies of ColdFusion Builder 3.

Java 7 Update 55

As you may be aware, Java has come up with an update (Java 7 Update 55) with critical security fixes. This update was released on 15th of April. ColdFusion 11, ColdFusion 10 and ColdFusion 9 have already been certified on Java 7 Update 55.

For ColdFusion 11, all attempts were made to include this update as part of the final CF11 installers though this was very close to our launch date. We ran into an issue with the installer with a third-party platform used by ColdFusion, on Java 7 Update 55. We have escalated this issue with the vendor and are working with them for a fix. For now, the Java version bundled with the final installers of ColdFusion 11 is Java 7 Update 51.

But we fully understand the importance of Java 7 Update 55 and want to assure the ColdFusion community that we are committed to fixing this issue. We are also planning to replace all the ColdFusion 11 installers to include Java 7 Update 55 as soon as we are able to obtain a fix from the vendor.

However, as always you can use Java 7 Update 55 with ColdFusion 11, ColdFusion 10 and ColdFusion 9 by pointing to an external Java location.

Linux support for the new PDF Engine

The Linux support for the new PDF engine in ColdFusion 11 will be available through an update within the next few weeks.

Availability of installers for CF10 and CFB 2.0.1

ColdFusion 10 installers and ColdFusion Builder 2.0.1 installers will only be available for download on adobe.com for a limited time – till the 14th of May, 2014. If you need these installers for later use, then please download them before the 14th of May, 2014.

This post is reproduced from my post at my personal blog ramkulkarni.com.

In my previous blog articles I had explained how to create CFMobile applications using JQuery, Bootstrap/JQueryMobile. Here are links to sample (CFMobileExpenseTracker) applications using the two UI frameworks -

I wanted to create the same application using AngularJS. It had been on my 'to learn' list for sometime now. So I spent the last weekend learning it. If you already know concepts of MVC and Dependency Injection, then understanding AngularJS is not difficult. The well documented tutorials also helped.

I decided to re-write CFMobileExpenseTracker using AngularJS and JQueryMobile. Since AngularJS provides very easy way to manipulate DOM, you really don't need JQuery. But I had to include it in the application anyway because JQueryMobile depends on it. I also used JQuery for basic event handling.

Earlier in my application I had used client side custom tag (expenseList.cfm) to display expense items by calling JQuery APIs to modify DOM and update UI. I could get rid of this custom tag entirely after using AngularJS, because of templating features  and automatic synchronisation between model and view provided by Angular JS.

Here are the screen shots of the application -


Though I said that I re-wrote the application, it was not a complete re-write. I could reuse CFCs and made small modifications to index_include.cfm. I added a new JS file (angular_app.js) to crate AngularJS application and controllers -


This post is reproduced from my post at my personal blog ramkulkarni.com.

I have seen some confusion when it comes to using invokeCFClientFunction. I have been asked this question a few times, more recently on LinkedIn, so I thought explaining it in a blog post might be a good idea.

If you don't know already, ColdFusion Splendor has added support for client side CFML (<cfclient>) and this code is translated to JavaScript.  You can call JavaScript functions from cfclient and vice versa.

cfclient also makes calling asynchronous functions of PhoneGap easy by providing synchronous access to them. All device APIs are asynchronous in nature, but in cfclient block you call then as synchronous functions and ColdFusion translates them to asynchronous PhoneGap functions. All function starting with 'cfclient.', e.g. cfclient.camera.getPicture(), are asynchronous. In addition to device APIs, data access function, executeQuery and tag, cfquery, are also asynchronous in cfclient.

When you call asynchronous functions in cfclient, ColdFusion takes care of chaining callback functions - any code following an asynchronous function goes in the success callback function. But if you call asynchronous cfclient function form JavaScript code block, then ColdFusion compiler does not touch it. Note that if a UDF in cfclient block calls any asynchronous function (e.g. cfquery or any device APIs) then that function also becomes asynchronous.

Let's see an example. In the following code, I have a UDF in cfclient block, createDatabase. It does not need any argument, but let's say it takes one argument, arg1. This function calls queryExecute function, which is an asynchronous function - so createDatabase function also becomes asynchronous. If you call it from JavaScript and have some JS code to be executed only after database is created, then calling createDatabase function directly from JavaScript is not going to work as expected -


I presented an e-seminar, Everything about Mobile Application Development, on 10th April. Some of the attendees had asked me to share the presentation and source code of the application. So here are the links

I had added a few useful links at the end of the presentation, but the PDF (linked above) of slides does not show those links. So here they are - 


ColdFusion Splendor and Thunder

ColdFusion Documentation

CFMobile related Blogs

CFMobile related Videos

Recently PhoneGap Build made some changes in the way they pick up PhoneGap plugins. Because of this if you package the application (CFMobileExpenseTracker) using Public Beta builds, then image attachement feature would not work. We have fixed this issue post public beta. However there is a work around in public beta build- In the PhoneGap project properties of ColdFusion Thunder, select 'Load the configuration from XML' option and use this config.xml.

You can find the recording of this e-seminar here.

-Ram Kulkarni