The Adobe ColdFusion 2018 was released on July 12, 2018 with exciting new features and enhancements to the older versions. Through this article we present you the list of features and enhancements which have been introduced in this version. These cool and productive features make it the best option if you are planning to build or upgrade a ColdFusion Application.

New Features of ColdFusion 2018:

  • New Admin UI
  • Performance Monitoring Tool Kit
    • Server Monitor
    • Database Monitor
    • External Services Monitor
    • Code Profiler
    • Automatic connector tuning
  • Server Auto Lockdown
  • Core language enhancements
    • Asynchronous programming
    • Enhanced Object-Oriented Programming with the following
  • CLI and Read-Eval-Print Loop (REPL)
  • REST playground
  • New Caching Options

New UI for ColdFusion Administrator:

ColdFusion 2018 release provides a refreshing administrator console with new user interface which is cleaner and more organized. ColdFusion Administrator has a new home screen where it shows the main categories of settings as tiles. Clicking on a tile will take you to the first page within that category. ColdFusion Administrator also has a very useful search functionality where the new search provides the list of pages based on search string. New Admin is also providing a direct link to the ColdFusion Community page.

For knowing more, refer to this link.

ColdFusion 2018 Performance Monitoring Tool Kit:

It is an application monitoring suite which provides insight on how ColdFusion applications perform at run-time and helps to resolve issues effectively. It also analyses thread dumps and helps users in identifying bottlenecks. It provides Dynamic Server Index, which includes metrics for JVM, GC, CPU usage, and so on.

Server Monitor:

Flags performance issues and isolate problem areas so that you can initiate corrective action much faster. Know the average response time and throughput across the cluster or specific to a node, application, or page, in real time. The information will also be automatically archived for historical analysis.

Database Monitor:

Make sure your database does not act as a drag on application performance. Monitor all database queries, transactions, and query cache, visually, and get pre-determined or customized alerts to pro-actively take preventive or corrective action.

External Services Monitor:

Zero in on external factors such as web services, file system, mail server, LDAP, Microsoft SharePoint, or transfer protocols, that could be slowing down application performance. Ensure that all the components of your IT infrastructure are working in sync.

Code Profiler:

Swiftly identify and resolve complex performance issues buried deep in your code. Get the detailed information required to pinpoint the root cause of bottlenecks and troubleshoot applications more effectively.

Automatic Connector Tuning:

Ensure that your websites are always up and running. Eliminate 503 Service Unavailable errors by allowing the Performance Monitoring Toolset to dynamically adjust connector settings based on incoming traffic.

For knowing more, refer to this link.

Server Auto Lockdown feature in ColdFusion 2018:

Server Auto-Lockdown feature is applicable only to Production servers and it is available for all platforms (Windows and Linux). This feature helps administrators in the following ways:

    • Performs all lockdown steps automatically in lesser time compared to manually performing the steps
    • Provides settings summary
    • Rolls back to original configuration if the installer fails
  • Do silent installations
  • Secures production servers against vulnerabilities

For knowing more, refer to this link.

Core language enhancements in ColdFusion 2018:

Core language enhancements in ColdFusion 2018

Asynchronous programming using ColdFusion 2018:

In programming, synchronous operations block instructions until the task is completed, while asynchronous operations can execute without blocking other operations and can reduce the average response time of the application.

ColdFusion 2018 is supporting for asynchronous programming via futures and the runAsync() to execute code without the overhead of managing multiple threads. Asynchronous programming is best suited to process the I/O bound requests (writing/reading to a file or database, making API calls) and CPU bound requests (requires CPU time – looping through thousands of objects, complex lengthy calculations, processing millions of data points). Also, use asynchronous programming to improve the responsiveness of a UI.

future = runAsync( function(){
return “Hello World!”;
} );
writeOutput( future.get() );
future = runAsync(function(){
return 5;
} ).then( function( input ){
return input + 2;
} );
result = future.get( 3 ); // 3 is timeout(in ms)
writeOutput(result);

For knowing more, refer to this link.

Enhanced Object-Oriented Programming with ColdFusion 2018

Abstract components and methods

The main goal of abstraction is to handle complexities by hiding/encapsulating unnecessary details from other users. Abstract allows you to define in two contexts of operation:

  1. Components
  2. Methods

An abstract component allows you to make a template or blueprint for a component that will be eventually inherited from, so the inheriting class doesn’t have to implement all the methods. Therefore, abstract classes cannot be instantiated (you cannot create new instances of an abstract class) but only extended.

Abstract component can have both abstract methods and concrete methods defined within it. Abstract methods have no body, they are just declared, much like interfaces.

To define an abstract component, add the prefix Abstract to the component name as shown below:

abstract component {

// abstract methods

// concrete methods

}

Important Points:

  • A concrete component cannot have abstract methods.
  • Only abstract components can contain abstract functions.
  • In an inheritance hierarchy the first non-abstract class should implement all the abstract methods.

