Railo – Wikipedia

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 und try/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 und onSessionEnd 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“).

Siehe auch

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.