Railo Server, allgemein als bezeichnet Railo (( RY-loh) ist eine Open-Source-Software, die die serverseitige allgemeine Skriptsprache CFML implementiert, die häufig zum Erstellen dynamischer Websites, Webanwendungen und Intranetsysteme verwendet wird. CFML ist eine dynamische Sprache, die mehrere Programmierparadigmen unterstützt und auf der Java Virtual Machine (JVM) ausgeführt wird.
Railo wurde von der Schweizer Railo Technologies GmbH als leistungsstarke Alternative zu Adobe ColdFusion entwickelt. Im Jahr 2008 wechselte Railo zu einem Open-Source-Community-Modell und wurde zu einem JBoss-Projekt. Das Railo Open Source-Projekt wird von Railo Technologies geleitet. Die Entwicklungsarbeit wird durch Beratungs- und Supportverträge finanziert, aber jeder kann Code zur Prüfung beitragen.
Railo wurde nach einem außerirdischen Hund in Star Trek Enterprise benannt. Der Hund heißt eigentlich Rhylo, aber phonetisch in Deutsch ist es Railo. Somit kann Railo entweder als rhy-lo oder als rai-lo ausgesprochen werden – beide sind akzeptabel.
Railo Major Releases haben einen Codenamen von bemerkenswerten und loyalen Hunden aus der Geschichte.
Geschichte
Railo begann im Jahr 2002 als Studentenprojekt von Michael Offner und Gert Franz, um CFML-Code in PHP zu kompilieren. Diese Entscheidung wurde aufgrund der Allgegenwart von PHP getroffen. Es wurde jedoch festgestellt, dass dies nicht die gewünschte Leistung und Stabilität ergab, und die Entscheidung fiel gemacht, um stattdessen auf die Java-Plattform zu wechseln.
Das Projekt war so erfolgreich, dass beschlossen wurde, sich weiter zu einem vollständigen Produkt zu entwickeln. Vor der offiziellen Version 1.0 im April 2006 wurden mehrere Alpha- und Beta-Versionen veröffentlicht. Railo wurde weiterentwickelt, war aber vielen CFML-Entwicklern bis Juni 2008 auf der Scotch on the Rocks-Konferenz in Edinburgh relativ unbekannt, als Railo Technologies den zweiten Tag nutzte Keynote zur Ankündigung einer Partnerschaft mit JBoss und einer Umstellung auf Open Source.
Im Mai 2012 wurde am vgl. Zielkonferenz, die Gründung von „The Railo Company Ltd“ wurde bekannt gegeben, einer Gesellschaft mit beschränkter Haftung, die das Schweizer Unternehmen Railo Technologies GmbH zusammen mit fünf anderen in der CFML-Branche tätigen Unternehmen umfasst.
Lucee Gabel
Am 29. Januar 2015 wurde das Lucee-Projekt, eine Abzweigung der Railo 4.2-Codebasis, vom ursprünglichen Entwickler von Railo angekündigt, der erklärte, dass er nicht weiter an Railo arbeiten werde. Die anderen Entwickler haben bestätigt, dass sie sich ebenfalls ausschließlich auf Lucee konzentrieren werden, und obwohl The Railo Company keine offizielle Erklärung abgegeben hat, ist der Konsens der Community, dass eine weitere Entwicklung des Railo-Projekts unwahrscheinlich ist.
Am 19. Juli 2016 wurde The Railo Company aufgelöst.
Veröffentlichungsverlauf
Hauptversion (Code Name) |
Nebenversion | Veröffentlichungsdatum | Anmerkungen |
---|---|---|---|
0 | Alpha 1 | 10.04.2004 | Die erste offizielle Version der Railo CFML-Engine. |
Alpha 2 | 2004-05-18 | ||
Alpha 3 | 03.08.2004 | ||
Alpha 4 | 2004-10-21 | ||
Beta 1 | 2005-01-16 | Die erste Beta-Version von Railo. | |
Beta 2 | 2005 | ||
Beta 3 | 2005 | ||
RC1 | 2005-09-23 | Der erste Release-Kandidat von Railo wurde der deutschen CFUG in München vorgestellt. | |
1.0 | 1.0.0.000 | 2006-04 | |
2.0 | 2.0.0.000 | 2007-09-10 | |
2.0.1.000 | |||
2.0.2.000 | |||
3.0 | 3.0.0.000 | 2008-09-09 | |
3.0.1.000 | |||
3.0.2.000 | |||
3.0.3.000 | |||
3.1
(Barry) |
3.1.0.000 | 2009-08-12 | Erste Open Source Veröffentlichung von Railo. |
3.1.1.000 | 2009-08-11 | ||
3.1.2.000 | 2010-11-26 | ||
3.2
(Greyfriars Bobby) |
3.2.1.000 | 2011-12-24 | |
3.2.2.000 | 2011-03-18 | ||
3.2.3.000 | 2011-06-10 | ||
3.3
(Hachiko) |
3.3.1.000 | 2011-11-03 | Integrierte Unterstützung für ORM und viele andere Funktionen hinzugefügt. |
3.3.4.003 | 2012-06-25 | ||
4.0
(Appollo) |
4.0.0.013 | 2012-07-02 | |
4.0.5.004 | 09.07.2013 | ||
4.1
(Endal) |
4.1.2.005 | 2013-12-11 | . |
4.2
(Gehen) |
4.2.0.009 | 2014-05-14 | |
4.2.1.000 | 2014-05-21 | ||
4.2.2.005 | 18.12.2014 | Aktuelle stabile Version von Railo |
Plattformen und Lizenz
Railo wird auf der JVM als Servlet ausgeführt und funktioniert mit jedem Servlet-Container (z. B. Apache Tomcat, Eclipse Jetty) oder Anwendungsserver (z. B. JBoss AS, GlassFish). Es ist möglich, einen Webserver (z. B. Apache, IIS, Nginx, Cherokee) über Konnektoren wie mod jk, mod proxy oder ein gleichwertiges zu verbinden, dies wird jedoch von Railo nicht benötigt.
Railo hat ein Installationsprogramm für Linux, MacOS und Windows, das Apache Tomcat bündelt. Es gibt auch einen vorkonfigurierten Railo Express-Download mit Jetty.
Ab Version 4.0 verfügt Railo über eine Befehlszeilenversion, mit der CFML außerhalb der Servlet-Umgebung als Allzwecksprache verwendet werden kann.
Railo ist seit v3.1 als LGPL v2.1 lizenziert, mit dem auf GitHub verfügbaren Quellcode
Philosophie
Ein primäres Ziel von Railo war es, die Funktionalität von ColdFusion mit weniger Ressourcen und besserer Leistung bereitzustellen, und das Railo Technologies-Team behandelt „Langsamkeit als Fehler“ weiterhin als zentrale Entwicklungsphilosophie. Viele Leistungstests haben gezeigt, dass Railo schneller arbeitet als andere CFML-Engines.
Darüber hinaus versucht Railo, viele Inkonsistenzen in der traditionellen CFML zu beheben. Dies sind entweder erzwungene Verhaltensänderungen oder konfigurierbare Optionen im Railo Administrator.
Das Railo Technologies-Team war immer offen für Feedback und aktiv bei CFML-Community-Veranstaltungen und möchte die Menschen daran erinnern, dass Railo ein Community-Projekt ist.
Railo Technologies geht auch starke Technologiepartnerschaften mit CFML-Softwareunternehmen ein, darunter Blue River Interactive Group (Entwickler von Mura CMS), CONTENS Software GmbH (Entwickler von CONTENS CMS) und Intergral GmbH (Entwickler von FusionReactor und FusionDebug), um sicherzustellen, dass ihre Software gut mit Railo funktioniert. Darüber hinaus bietet Railo Technologies formelle „Partnerprogramme“ für Lösungen (Entwicklung), Hosting und Schulungen an.
Der Railo Application Server wird derzeit durchschnittlich 7.000 Mal heruntergeladen (und wächst) pro Monat.
Railo wird von einer Reihe von Unternehmen eingesetzt, darunter:
Eigenschaften
- Unterstützt objektorientierte Programmierung mit Vererbung, Mixins und Metaklassen
- Dynamisches Tippen und Ententippen
- Literale Notation für Arrays und Strukturen
- Einbetten von Variablen in Strings (Interpolation)
- Benannte Argumente, optionale Argumente und Standardargumente
- Drei Ebenen des Objektvariablenbereichs: Dies (Objekt öffentlich), Variablen (Objekt privat), Lokal (Funktion privat)
- Umfang mehrerer globaler Variablen: Anforderung, Sitzung, Client, Anwendung, Server, Cluster
- Verschiedene vom Benutzer bereitgestellte variable Bereiche: Formular (Post), URL (Get), Cookie, CGI
- Automatische Speicherbereinigung (über JVM)
- Globale und lokale Ausnahmebehandlung (via
onError
undtry/catch
) - Benutzerdefiniertes Versandverhalten (durch
onMissingMethod
und implizite Getter und Setter) - Implizite Objektkonvertierung (durch
_toString
,_toNumeric
,_toBoolean
,_toDate
) - Native Threads
- Unterstützung für Unicode, Codierung mit mehreren Zeichen und i18n
- Große Standardbibliothek, die allgemeine Anforderungen an die Webentwicklung abdeckt
- Railo Extension Store und Extension Manager zur einfachen Installation zusätzlicher Software und Erweiterungen
- Native Plug-In-API in CFML oder Java
- Natives Handling zum einfachen Erstellen und Konsumieren von Webdiensten
- Separate GUI-Administratoren für einzelne Webkontexte sowie ein globaler Serveradministrator
- Alle Administratoreinstellungen können programmgesteuert oder über das Bearbeiten von XML-Konfigurationsdateien konfiguriert werden
- Native Ressourcen für alle integrierten Dateisystem-Tags und -Funktionen.
- Clustering und Synchronisation für herkömmliche und Cloud-Server
- Task-Manager zum Planen wiederholter Aktionen oder zum erneuten Ausprobieren fehlgeschlagener Ereignisse
- Native Unterstützung für Hibernate ORM
- Große Anzahl von Bildbearbeitungsfunktionen
- Event Gateways für die asynchrone Codeausführung
- Native Unterstützung für eine Vielzahl verschiedener Caching-Mechanismen
- Native Sitzungsverwaltung (CFML-Sitzungen oder J2EE-Sitzungen) mit
onSessionStart
undonSessionEnd
löst aus. - Integrierte Benutzerauthentifizierung und Rollenfunktionalität.
Sicherheit
CFML verfügt über eine integrierte Funktionalität zur Verhinderung der Code-Injection über das cfqueryparam
Tag und Funktionen wie HtmlEditFormat
, XmlFormat
, JsStringFormat
. Es gibt auch CFML-Implementierungen von Drittanbietern der OWASP Enterprise Security API. und das AntiSamy-Projekt.
Eine der wichtigsten Architekturentscheidungen bei Railo war die Befolgung des JEE-Servlet-Modells mit Unterstützung mehrerer unabhängiger Webkontexte auf einem einzigen Server. Dies ist ein wichtiger Sicherheitsfaktor, da verhindert wird, dass sich nicht verwandte Anwendungen gegenseitig stören, wie dies auf einem gemeinsam genutzten ColdFusion-Server (der nur einen einzigen Webkontext hat) auftreten kann.
Railo implementiert die CFML-Sprache – Beispiele sowie CFScript finden Sie im Abschnitt zur CFML-Syntax.
Unterschiede
Unterschiede zu anderen Sprachen
CFML verfügt über eine tagbasierte Syntax, die sich optisch von den meisten anderen Sprachen unterscheidet. Abgesehen davon ähnelt sie anderen dynamischen Sprachen mit den folgenden Ausnahmen:
- CFML enthält zwei Syntaxen, eine tagbasierte Syntax (nicht XML-kompatibel) und eine C-Syntax namens cfscript.
- Arrays in CFML werden von eins und nicht von null indiziert.
- CFML unterstützt sowohl geordnete als auch benannte Funktionsargumente oder eine Kombination.
- CFML hat keine statischen Variablen.
Unterschiede zu Adobe ColdFusion
Während Railo CFML implementiert und im Allgemeinen mit Adobe ColdFusion (ACF), der ursprünglichen CFML-Engine, kompatibel ist, gibt es einige bemerkenswerte Unterschiede zwischen den beiden:
- Railo ist eine Open-Source-Software für LGPL v2.1. ACF ist eine proprietäre Technologie.
- Railo verwendet im Vergleich zum einzelnen Webkontext von ACF eine Multi-Web-Kontextarchitektur.
- Mit Railo können Sie benutzerdefinierte Funktionen mit Standard-CFML erstellen.
- Railo kann keine Vorlagen entschlüsseln (oder ausführen), die mit dem Verschlüsselungsmechanismus von ACF verschlüsselt wurden.
- Railo hat einen deutlich schnelleren Release-Zyklus für Major-, Minor- und Patch-Releases.
- In Railo haben Bereiche immer Vorrang. In ACF kann das Erstellen einer Variablen mit dem Namen „Url“ den Zugriff auf den URL-Bereich blockieren. In Railo kann auf die Variable nur als „Variables.Url“ zugegriffen werden.
- Railo sucht nur dann nach CFCs im benutzerdefinierten Tag-Pfad, wenn dies im Administrator entsprechend definiert wurde (stattdessen gibt es einen eigenen CFC-Pfad).
- Railo 4.x führt eine Befehlszeilenschnittstelle (Command Line Interface, CLI) ein, mit der CFML-Skripte über die Befehlszeile ausgeführt werden können
- Railo erlaubt die Verwendung von Objektmethoden. Anstatt also das Array Append (arr, „value“) zu verwenden, kann man schreiben: arr.append („value“). Append („anotherValue“).