Final component, method, and variable

To prevent data security breaches in the inheritance feature we have the final keyword.

ColdFusion supports the following:

Final component (Final component cannot extend. However, it can extend other components)

Final method (Final method cannot be overridden and cannot be changed by sub-components)

Final variable (Final variable are constants and you cannot change the value of a final variable once you initialize it)

Default functions in interfaces

Interfaces are a type of component that enables you to declare a function and not just the signature. While extending the interface, developers can choose to either override or reuse the default implementation.

Default Functions enables extending the interfaces without breaking old applications.

For knowing more, refer to this link.

CLI and Read-Eval-Print Loop (REPL) in ColdFusion 2018

ColdFusion 2016 supports Command Line Interface(CLI) and now in the 2018 release of ColdFusion, there is supporting Read-Eval-Print-Loop (REPL), a shell, is an interactive programming environment that can run commands, define variables, write functions, work with files, databases, email, and invoke web services by executing CFM via the command line etc. and see the results. Sophisticated REPL works even if the ColdFusion server is NOT up and running. REPL only supports cfscript syntax, not tags.

To open the REPL console, run cf.bat/cf.sh without any arguments. We can execute the cfm pages in REPL mode much faster than CLI and handles positional and named arguments to the cfm. REPL also supports multi-line statements.

For knowing more, refer to this link.

REST Services with ColdFusion 2018

What are REST services?

REST (REpresentational State Transfer) is an architectural style for developing web services. REST provides standards between computer systems on the web, making it easier for systems to communicate with each other. REST-compliant systems are characterized by how they are stateless and separate the concerns of client and server.

ColdFusion 2018 provided many enhancements to the REST architectural style; the following are supported:

  • CF Administrator introduced the toggling action for enabling or disabling the Enable Developer Profile option. Enable the setting Enable Developer Profile in Debugging & Logging > Developer Profile.
  • ColdFusion 2018 provides an application, REST Playground, located in webroot/restplay, which you can launch in the browser. It’s a client to test your ColdFusion REST services/registered APIs. To use this, we should enable the Enable Developer Profile option. After creating the REST application, add the application using the REST Playground interface for registering the application. You can also add/update the REST path in the REST Services section in Data and Services in the ColdFusion Administrator. REST Playground app only functions in the Developer profile, not in the Production profile, or any other profile, for obvious security reasons.
  • Auto refresh of REST CFCs – Any change to the REST CFCs are reflected immediately on REST request if trusted cache is off, like the behaviour of any cfm/cfc.
  • Language changes (component as an argument, lifecycle methods)
  • Easy error tracking and debugging – earlier ColdFusion versions have issues in reporting and logging of errors related to the CFCs. Now ColdFusion 2018 can provide full stack trace of the compile time/run-time errors like all cfm/cfc error messages.
  • Support for PATCH verb – HTTP PATCH verb is used for partial updates on a resource. ColdFusion 2018 introduced a PATCH http method for doing the partial updates. For PATCH support, there must be a GET resource with the same resource path as PATCH resource.
  • For auto-registering the REST APIs requires REST-enabled component, Application component and index.cfm file in a folder. When you access the cfm page by its URL from the browser, all REST services in the folder and the subfolders get registered. The Application component need to have this setting: this.restSettings.restEnabled=true

For knowing more, refer to this link.

New Caching Enhancements in ColdFusion 2018

Before knowing the new caching enhancements, let us know what is a cache engine/server/service?

A cache engine/server/service stores the previously accessed content locally and serves it the next time which speeds up the access to data and reduces demand on an enterprise’s bandwidth. In this context Cache servers’ stores information temporarily with some time bound and provide that information whenever requested within that time bound. Cache servers also allow users to access content offline, including rich media files or other documents.

ColdFusion already has support for caching using ehcache which is an open source caching engine provides in-memory caching. Now ColdFusion 2018 have added support for three popular industry caching engines:

  • JCS (Java Caching System)
  • Memcached
  • Redis

Java Caching System (JCS) is an open source caching engine provides in-memory caching and algorithms for selectively removing objects from the cache. It also offers more advanced features, such as, indexed disk caching and support for distributed caches.

Memcached is a distributed caching solution for Java enterprise applications. A Memcached server can be shared across multiple ColdFusion instances, or multiple Memcached servers can be configured with a single ColdFusion instance.

Redis is an open source (BSD licensed), in-memory data structure store, used as a database and cache. It supports data structures such as strings, hashes, lists, sets, and so on.

Also plug in your own caching engine (Custom cache plugin) by implementing a simple CFML interface.

For knowing more, refer to this link.

Can we ask for any more using ColdFusion? There is hardly any. Now you know why we suggest you to upgrade to ColdFusion 2018? If you need help with upgrading your current ColdFusion Application for ColdFusion 2018, please contact us so we can discuss the action plan. Cheers…