Railo
Encyclopedia
Railo is Open Source
software which implements the general-purpose CFML server-side scripting language
, often used to create dynamic websites, web applications and intranet
systems. CFML is a dynamic language supporting multiple programming paradigms and runs on the Java Virtual Machine (JVM)
.
Railo was created by the Swiss
company Railo Technologies GmbH, intended as a high performance alternative to Adobe ColdFusion. In 2008, Railo switched to an Open Source community-driven model, and became a JBoss
project. The Railo Open Source project is led by Railo Technologies, with development work funded by consulting and support contracts, but anyone may contribute code for consideration.
The project was successful enough that it was decided to continue to develop into a full product. Several alpha and beta releases were made before the official 1.0 release in April 2006. Railo continued to be developed but was relatively unknown to many CFML developers, until June 2008 at the Scotch on the Rocks conference in Edinburgh, when Railo Technologies used the Day 2 keynote to announce a partnership with JBoss and a switch to Open Source.
Railo was named after an alien dog in Star Trek Enterprise. The dog is actually named Rhylo, but written phonetically in German it is Railo. Thus, Railo can be pronounced either as rhy-lo or as rai-lo - both are acceptable.
Railo major releases have a codename of notable and loyal dogs from history.
as a servlet
, and will work with any servlet container (e.g. Apache Tomcat
, Eclipse Jetty
) or application server
(e.g JBoss AS, GlassFish
).
It is possible to connect a web server
(e.g. Apache
, IIS
, nginx
, Cherokee
) in front, using connectors such as mod jk
, mod proxy
, or equivalent, but this is not required by Railo.
Railo has an installer for Linux
, Mac OS
, and Windows, which bundles Apache Tomcat
. There is also a pre-configured Railo Express download using Jetty
.
From v4.0 onwards, Railo will have a command line
version, enabling CFML to be used as a general-purpose language, outside of the servlet environment.
Railo since v3.1 is licensed as LGPL v2.1, with the source code available on GitHub
using less resources and giving better performance, and the Railo Technologies team continue to "treat slowness as a bug" as a core development philosophy. Many performance tests have shown Railo to perform faster than other CFML engines.
In addition to this, Railo attempts to resolve many inconsistencies found in traditional CFML. These are either forced changes in behaviour, or configurable options in the Railo Administrator.
The Railo Technologies team have always been open to feedback and active at CFML community events, and are keen to remind people that Railo is a community project.
Railo Technologies also creates strong technology partnerships with CFML software companies, including Blue River Interactive Group (developers of Mura CMS
), CONTENS Software GmbH (developers of CONTENS CMS), and Intergral GmbH (developers of FusionReactor
and FusionDebug
), to help ensure their software works well with Railo. In addition, Railo Technologies offer formal "Partner Programs" for Solutions (development), Hosting, and Training.
There are also third-party CFML implementations of the OWASP
Enterprise Security API, and the AntiSamy project.
One of the key architecture decisions with Railo was to follow the JEE servlet model, with support for multiple independent web contexts on a single server. This is a key security factor, as it prevents unrelated applications from interfering with each other, as may happen on a shared ColdFusion server (which only has a single web context).
Open source
The term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...
software which implements the general-purpose CFML server-side scripting language
Scripting language
A scripting language, script language, or extension language is a programming language that allows control of one or more applications. "Scripts" are distinct from the core code of the application, as they are usually written in a different language and are often created or at least modified by the...
, often used to create dynamic websites, web applications and intranet
Intranet
An intranet is a computer network that uses Internet Protocol technology to securely share any part of an organization's information or network operating system within that organization. The term is used in contrast to internet, a network between organizations, and instead refers to a network...
systems. CFML is a dynamic language supporting multiple programming paradigms and runs on the Java Virtual Machine (JVM)
Java Virtual Machine
A Java virtual machine is a virtual machine capable of executing Java bytecode. It is the code execution component of the Java software platform. Sun Microsystems stated that there are over 4.5 billion JVM-enabled devices.-Overview:...
.
Railo was created by the Swiss
Switzerland
Switzerland name of one of the Swiss cantons. ; ; ; or ), in its full name the Swiss Confederation , is a federal republic consisting of 26 cantons, with Bern as the seat of the federal authorities. The country is situated in Western Europe,Or Central Europe depending on the definition....
company Railo Technologies GmbH, intended as a high performance alternative to Adobe ColdFusion. In 2008, Railo switched to an Open Source community-driven model, and became a JBoss
JBoss (company)
JBoss is a division of Red Hat, Inc.. It specializes in open-source middleware software.The company profits from a service-based business model. JBoss employ a Professional Open Source business model where the core developers of projects make a living and offer their services...
project. The Railo Open Source project is led by Railo Technologies, with development work funded by consulting and support contracts, but anyone may contribute code for consideration.
History
Railo began in 2002 as a student project to compile CFML code into PHP, a choice made due to the ubiquity of PHP, however it was found that this did not give the desired performance and stability, and the decision was made to switch to the Java platform instead.The project was successful enough that it was decided to continue to develop into a full product. Several alpha and beta releases were made before the official 1.0 release in April 2006. Railo continued to be developed but was relatively unknown to many CFML developers, until June 2008 at the Scotch on the Rocks conference in Edinburgh, when Railo Technologies used the Day 2 keynote to announce a partnership with JBoss and a switch to Open Source.
Railo was named after an alien dog in Star Trek Enterprise. The dog is actually named Rhylo, but written phonetically in German it is Railo. Thus, Railo can be pronounced either as rhy-lo or as rai-lo - both are acceptable.
Railo major releases have a codename of notable and loyal dogs from history.
Release history
Major version (Codename) | Minor version | Release date | Notes |
---|---|---|---|
0 | Alpha 1 | The first official release of the Railo CFML engine. | |
Alpha 2 | |||
Alpha 3 | |||
Alpha 4 | |||
Beta 1 | The first beta release of Railo. | ||
Beta 2 | |||
Beta 3 | |||
RC1 | The first release candidate of Railo was presented to the German CFUG in Munich. | ||
1.0 | 1.0.0.000 | ||
2.0 | 2.0.0.000 | ||
2.0.1.000 | |||
2.0.2.000 | |||
3.0 | 3.0.0.000 | ||
3.0.1.000 | |||
3.0.2.000 | |||
3.0.3.000 | |||
3.1 (Barry Barry (dog) Barry der Menschenretter , also known as Barry, was a dog of a breed which was later called the St. Bernard that worked as a mountain rescue dog in Switzerland for the Great St Bernard Hospice. He predates the modern St. Bernard, and was lighter built than the modern breed. He has been described as... ) |
3.1.0.000 | First Open Source release of Railo. | |
3.1.1.000 | |||
3.1.2.000 | |||
3.2 (Greyfriars Bobby Greyfriars Bobby Greyfriars Bobby was a Skye Terrier who became known in 19th-century Edinburgh for spending 14 years guarding the grave of his owner, John Gray , until he died himself on 14 January 1872... ) |
3.2.1.000 | ||
3.2.2.000 | |||
3.2.3.000 | The current stable version of Railo. | ||
3.3 (Hachiko Hachiko , known in Japanese as chūken Hachikō , was an Akita dog born on a farm near the city of Ōdate, Akita Prefecture, remembered for his remarkable loyalty to his owner, even many years after his owner's death.-Life:In 1924, Hidesaburō Ueno,... ) |
3.3.0.000 | The next version of Railo, currently available as a preview release, adds built-in support for ORM Orm Orm became an Anglo-Saxon personal name during period of the Danelaw... and many other features. |
|
4.0 (Appollo Appollo (dog) Appollo was a search and rescue dog who served with the K-9 unit of the New York Police Department. He was awarded the Dickin Medal, the animals' equivalent of the Victoria Cross, in recognition of the work done by all search and rescue dogs following the September 11 attacks... ) |
4.0.0.000 | Alpha version, not yet released, but can be built from source via GitHub Github GitHub is a web-based hosting service for software development projects that use the Git revision control system. GitHub offers both commercial plans and free accounts for open source projects... |
Platforms and license
Railo runs on the JVMJava Virtual Machine
A Java virtual machine is a virtual machine capable of executing Java bytecode. It is the code execution component of the Java software platform. Sun Microsystems stated that there are over 4.5 billion JVM-enabled devices.-Overview:...
as a servlet
Java Servlet
A servlet is a Java programming language class used to extend the capabilities of servers that host applications accessed via a request-response programming model. Although servlets can respond to any type of request, they are commonly used to extend the applications hosted by Web servers...
, and will work with any servlet container (e.g. Apache Tomcat
Apache Tomcat
Apache Tomcat is an open source web server and servlet container developed by the Apache Software Foundation...
, Eclipse Jetty
Jetty (web server)
Jetty is a pure Java-based HTTP client/server, WebSocket client/server and servlet container developed as a free and open source project as part of the Eclipse Foundation...
) or application server
Application server
An application server is a software framework that provides an environment in which applications can run, no matter what the applications are or what they do...
(e.g JBoss AS, GlassFish
GlassFish
GlassFish is an open source application server project started by Sun Microsystems for the Java EE platform and now sponsored by Oracle Corporation. The supported version is called Oracle GlassFish Server...
).
It is possible to connect a web server
Web server
Web server can refer to either the hardware or the software that helps to deliver content that can be accessed through the Internet....
(e.g. Apache
Apache HTTP Server
The Apache HTTP Server, commonly referred to as Apache , is web server software notable for playing a key role in the initial growth of the World Wide Web. In 2009 it became the first web server software to surpass the 100 million website milestone...
, IIS
Internet Information Services
Internet Information Services – formerly called Internet Information Server – is a web server application and set of feature extension modules created by Microsoft for use with Microsoft Windows. It is the most used web server after Apache HTTP Server. IIS 7.5 supports HTTP, HTTPS,...
, nginx
Nginx
nginx is a Web server and a reverse proxy server for HTTP, SMTP, POP3 and IMAP protocols, with a strong focus on high concurrency, performance and low memory usage. It is licensed under a BSD-like license and it runs on Unix, Linux, BSD variants, Mac OS X, Solaris, and Microsoft Windows.- Overview...
, Cherokee
Cherokee (Webserver)
Cherokee is an open-source Cross-platform Web server that runs on Linux, BSD variants, Solaris, Mac OS X, and Microsoft Windows. It is a lightweight, high-performance Web Server/reverse proxy licensed under the GNU General Public License. Its goal is to be fast and fully functional yet still light...
) in front, using connectors such as mod jk
Mod jk
mod_jk is the connector used to connect the Tomcat servlet container with web servers such as Apache, Netscape, iPlanet, SunOne and even IIS using the AJP protocol.In a nutshell, a web server is waiting for client HTTP requests...
, mod proxy
Mod proxy
mod_proxy is an optional module for the Apache HTTP Server .This module implements a proxy/gateway/cache for Apache. It implements proxying capability for or AJP13 , FTP, CONNECT , HTTP/0.9, HTTP/1.0, and HTTP/1.1...
, or equivalent, but this is not required by Railo.
Railo has an installer for Linux
Linux
Linux is a Unix-like computer operating system assembled under the model of free and open source software development and distribution. The defining component of any Linux system is the Linux kernel, an operating system kernel first released October 5, 1991 by Linus Torvalds...
, Mac OS
Mac OS
Mac OS is a series of graphical user interface-based operating systems developed by Apple Inc. for their Macintosh line of computer systems. The Macintosh user experience is credited with popularizing the graphical user interface...
, and Windows, which bundles Apache Tomcat
Apache Tomcat
Apache Tomcat is an open source web server and servlet container developed by the Apache Software Foundation...
. There is also a pre-configured Railo Express download using Jetty
Jetty (web server)
Jetty is a pure Java-based HTTP client/server, WebSocket client/server and servlet container developed as a free and open source project as part of the Eclipse Foundation...
.
From v4.0 onwards, Railo will have a command line
Command-line interface
A command-line interface is a mechanism for interacting with a computer operating system or software by typing commands to perform specific tasks...
version, enabling CFML to be used as a general-purpose language, outside of the servlet environment.
Railo since v3.1 is licensed as LGPL v2.1, with the source code available on GitHub
Github
GitHub is a web-based hosting service for software development projects that use the Git revision control system. GitHub offers both commercial plans and free accounts for open source projects...
Philosophy
A primary aim of Railo was to provide the functionality of ColdFusionColdFusion
In computing, ColdFusion is the name of a commercial rapid application development platform invented by Jeremy and JJ Allaire in 1995. ColdFusion was originally designed to make it easier to connect simple HTML pages to a database, by version 2 it had...
using less resources and giving better performance, and the Railo Technologies team continue to "treat slowness as a bug" as a core development philosophy. Many performance tests have shown Railo to perform faster than other CFML engines.
In addition to this, Railo attempts to resolve many inconsistencies found in traditional CFML. These are either forced changes in behaviour, or configurable options in the Railo Administrator.
The Railo Technologies team have always been open to feedback and active at CFML community events, and are keen to remind people that Railo is a community project.
Railo Technologies also creates strong technology partnerships with CFML software companies, including Blue River Interactive Group (developers of Mura CMS
Mura CMS
Mura CMS is a popular open source content management system for CFML, created by Blue River Interactive.-External links:* *...
), CONTENS Software GmbH (developers of CONTENS CMS), and Intergral GmbH (developers of FusionReactor
FusionReactor
FusionReactor is a commercial, server monitor developed by Intergral GmbH.FusionReactor is a generic Java application server monitoring tool, used in thousands of deployments by some of the world’s largest organizations since its initial release in November 2005.FusionReactor is designed for...
and FusionDebug
FusionDebug
FusionDebug an interactive step debugger for Adobe ColdFusion and Railo CFML Engine. Step through code line-by-line, step into, step over or out of code to better understand how CFML code is running...
), to help ensure their software works well with Railo. In addition, Railo Technologies offer formal "Partner Programs" for Solutions (development), Hosting, and Training.
Usage
Railo is used by a number of companies, notably including:- Amtrak californiaAmtrak CaliforniaAmtrak California is a brand name used by the Caltrans Division of Rail for all state-supported Amtrak rail routes within the U.S. State of California...
(Californian rail company) - Apple Inc. (consumer electronics and software company)
- IDG GermanyIDGInternational Data Group is a technology media, research, event management, and venture capital organization.IDG evolved from International Data Corporation which was formed in 1964 in Newtonville, Massachusetts, by Patrick Joseph McGovern and a friend, Fred Kirch...
(publisher of Computer World, GameStar, PCWorld magazines) - The List (UK entertainment magazine)
- RTL GroupRTL GroupRTL Group is Europe's largest TV, radio and production company, and is majority-owned by German media conglomerate Bertelsmann. It has 45 television and 32 radio stations in 11 countries...
(Europe's second largest TV, radio, and production company) - STV PlayerSTV PlayerThe STV Player is a website based video on demand service accessible though the main STV website and separately in the distinct domain name stvplayer.tv. Current programmes are available for 30 days after transmission on the main STV channel, with archive programming available longer-term...
(Scottish video on-demand service)
Features
- Supports object-oriented programming with inheritanceInheritance (computer science)In object-oriented programming , inheritance is a way to reuse code of existing objects, establish a subtype from an existing object, or both, depending upon programming language support...
, mixinMixinIn object-oriented programming languages, a mixin is a class that provides a certain functionality to be inherited or just reused by a subclass, while not meant for instantiation , Mixins are synonymous functionally with abstract base classes...
s and metaclassMetaclassIn object-oriented programming, a metaclass is a class whose instances are classes. Just as an ordinary class defines the behavior of certain objects, a metaclass defines the behavior of certain classes and their instances. Not all object-oriented programming languages support metaclasses...
es - Dynamic typing and Duck typingDuck typingIn computer programming with object-oriented programming languages, duck typing is a style of dynamic typing in which an object's current set of methods and properties determines the valid semantics, rather than its inheritance from a particular class or implementation of a specific interface...
- Literal notation for arraysDynamic arrayIn computer science, a dynamic array, growable array, resizable array, dynamic table, or array list is a random access, variable-size list data structure that allows elements to be added or removed...
and structsAssociative arrayIn computer science, an associative array is an abstract data type composed of a collection of pairs, such that each possible key appears at most once in the collection.... - Embedding variables in strings (interpolation)
- Named argumentsNamed parameterIn computer programming, named parameters or keyword arguments refer to a computer language's support for function calls that clearly state the name of each parameter within the function call itself.- Overview :...
, Optional arguments, and Default arguments - Three levels of object variable scope: This (object public), Variables (object private), Local (function private)
- Multiple global variable scope: Request, Session, Client, Application, Server, Cluster
- Distinct user-provided variable scopes: Form (post), Url (get), Cookie, CGI
- Automatic garbage collectionGarbage collection (computer science)In computer science, garbage collection is a form of automatic memory management. The garbage collector, or just collector, attempts to reclaim garbage, or memory occupied by objects that are no longer in use by the program...
, (via JVM) - Global and local exception handlingException handlingException handling is a programming language construct or computer hardware mechanism designed to handle the occurrence of exceptions, special conditions that change the normal flow of program execution....
, (viaonError
andtry/catch
) - Custom dispatch behaviour (through
onMissingMethod
and implicit getters and setters) - Implicit object conversion (through
_toString
,_toNumeric
,_toBoolean
,_toDate
) - Native threadsThread (computer science)In computer science, a thread of execution is the smallest unit of processing that can be scheduled by an operating system. The implementation of threads and processes differs from one operating system to another, but in most cases, a thread is contained inside a process...
- Support for UnicodeUnicodeUnicode is a computing industry standard for the consistent encoding, representation and handling of text expressed in most of the world's writing systems...
, multiple character encodings, and i18n - Large standard library, covering common web development needs
- Railo Extension Store and Extension Manager for easy installation of additional software and extensions
- Native plug-in API in CFML or JavaJavaJava is an island of Indonesia. With a population of 135 million , it is the world's most populous island, and one of the most densely populated regions in the world. It is home to 60% of Indonesia's population. The Indonesian capital city, Jakarta, is in west Java...
- Native handling for easily creating and consuming webservices
- Separate GUI Administrators for individual web contexts, plus a global server administrator
- All admin settings configurable programmatically, or via editing XML config files
- Native ResourcesVirtual file systemA virtual file system or virtual filesystem switch is an abstraction layer on top of a more concrete file system. The purpose of a VFS is to allow client applications to access different types of concrete file systems in a uniform way...
for all built-in filesystem tags and functions. - Clustering and Synchronization for both traditional and cloud servers
- Task Manager for scheduling repeated actions, or re-trying failed events
- Native support for Hibernate ORM (from Railo 3.3)
- Large number of image manipulation functions
- Event Gateways for asynchronous code execution
- Native support for a variety of different caching mechanisms
- Native session management (CFML sessions or J2EE sessions) with
onSessionStart
andonSessionEnd
triggers. - Built-in user authentication and roles functionality.
Security
CFML has built-in functionality for preventing code injection, via thecfqueryparam
tag, and functions such as HtmlEditFormat
, XmlFormat
, JsStringFormat
.There are also third-party CFML implementations of the OWASP
OWASP
The Open Web Application Security Project is an open-source application security project. The OWASP community includes corporations, educational organizations, and individuals from around the world. This community works to create freely-available articles, methodologies, documentation, tools, and...
Enterprise Security API, and the AntiSamy project.
One of the key architecture decisions with Railo was to follow the JEE servlet model, with support for multiple independent web contexts on a single server. This is a key security factor, as it prevents unrelated applications from interfering with each other, as may happen on a shared ColdFusion server (which only has a single web context).
Syntax
Railo implements the CFML language - see the CFML syntax section for examples.Differences from other languages
CFML has a tag-based syntax which is visually different from most other languages, though aside from this it is similar to other dynamic languages, with the following exceptions:- CFML contains two syntaxes, a tag-based syntax (not XML compliant) and a C-style syntax called cfscript.
- Arrays in CFML are indexed from one, not from zero.
- CFML supports both ordered and named function arguments, or a combination.
- CFML does not have static variables.
Differences from Adobe ColdFusion
Whilst Railo implements CFML, and is generally compatible with Adobe ColdFusion (ACF), the original CFML engine, there are some notable differences between the two:- Railo is Open SourceOpen sourceThe term open source describes practices in production and development that promote access to the end product's source materials. Some consider open source a philosophy, others consider it a pragmatic methodology...
LGPL v2.1 software. ACF is proprietaryProprietary softwareProprietary software is computer software licensed under exclusive legal right of the copyright holder. The licensee is given the right to use the software under certain conditions, while restricted from other uses, such as modification, further distribution, or reverse engineering.Complementary...
technology. - Railo uses a multi web context architecture, compared to ACF's single web context.
- Railo allows you create "built-in" user-defined functions, using standard CFML.
- Railo is unable to decrypt (or execute) templates that have been encrypted with ACF's encryption mechanism.
- Railo has a significantly faster release cycle for major, minor, and patch releases.
- In Railo, scopes always take priority. In ACF, creating a variable named "Url" may block access to the Url scope. In Railo, the variable can only be accessed as "Variables.Url".
- Railo does not search for CFCs inside the custom tag path (it has a distinct CFC path instead).
See also
- Adobe ColdFusion - the original CFML engine.
- Open BlueDragon - another Open Source CFML engine.
- CFML - the language Railo uses.