Railo
   HOME

TheInfoList



OR:

Railo Server, commonly referred to as Railo ( ), is
open source Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use the source code, design documents, or content of the product. The open-source model is a decentralized sof ...
software which implements the general-purpose
CFML ColdFusion Markup Language, more commonly known as CFML, is a scripting language for web development that runs on the JVM, the .NET framework, and Google App Engine. Multiple commercial and open source implementations of CFML engines are availab ...
server-side In the client–server model, server-side refers to programs and operations that run on the server. This is in contrast to client-side programs and operations which run on the client. General concepts Typically, a server is a computer application ...
scripting language A scripting language or script language is a programming language that is used to manipulate, customize, and automate the facilities of an existing system. Scripting languages are usually interpreted at runtime rather than compiled. A scripting ...
, often used to create dynamic websites,
web applications A web application (or web app) is application software that is accessed using a web browser. Web applications are delivered on the World Wide Web to users with an active network connection. History In earlier computing models like client-serve ...
and
intranet An intranet is a computer network for sharing information, easier communication, collaboration tools, operational systems, and other computing services within an organization, usually to the exclusion of access by outsiders. The term is used in c ...
systems. CFML is a
dynamic language In computer science, a dynamic programming language is a class of high-level programming languages, which at runtime execute many common programming behaviours that static programming languages perform during compilation. These behaviors cou ...
supporting multiple
programming paradigms Programming paradigms are a way to classify programming languages based on their features. Languages can be classified into multiple paradigms. Some paradigms are concerned mainly with implications for the execution model of the language, suc ...
and runs on the
Java virtual machine A Java virtual machine (JVM) is a virtual machine that enables a computer to run Java programs as well as programs written in other languages that are also compiled to Java bytecode. The JVM is detailed by a specification that formally describes ...
(JVM). Railo was created by the
Swiss Swiss may refer to: * the adjectival form of Switzerland * Swiss people Places * Swiss, Missouri * Swiss, North Carolina *Swiss, West Virginia * Swiss, Wisconsin Other uses *Swiss-system tournament, in various games and sports *Swiss Internation ...
company Railo Technologies GmbH, intended as a high performance alternative to
Adobe ColdFusion Adobe ColdFusion is a commercial rapid web-application development computing platform created by J. J. Allaire in 1995. (The programming language used with that platform is also commonly called ColdFusion, though is more accurately known as CF ...
. In 2008, Railo switched to an open source community-driven model, and became a
JBoss WildFly, formerly known as JBoss AS, or simply JBoss, is an application server written by JBoss, now developed by Red Hat. WildFly is written in Java and implements the Java Platform, Enterprise Edition (Java EE) specification. It runs on multip ...
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.


Naming

Railo was named after an
alien Alien primarily refers to: * Alien (law), a person in a country who is not a national of that country ** Enemy alien, the above in times of war * Extraterrestrial life, life which does not originate from Earth ** Specifically, intelligent extrater ...
dog in
Star Trek: Enterprise ''Star Trek: Enterprise'', titled simply ''Enterprise'' for its first two seasons, is an American science fiction television series created by Rick Berman and Brannon Braga. It originally aired from September 26, 2001, to May 13, 2005 on Uni ...
. 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.


History

Railo began in 2002 as a student project by Michael Offner and Gert Franz to compile CFML code into
PHP PHP is a general-purpose scripting language geared toward web development. It was originally created by Danish-Canadian programmer Rasmus Lerdorf in 1993 and released in 1995. The PHP reference implementation is now produced by The PHP Group ...
, 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 Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's List ...
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 Edinburgh ( ; gd, Dùn Èideann ) is the capital city of Scotland and one of its 32 Council areas of Scotland, council areas. Historically part of the county of Midlothian (interchangeably Edinburghshire before 1921), it is located in Lothian ...
, when Railo Technologies used the Day 2 keynote to announce a partnership with
JBoss WildFly, formerly known as JBoss AS, or simply JBoss, is an application server written by JBoss, now developed by Red Hat. WildFly is written in Java and implements the Java Platform, Enterprise Edition (Java EE) specification. It runs on multip ...
and a switch to open source. In May 2012, at the cf. Objective conference, the foundation of "The Railo Company Ltd" was announced, a
Private Limited Company A private limited company is any type of business entity in "private" ownership used in many jurisdictions, in contrast to a publicly listed company, with some differences from country to country. Examples include the '' LLC'' in the United Sta ...
, comprising the Swiss company Railo Technologies GmbH in conjunction with five other companies who operated in the CFML industry.


Lucee Fork

On 29 January 2015, the
Lucee Lucee is an open source implementation of a lightweight dynamically-typed scripting language for the Java virtual machine (JVM). The language is used for rapid development of web applications that compile directly to Java bytecode, and is comp ...
project, a fork of the Railo 4.2 codebase, was announced by the original developer of Railo, who stated that he would not be working further on Railo. The other developers have confirmed they will also be focusing solely on Lucee, and - although no official statement has been made by The Railo Company - the community consensus is that further development on the Railo project is unlikely. On 19 July 2016, The Railo Company was dissolved.


Release history


Platforms and license

Railo runs on the
JVM A Java virtual machine (JVM) is a virtual machine that enables a computer to run Java programs as well as programs written in other languages that are also compiled to Java bytecode. The JVM is detailed by a specification that formally describes ...
as a
servlet A Jakarta Servlet (formerly Java Servlet) is a Java software component that extends the capabilities of a server. Although servlets can respond to many types of requests, they most commonly implement web containers for hosting web application ...
, and will work with any
servlet container A web container (also known as a servlet container; and compare "webcontainer" ) is the component of a web server that interacts with Jakarta Servlets. A web container is responsible for managing the lifecycle of servlets, mapping a URL to a pa ...
(e.g.
Apache Tomcat Apache Tomcat (called "Tomcat" for short) is a free and open-source implementation of the Jakarta Servlet, Jakarta Expression Language, and WebSocket technologies. It provides a "pure Java" HTTP web server environment in which Java code can also ...
, Eclipse Jetty) or
application server An application server is a server that hosts applications or software that delivers a business application through a communication protocol. An application server framework is a service layer model. It includes software components available to a ...
(e.g.
JBoss AS WildFly, formerly known as JBoss AS, or simply JBoss, is an application server written by JBoss, now developed by Red Hat. WildFly is written in Java and implements the Java Platform, Enterprise Edition (Java EE) specification. It runs on mult ...
,
GlassFish GlassFish is an open-source Jakarta EE platform application server project started by Sun Microsystems, then sponsored by Oracle Corporation, and now living at the Eclipse Foundation and supported by Payara, Oracle and Red Hat. The supported v ...
). It is possible to connect a
web server A web server is computer software and underlying hardware that accepts requests via HTTP (the network protocol created to distribute web content) or its secure variant HTTPS. A user agent, commonly a web browser or web crawler, initiate ...
(e.g.
Apache The Apache () are a group of culturally related Native American tribes in the Southwestern United States, which include the Chiricahua, Jicarilla, Lipan, Mescalero, Mimbreño, Ndendahe (Bedonkohe or Mogollon and Nednhi or Carrizaleño an ...
, IIS,
nginx Nginx (pronounced "engine x" ) is a web server that can also be used as a reverse proxy, load balancer, mail proxy and HTTP cache. The software was created by Igor Sysoev and publicly released in 2004. Nginx is free and open-source software ...
,
Cherokee The Cherokee (; chr, ᎠᏂᏴᏫᏯᎢ, translit=Aniyvwiyaʔi or Anigiduwagi, or chr, ᏣᎳᎩ, links=no, translit=Tsalagi) are one of the indigenous peoples of the Southeastern Woodlands of the United States. Prior to the 18th century, t ...
) in front, using connectors such as
mod jk mod_jk is an Apache module used to connect the Tomcat servlet container with web servers such as Apache, iPlanet, Sun ONE (formerly Netscape) and even IIS using the Apache JServ Protocol. The mod_proxy_ajp module performs a similar function to t ...
,
mod proxy mod_proxy is an optional module for the Apache HTTP Server. This module implements a proxy, gateway or cache for Apache. It implements proxying capability for AJP13 (Apache JServ Protocol version 1.3), FTP, CONNECT (for SSL), HTTP/0.9, HTTP/1 ...
, or equivalent, but this is not required by Railo. Railo has an installer for
Linux Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, which ...
,
macOS macOS (; previously OS X and originally Mac OS X) is a Unix operating system developed and marketed by Apple Inc. since 2001. It is the primary operating system for Apple's Mac computers. Within the market of desktop and lapt ...
, and
Windows Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for serv ...
, which bundles
Apache Tomcat Apache Tomcat (called "Tomcat" for short) is a free and open-source implementation of the Jakarta Servlet, Jakarta Expression Language, and WebSocket technologies. It provides a "pure Java" HTTP web server environment in which Java code can also ...
. There is also a pre-configured Railo Express download using
Jetty A jetty is a structure that projects from land out into water. A jetty may serve as a breakwater, as a walkway, or both; or, in pairs, as a means of constricting a channel. The term derives from the French word ', "thrown", signifying somet ...
. From v4.0 onwards, Railo will have a
command line A command-line interpreter or command-line processor uses a command-line interface (CLI) to receive commands from a user in the form of lines of text. This provides a means of setting parameters for the environment, invoking executables and pro ...
version, enabling CFML to be used as a general-purpose language, outside of the servlet environment. Railo since v3.1 is licensed as
LGPL The GNU Lesser General Public License (LGPL) is a free-software license published by the Free Software Foundation (FSF). The license allows developers and companies to use and integrate a software component released under the LGPL into their own ...
v2.1, with the source code available on
GitHub GitHub, Inc. () is an Internet hosting service for software development and version control using Git. It provides the distributed version control of Git plus access control, bug tracking, software feature requests, task management, continuous ...


Philosophy

A primary aim of Railo was to provide the functionality of
ColdFusion Adobe ColdFusion is a commercial rapid web-application development computing platform created by J. J. Allaire in 1995. (The programming language used with that platform is also commonly called ColdFusion, though is more accurately known as CF ...
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, includin
Blue River Interactive Group
(developers of Mura CMS)
CONTENS Software GmbH
(developers of CONTENS CMS), an
Intergral GmbH
(developers of
FusionReactor FusionReactor is a developer and DevOps focused Java application performance monitor (APM) solution, developed by Intergral GmbH for monitoring Java application servers such as Tomcat, WildFly. WebSphere, GlassFish and in particular Adobe ColdF ...
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.


Usage

The Railo Application Server currently averages 7,000 downloads (and growing) per month. Railo is used by a number of companies, notably including: *
Amtrak California Amtrak California is a brand name used by the California Department of Transportation (Caltrans) Division of Rail for three state-supported Amtrak commuter rail routes in Californiathe ''Capitol Corridor'', the ''Pacific Surfliner'', and the ...
(Californian rail company) *
Apple An apple is an edible fruit produced by an apple tree (''Malus domestica''). Apple fruit tree, trees are agriculture, cultivated worldwide and are the most widely grown species in the genus ''Malus''. The tree originated in Central Asia, wh ...
(consumer electronics and software company) *
Diamond Bank Diamond Bank Plc., was a Nigerian multinational financial service provider. Diamond Bank was acquired by Access Bank in December 2018, and announced to complete the transactions of the merger fully in the first half of 2019. On 1 April 2019, ...
(A commercial bank in
Nigeria Nigeria ( ), , ig, Naìjíríyà, yo, Nàìjíríà, pcm, Naijá , ff, Naajeeriya, kcg, Naijeriya officially the Federal Republic of Nigeria, is a country in West Africa. It is situated between the Sahel to the north and the Gulf o ...
) * DistroKid (Music publishing / distribution service, by
Philip J. Kaplan Philip J. "Pud" Kaplan (born October 30, 1975) is an American entrepreneur and computer programmer who has founded several Internet companies. He created the Fucked Company website in May 2000 and wrote the corresponding book ''F'd Companies'' ...
) * IDG Germany (publisher of Computer World, GameStar, PCWorld magazines) * Fandalism (social network for musicians, by
Philip J. Kaplan Philip J. "Pud" Kaplan (born October 30, 1975) is an American entrepreneur and computer programmer who has founded several Internet companies. He created the Fucked Company website in May 2000 and wrote the corresponding book ''F'd Companies'' ...
) *
NASA The National Aeronautics and Space Administration (NASA ) is an independent agency of the US federal government responsible for the civil space program, aeronautics research, and space research. NASA was established in 1958, succeeding t ...
Jet Propulsion Laboratory The Jet Propulsion Laboratory (JPL) is a federally funded research and development center and NASA field center in the City of La Cañada Flintridge, California, United States. Founded in the 1930s by Caltech researchers, JPL is owned by NASA an ...
(center for the robotic exploration of space) * The List (UK entertainment magazine) *
RTL Group RTL Group (for "Radio Television Luxembourg") is a Luxembourg-based international media conglomerate, with another corporate centre in Cologne, Germany. The company operates 68 television channels and 31 radio stations in Germany, France and ...
(Europe's second largest TV, radio, and production company) *
STV Player STV Player is a video on demand service owned by STV Group and available free-of-charge across the UK, online, on mobile and on all major TV platforms, including Sky Glass, Amazon Fire TV, Roku, Apple TV, Android TV, Freeview Play and Virgin Me ...
(Scottish video on-demand service) *
Swisscom Swisscom AG is a major telecommunications provider in Switzerland. Its headquarters are located in Ittigen near Bern. The Swiss government owns 51.0 percent of Swisscom AG. According to its own published data, Swisscom holds a market share of 56 ...
(A major telecommunications provider in Switzerland)


Features

* Supports
object-oriented Object-oriented programming (OOP) is a programming paradigm based on the concept of "objects", which can contain data and code. The data is in the form of fields (often known as attributes or ''properties''), and the code is in the form of pro ...
programming with
inheritance Inheritance is the practice of receiving private property, Title (property), titles, debts, entitlements, Privilege (law), privileges, rights, and Law of obligations, obligations upon the death of an individual. The rules of inheritance differ ...
,
mixin In object-oriented programming languages, a mixin (or mix-in) is a class that contains methods for use by other classes without having to be the parent class of those other classes. How those other classes gain access to the mixin's methods depend ...
s and
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-oriente ...
es *
Dynamic typing In computer programming, a type system is a logical system comprising a set of rules that assigns a property called a type to every "term" (a word, phrase, or other set of symbols). Usually the terms are various constructs of a computer progra ...
and
duck typing Duck typing in computer programming is an application of the duck test—"If it walks like a duck and it quacks like a duck, then it must be a duck"—to determine whether an object can be used for a particular purpose. With nominative t ...
* Literal notation for
arrays An array is a systematic arrangement of similar objects, usually in rows and columns. Things called an array include: {{TOC right Music * In twelve-tone and serial composition, the presentation of simultaneous twelve-tone sets such that the ...
and structs * Embedding variables in strings (
interpolation In the mathematical field of numerical analysis, interpolation is a type of estimation, a method of constructing (finding) new data points based on the range of a discrete set of known data points. In engineering and science, one often has a n ...
) *
Named arguments In computer programming, named parameters, named argument 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. Overview A function call using name ...
, 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 In computer science, garbage collection (GC) is a form of automatic memory management. The ''garbage collector'' attempts to reclaim memory which was allocated by the program, but is no longer referenced; such memory is called ''garbage''. G ...
, (via JVM) * Global and local
exception handling In computing and computer programming, exception handling is the process of responding to the occurrence of ''exceptions'' – anomalous or exceptional conditions requiring special processing – during the execution of a program. In general, an ...
, (via onError and try/catch) * Custom dispatch behaviour (through onMissingMethod and implicit getters and setters) * Implicit object conversion (through _toString, _toNumeric, _toBoolean, _toDate) *
Native Native may refer to: People * Jus soli, citizenship by right of birth * Indigenous peoples, peoples with a set of specific rights based on their historical ties to a particular territory ** Native Americans (disambiguation) In arts and entert ...
threads * Support for
Unicode Unicode, formally The Unicode Standard,The formal version reference is is an information technology Technical standard, standard for the consistent character encoding, encoding, representation, and handling of Character (computing), text expre ...
, multiple
character encodings Character encoding is the process of assigning numbers to graphical characters, especially the written characters of human language, allowing them to be stored, transmitted, and transformed using digital computers. The numerical values that ...
, 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 ColdFusion Markup Language, more commonly known as CFML, is a scripting language for web development that runs on the JVM, the .NET framework, and Google App Engine. Multiple commercial and open source implementations of CFML engines are availab ...
or
Java Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's List ...
* Native handling for easily creating and consuming web services * Separate GUI Administrators for individual web contexts, plus a global server administrator * All admin settings configurable programmatically, or via editing
XML Extensible Markup Language (XML) is a markup language and file format for storing, transmitting, and reconstructing arbitrary data. It defines a set of rules for encoding documents in a format that is both human-readable and machine-readable. T ...
config files * Native
resources Resource refers to all the materials available in our environment which are technologically accessible, economically feasible and culturally sustainable and help us to satisfy our needs and wants. Resources can broadly be classified upon their a ...
for all built-in filesystem tags and functions. * Clustering and Synchronization for both traditional and
cloud server A virtual private server (VPS) is a virtual machine sold as a service by an Internet hosting service. The virtual dedicated server (VDS) also has a similar meaning. A virtual private server runs its own copy of an operating system (OS), and cus ...
s * Task Manager for scheduling repeated actions, or re-trying failed events * Native support for Hibernate ORM * 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 The Open Web Application Security Project (OWASP) is an online community that produces freely-available articles, methodologies, documentation, tools, and technologies in the field of web application security. The OWASP provides free and open ...
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 ColdFusion Markup Language, more commonly known as CFML, is a scripting language for web development that runs on the JVM, the .NET framework, and Google App Engine. Multiple commercial and open source implementations of CFML engines are availab ...
language - see the CFML syntax section for examples as well as
CFScript CFScript is an extension of CFML on the ColdFusion platform. CFScript resembles JavaScript. Some ColdFusion developers prefer it since it has less visual and typographical overhead than ordinary CFML. Usage Unless it's within a pure script-bas ...
.


Differences


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 is source code that is made freely available for possible modification and redistribution. Products include permission to use the source code, design documents, or content of the product. The open-source model is a decentralized sof ...
LGPL The GNU Lesser General Public License (LGPL) is a free-software license published by the Free Software Foundation (FSF). The license allows developers and companies to use and integrate a software component released under the LGPL into their own ...
v2.1 software. ACF is
proprietary {{Short pages monitor