Now that ColdFusion 11 is more than a year old, I thought it was time that I revisit the topic. My initial post back in November 2013 (Adobe ColdFusion 11 Preview) was a simple walk through of the beta version. Not a lot has changed since that public beta, but there have been a ton of bugs fixed since its release. ColdFusion 11 is already at Update 5 to address those various bugs. The highlights of CF 11 include its mobile development platform, language enhancements, new security and social features, and it’s removed and deprecated functionality. In this post, I will lay out the new features that Adobe promotes and provide a small bit of commentary on their usefulness.
Mobile Development
One of the most touted features is Adobe’s end-to-end mobile application development platform baked right into ColdFusion. With the mobile features, a developer can rapidly develop mobile applications and deploy them quicker than having to write the app in each device’s language. The ColdFusion Mobile Platform works best when coding with CF Builder. There are three types of mobile application development that the ColdFusion Mobile Platform supports:
- HTML5 Standalone App – This type of app is written using a subset of ColdFusion tags and gets translated into simple HTML and JavaScript when packaged with PhoneGap. It offers support for device-specific functionality but no CF support.
- ColdFusion Web App – This really is a web application optimized for the phone. The server code resides on your server, not the phone, and there is no support for device specific functionality.
- Hybrid Standalone App – This type of app combines the benefits of type one (mainly device specific functionality) with the benefits of type two (the ability to serve the code via a CF server).
Overall, the ColdFusion Mobile Platform is great for quick, small mobile apps that do not need a lot of functionality.
Although this platform allows non-mobile developers to step into a mobile development world quickly, there are a few drawbacks. First, developers are not learning what it takes to build an app natively, which could impact speed and performance. While not having to learn every device’s language could be a plus, relying on something else (CF Builder/PhoneGap) to do your development could be a detriment. Secondly, CF Builder does not write perfect JavaScript. So if a developer wanted to figure out what CF was building (especially in the HTML5 type of app), they may become more confused with the JavaScript output. Even a seasoned JavaScript developer can have trouble with the mess it outputs. The ColdFusion Mobile Platform is a decent entry point for developers wanting to get their feet wet in mobile development, but the key is not to become reliant on this tool for larger apps or for a long mobile development career. At some point it would be prudent to learn Java or Swift.
Enhancements to the Language
One of the best new features in ColdFusion is its script parity with most of their tags. While ColdFusion started as a tag-based language much like HTML, most other language use a script style syntax. Only having tags made it difficult for users of other languages to use ColdFusion because it was so different. In addition, ColdFusion users found transitions to other languages equally challenging. Now CF developers can develop 99% of the app without using tags. If you are using a lot of CFCs, your language development begins to look a lot like other derivatives of C and C++. This is a much welcome addition to ColdFusion because it finally feels like a “grown up” language.
However, this change was not without some controversy among some of the advanced users. Those who took issue with it did so not because of the much desired script parity, but mostly because they did not favor the way Adobe decided to implement it. Adobe basically created a custom function for running all remaining tags through to create a script counterpart, instead of writing the script function to go directly to the underlying Java layer. This may cost coders some performance issues. And while it is not an ideal or elegant solution, I am just glad they finally did something in that direction. If there is a real performance issue, hopefully they will address it in future releases or updates.
New Security Features
ColdFusion has made several enhancements to security in version 11. One thing that could make your system vulnerable is allowing users of CFAdmin to download attachments of undelivered email. For example, if someone added a malicious attachment and the mail server rejected it, you wouldn’t want to open that yourself. However, in some environments maybe you ZIP large error emails that contain private information, large queries, variables dumps, etc. You may want to allow attachments in that scenario. CF Admin now has a toggle switch for this under the Mail settings.
You can also now send encrypted mails using the tag. You can choose from several different algorithms to send the mail, but you must also include a path to the “from” users public key certificate.
One thing that drove administrators crazy in the past was getting kicked off CF Admin if the same username/password was used, which does happen in environments where separate usernames are not needed. Now CF Admin can allow or disallow concurrent login sessions for the same user.
Social Features
For those who use social network functions on their site, ColdFusion now has a built in tag for dealing with Facebook, Twitter, and Google Plus. This is a good start but many people using social network features ustiize a lot more than these three platforms. For instance, Linkedin would be a good one to have. So there are probably other third-party solutions that do a better job if you need access to more networks.
Removed and Deprecated Functionality
For the first time in recent memory, ColdFusion has actually removed previously deprecated items from ColdFusion 11. The team is always careful to slowly remove items from the core functionality because they try to keep features backward compatible with previous versions. For an entire list of what has been removed click here.
You can find out more information about the new features in ColdFusion 11 here. For the most part, I think that ColdFusion 11 is progressing in the right direction. Obviously as a developer, I always want more-and I want it now-but I understand Adobe has to make business decisions based on broad applicability. We should start to see news about the next version of ColdFusion sometime in the fall. Hopefully, at this point, we will be given some idea as to where they plan on taking the product next.