Railo
{{Short description|Open-source implementation of CFML}}
{{Use dmy dates|date=January 2023}}
{{Infobox software
| name = Railo Server
| developer = Railo Technologies, Michael Offner, Gert Franz
| logo =
| released = April 2006
| latest release version = 4.2.2.005
| latest release date = {{start date and age|df=y|2014|12|18}}
| operating system = Windows, Linux, Unix, macOS
| language = English, German
| programming language = Java
| genre = Application server
| license = LGPL v2.1
| website = {{URL|https://github.com/getrailo/railo}}
}}
Railo Server, commonly referred to as Railo ({{IPAc-en|ˈ|r|aɪ|l|oʊ}} {{Respell|RY|loh}}), 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.
Naming
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.
History
Railo began in 2002 as a student project by Michael Offner and Gert Franz 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.{{cite web |url=http://www.getrailo.org/index.cfm/about-railo/ |title=Railo - History |url-status=usurped |archiveurl=https://web.archive.org/web/20160421215449/http://www.getrailo.org/index.cfm/about-railo/ |archivedate=21 April 2016 }}
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.{{cite web|url=http://www.infoq.com/news/2008/06/railo_jboss |title=Railo joins JBoss.org |publisher=Infoq.com |date=2008-06-18 |accessdate=2023-01-27}}
In May 2012, at the cf. Objective conference, the foundation of "The Railo Company Ltd" was announced, a Private Limited Company, comprising the Swiss company Railo Technologies GmbH in conjunction with five other companies who operated in the CFML industry.{{cite web |url=http://blog.getrailo.com/post.cfm/railo-at-cf-objective-the-evolution-of-railo |title=Railo at cf.Objective(): The Evolution of Railo — Railo Blog |accessdate=2015-02-17 |url-status=dead |archiveurl=https://web.archive.org/web/20150218032421/http://blog.getrailo.com/post.cfm/railo-at-cf-objective-the-evolution-of-railo |archivedate=18 February 2015 |df=dmy-all }}
= Lucee Fork =
On 29 January 2015, the Lucee 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.{{cite web|url=http://www.codersrevolution.com/blog/railo-and-lucee-hunka-hunka-burning-questions|title = Railo and Lucee: Hunka Hunka Burning Questions}}{{cite web|url=http://blog.adamcameron.me/2015/01/lucee.html|title=Lucee}}
On 19 July 2016, The Railo Company was dissolved.{{cite web|url=https://beta.companieshouse.gov.uk/company/08055066/filing-history|title=THE RAILO COMPANY LIMITED filing history - Find and update company information - GOV.UK}}
= Release history =
class="wikitable" | |||
Major version (Codename) | Minor version | Release date | Notes |
---|---|---|---|
rowspan="8"|0
| Alpha 1 | {{nowrap|2004-04-10}} | The first official release of the Railo CFML engine.{{cite web |url=http://www.railo.ch/en/index.cfm |title=Railo - the CFML engine |website=www.railo.ch |access-date=15 January 2022 |archive-url=https://web.archive.org/web/20051031204526/http://www.railo.ch/en/index.cfm |archive-date=31 October 2005 |url-status=dead}} | |||
Alpha 2
| {{nowrap|2004-05-18}} | | |||
Alpha 3
| {{nowrap|2004-08-03}} | | |||
Alpha 4
| {{nowrap|2004-10-21}} | | |||
Beta 1
| {{nowrap|2005-01-16}} | The first beta release of Railo. | |||
Beta 2
| {{nowrap|2005}} | | |||
Beta 3
| {{nowrap|2005}} | | |||
RC1
| {{nowrap|2005-09-23}} | The first release candidate of Railo was presented to the German CFUG in Munich. | |||
|1.0
| 1.0.0.000 | {{nowrap|2006-04}} | | |||
rowspan="3"|2.0
| 2.0.0.000 | {{nowrap|2007-09-10}} | | |||
2.0.1.000
| | | |||
2.0.2.000
| | | |||
rowspan="4"|3.0
| 3.0.0.000 | {{nowrap|2008-09-09}} | | |||
3.0.1.000
| | | |||
3.0.2.000
| | | |||
3.0.3.000
| | | |||
rowspan="3"|3.1
(Barry) | 3.1.0.000 | {{nowrap|2009-08-12}} | First Open Source release of Railo.{{cite web |url=http://www.getrailo.com/index.cfm/about-us/news/railo-31-released/ |title=Railo 3.1 release |accessdate=2011-10-02 |url-status=dead |archiveurl=https://web.archive.org/web/20110630013437/http://www.getrailo.com/index.cfm/about-us/news/railo-31-released/ |archivedate=30 June 2011 |df=dmy-all }} | |||
3.1.1.000
| {{nowrap|2009-08-11}} | | |||
3.1.2.000
| {{nowrap|2010-11-26}} | | |||
rowspan="3"|3.2
| 3.2.1.000 | {{nowrap|2011-12-24}} | | |||
3.2.2.000
| {{nowrap|2011-03-18}} | | |||
3.2.3.000
| {{nowrap|2011-06-10}} | | |||
rowspan="2"|3.3
(Hachiko) | 3.3.1.000 | {{nowrap|2011-11-03}} | Added built-in support for ORM and many other features.{{cite web | url=http://wiki.getrailo.org/wiki/What%27s_New | title=Top 10 Best Bitcoin Slots Sites | Best Online Casino 2022 }} | |||
3.3.4.003
| {{nowrap|2012-06-25}} | | |||
rowspan="2"|4.0
(Apollo) | 4.0.0.013 | {{nowrap|2012-07-02}} | | |||
4.0.5.004
| {{nowrap|2013-07-09}} | | |||
| 4.1
(Endal) | 4.1.2.005 | {{nowrap|2013-12-11}} | . | |||
rowspan="2"| 4.2
(Togo) | 4.2.0.009 | {{nowrap|2014-05-14}} | | |||
4.2.1.000
| {{nowrap|2014-05-21}} | | |||
|4.2.2.005
|2014-12-18 |Current stable release of Railo |
Platforms and license
Railo runs on the JVM 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, macOS, 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.{{cite web |url=http://www.getrailo.org/index.cfm/documentation/railo-roadmap/ |title=Railo Roadmap |accessdate=2011-10-02 |url-status=dead |archiveurl=https://web.archive.org/web/20110926000752/http://www.getrailo.org/index.cfm/documentation/railo-roadmap/ |archivedate=26 September 2011 |df=dmy-all }}
Railo since v3.1 is licensed as LGPL v2.1,{{cite web |url=http://wiki.getrailo.org/wiki/RailoLicense |title=Railo CFML Documentation Wiki - Railo License |accessdate=2011-10-02 |url-status=dead |archiveurl=https://web.archive.org/web/20111031044140/http://wiki.getrailo.org/wiki/RailoLicense |archivedate=31 October 2011 |df=dmy-all }} with the source code available on GitHub{{cite web | url=https://github.com/getrailo/railo | title=Railo CFML Engine | website=GitHub | date=30 April 2022 }}
Philosophy
A primary aim of Railo was to provide the functionality of ColdFusion 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.{{Cite web |url=http://cfmlblog.adamcameron.me/2013/08/saving-class-files-in-coldfusion-and.html |title=Saving class files in coldfusion |access-date=7 September 2013 |archive-date=13 August 2013 |archive-url=https://web.archive.org/web/20130813111006/http://cfmlblog.adamcameron.me/2013/08/saving-class-files-in-coldfusion-and.html |url-status=dead }}
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 [http://www.blueriver.com/ Blue River Interactive Group] (developers of Mura CMS), CONTENS Software GmbH[http://www.contens.de/en/pub CONTENS Software GmbH] (developers of CONTENS CMS), and Intergral GmbH[http://www.intergral.com/ 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.{{cite web |url=http://www.getrailo.com/index.cfm/partnerprograms/ |title=Partner Programs |accessdate=2011-10-02 |url-status=dead |archiveurl=https://web.archive.org/web/20111001161604/http://www.getrailo.com/index.cfm/partnerprograms/ |archivedate=1 October 2011 |df=dmy-all }}
Usage
{{cleanup section |date=July 2023 |reason=References}}
The Railo Application Server currently averages 7,000 downloads (and growing) per month.{{cite web |url=http://www.getrailo.com/reports/dlstats.cfm |title=Railo statistics |accessdate=2013-07-24 |url-status=dead |archiveurl=https://web.archive.org/web/20130113043655/http://www.getrailo.com/reports/dlstats.cfm |archivedate=13 January 2013 |df=dmy-all }}
Railo is used by a number of companies, notably including:
- Amtrak California (Californian rail company){{Cite web |url=http://www.amtrakcalifornia.com/ |title=Uses Railo-powered Mura CMS |access-date=2 October 2011 |archive-date=16 January 2012 |archive-url=https://web.archive.org/web/20120116072035/http://www.amtrakcalifornia.com/ |url-status=dead }}
- Apple (consumer electronics and software company)Uses Railo-powered Mura CMS internally.
- Diamond Bank (A commercial bank in Nigeria)
- DistroKid (Music publishing / distribution service, by Philip J. Kaplan){{cite web|url=https://techcrunch.com/2013/10/10/philip-kaplan-officially-launches-distrokid-a-cheap-efficient-way-to-distribute-lots-of-music/|title=Philip kaplan officially launches distrokid|date=10 October 2013 |publisher=Tech Crunch}}
- IDG Germany (publisher of Computer World, GameStar, PCWorld magazines)[http://www.computerwoche.de Railo powers IDG's German websites]
- Fandalism (social network for musicians, by Philip J. Kaplan){{cite web|url=http://news.ycombinator.com/item?id=3851260|title=I have 404,772 users. Now what?|publisher=News.ycombinator.com |df=dmy-all|accessdate=2012-11-08}}
- NASA Jet Propulsion Laboratory (center for the robotic exploration of space){{cite web|url=http://opensource.com/life/12/10/NASA-achieves-data-goals-Mars-rover-open-source-software|title=NASA achieves data goals for Mars rover with open source software|publisher=opensource.com |df=dmy-all|accessdate=2012-11-08}}
- The List (UK entertainment magazine)[http://www.list.co.uk Railo powers public website]
- RTL Group (Europe's second largest TV, radio, and production company)Uses Railo internally, also uses Railo-powered CONTENS CMS to generate public websites.
- STV Player (Scottish video on-demand service)[http://player.stv.tv Railo powers]
- Swisscom (A major telecommunications provider in Switzerland)[https://io.swisscom.ch Railo powers]
Features
- Supports object-oriented programming with inheritance, mixins and metaclasses
- Dynamic typing and duck typing
- Literal notation for arrays and structs
- Embedding variables in strings (interpolation)
- Named arguments, 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, (via JVM)
- Global and local exception handling, (via
onError
andtry/catch
) - Custom dispatch behaviour (through
onMissingMethod
and implicit getters and setters) - Implicit object conversion (through
_toString
,_toNumeric
,_toBoolean
,_toDate
){{cite web |url=http://wiki.getrailo.org/wiki/TIPS:Implicit_Conversions/wiki/TIPS:Magic_Functions |title=TIPS:Magic_Functions |url-status=usurped |archiveurl=https://web.archive.org/web/20120425015302/http://wiki.getrailo.org/wiki/TIPS:Implicit_Conversions/wiki/TIPS:Magic_Functions |archivedate=25 April 2012 }} - Native threads
- Support for Unicode, multiple character encodings, and i18n
- Large standard library, covering common web development needs
- Railo Extension Store{{cite web |url=http://blog.getrailo.com/post.cfm/railo-extension-store-has-opened |title=The Railo Extension Store is open! — Railo Blog |accessdate=2011-10-02 |url-status=dead |archiveurl=https://web.archive.org/web/20110903020514/http://blog.getrailo.com/post.cfm/railo-extension-store-has-opened |archivedate=3 September 2011 |df=dmy-all }} and Extension Manager{{cite web |url=http://blog.getrailo.com/post.cfm/extension-manager |title=Extension Manager — Railo Blog |accessdate=2011-10-02 |url-status=dead |archiveurl=https://web.archive.org/web/20120425015728/http://blog.getrailo.com/post.cfm/extension-manager |archivedate=25 April 2012 |df=dmy-all }} for easy installation of additional software and extensions
- Native plug-in API in CFML or Java{{cite web |url=http://blog.getrailo.com/post.cfm/railo-3-1-building-your-own-built-in-function |title=Railo 3.1: Building your own Built-In-Function — Railo Blog |accessdate=2011-10-02 |url-status=dead |archiveurl=https://web.archive.org/web/20111007175321/http://blog.getrailo.com/post.cfm/railo-3-1-building-your-own-built-in-function |archivedate=7 October 2011 |df=dmy-all }}
- 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 config files
- Native resources for all built-in filesystem tags and functions.{{cite web |url=http://classic.railo.ch/en/index.cfm?treeID=339 |title=Railo 3.0: Resources |accessdate=2011-10-02 |url-status=dead |archiveurl=https://web.archive.org/web/20120425015238/http://classic.railo.ch/en/index.cfm?treeID=339 |archivedate=25 April 2012 |df=dmy-all }}
- Clustering and Synchronization for both traditional and cloud servers
- Task Manager for scheduling repeated actions, or re-trying failed events{{cite web |url=http://blog.getrailo.com/post.cfm/railo-3-0-released-features-part-iv-task-manager-remote-synchronization |title=Railo 3.0 released - Features Part IV - Task manager, Remote synchronization — Railo Blog |accessdate=2011-10-02 |url-status=dead |archiveurl=https://web.archive.org/web/20111024001758/http://blog.getrailo.com/post.cfm/railo-3-0-released-features-part-iv-task-manager-remote-synchronization |archivedate=24 October 2011 |df=dmy-all }}
- Native support for Hibernate ORM
- Large number of image manipulation functions
- Event Gateways for asynchronous code execution{{cite web |url=http://wiki.getrailo.org/wiki/3-2:Event_gateways |title=3-2:Event_gateways |url-status=usurped |archiveurl=https://web.archive.org/web/20120508020438/http://wiki.getrailo.org/wiki/3-2:Event_gateways |archivedate=8 May 2012 }}
- Native support for a variety of different caching mechanisms{{cite web |url=http://blog.getrailo.com/post.cfm/cache-advanced-part-2 |title=Cache (Advanced) Part 2 — Railo Blog |accessdate=2011-10-02 |url-status=dead |archiveurl=https://web.archive.org/web/20120301205004/http://blog.getrailo.com/post.cfm/cache-advanced-part-2 |archivedate=1 March 2012 |df=dmy-all }}
- 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 the cfqueryparam
tag, and functions such as HtmlEditFormat
, XmlFormat
, JsStringFormat
.
There are also third-party CFML implementations of the OWASP Enterprise Security API,{{cite web | url=https://code.google.com/p/owasp-esapi-coldfusion/ | title=Google Code Archive - Long-term storage for Google Code Project Hosting }} and the AntiSamy project.{{cite web | url=http://www.petefreitag.com/item/760.cfm | title=Using AntiSamy with ColdFusion }}
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 as well as CFScript.
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 LGPL v2.1 software. ACF is proprietary 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 only searches for CFCs inside the custom tag path if defined accordingly in the administrator (it has a distinct CFC path instead).
- Railo 4.x introduces a command line interface (CLI) that allows executing CFML scripts from the command line
- Railo allows using object methods. So instead of using array Append (arr, "value") one can write: arr.append("value").append("anotherValue").
See also
- Lucee - fork of Railo currently supported by Railo's original developers.
- Adobe ColdFusion - the original CFML engine.
- CFML - the language Railo uses.
References
{{Reflist|colwidth=30em}}
External links
- {{Official website|https://github.com/getrailo/railo}}
{{CFML programming language}}