Railo
Encyclopedia
Railo is Open Source
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 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:...

 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 ColdFusion
ColdFusion
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 california
    Amtrak California
    Amtrak 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 Germany
    IDG
    International 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 Group
    RTL Group
    RTL 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 Player
    STV Player
    The 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 inheritance
    Inheritance (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...

    , mixin
    Mixin
    In 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 metaclass
    Metaclass
    In 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 typing
    Duck typing
    In 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 arrays
    Dynamic array
    In 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 structs
    Associative array
    In 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 arguments
    Named parameter
    In 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 collection
    Garbage 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 handling
    Exception handling
    Exception 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....

    , (via onError and try/catch)
  • Custom dispatch behaviour (through onMissingMethod and implicit getters and setters)
  • Implicit object conversion (through _toString, _toNumeric, _toBoolean, _toDate)
  • Native threads
    Thread (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 Unicode
    Unicode
    Unicode 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 Java
    Java
    Java 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 Resources
    Virtual file system
    A 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 and onSessionEnd triggers.
  • Built-in user authentication and roles functionality.

Security

CFML has built-in functionality for preventing code injection, via the cfqueryparam 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 Source
    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...

     LGPL v2.1 software. ACF is proprietary
    Proprietary software
    Proprietary 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.

External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK