Railo

Railo Server
Utvecklare Railo Technologies, Michael Offner, Gert Franz
Initial release april 2006
Stabil frisättning
4.2.2.005 / 18 december 2014 ; för 8 år sedan ( 2014-12-18 )
Förvar
Skrivet i Java
Operativ system Windows , Linux , Unix , macOS
Tillgänglig i engelska, tyska
Typ Applikationsserver
Licens LGPL v2.1
Hemsida github .com /gerailo /railo

Railo Server , vanligen kallad Railo ( / ˈ r l / RY -loh ) , är programvara med öppen källkod som implementerar det allmänna CFML - skriptspråket på serversidan, som ofta används för att skapa dynamiska webbplatser , webbapplikationer och intranätsystem . CFML är ett dynamiskt språk som stöder flera programmeringsparadigm och körs på Java Virtual Machine ( JVM).

Railo skapades av det schweiziska företaget Railo Technologies GmbH, tänkt som ett högpresterande alternativ till Adobe ColdFusion . 2008 bytte Railo till en öppen källkodsbaserad modell och blev ett JBoss- projekt. Railo Open Source-projektet leds av Railo Technologies, med utvecklingsarbete finansierat av konsult- och supportkontrakt, men vem som helst kan bidra med kod för övervägande.

Namngivning

Railo fick sitt namn efter en främmande hund i Star Trek: Enterprise . Hunden heter egentligen Rhylo, men skriven fonetiskt på tyska är det Railo. Således kan Railo uttalas antingen som rhy-lo eller som rai-lo - båda är acceptabla.

Railo stora utgåvor har ett kodnamn av anmärkningsvärda och lojala hundar från historien.

Historia

Railo började 2002 som ett studentprojekt av Michael Offner och Gert Franz för att kompilera CFML-kod till PHP , ett val som gjordes på grund av PHPs allestädes närvarande, men det visade sig att detta inte gav önskad prestanda och stabilitet, och beslutet var gjort att byta till Java- plattformen istället.

Projektet var så pass framgångsrikt att det beslutades att fortsätta utvecklas till en komplett produkt. Flera alfa- och betaversioner gjordes före den officiella 1.0-släppet i april 2006. Railo fortsatte att utvecklas men var relativt okänt för många CFML-utvecklare, fram till juni 2008 på Scotch on the Rocks-konferensen i Edinburgh, då Railo Technologies använde dag 2 keynote för att tillkännage ett partnerskap med JBoss och en övergång till öppen källkod.

I maj 2012, vid jfr. Målkonferens, grundandet av "The Railo Company Ltd" tillkännagavs, ett privat aktiebolag , bestående av det schweiziska företaget Railo Technologies GmbH i samverkan med fem andra företag som verkade i CFML-branschen.

Lucee Fork

Den 29 januari 2015 tillkännagavs Lucee -projektet, en gaffel av Railo 4.2-kodbasen, av den ursprungliga utvecklaren av Railo, som sa att han inte skulle arbeta vidare med Railo. De andra utvecklarna har bekräftat att de också kommer att fokusera enbart på Lucee, och - även om inget officiellt uttalande har gjorts av The Railo Company - är samhällets konsensus att ytterligare utveckling av Railo-projektet är osannolik.

Den 19 juli 2016 upplöstes The Railo Company.

Releasehistorik


Huvudversion (kodnamn)
Mindre version Utgivningsdatum Anteckningar
0 Alfa 1 2004-04-10 Den första officiella utgåvan av Railo CFML-motorn.
Alfa 2 2004-05-18
Alfa 3 2004-08-03
Alfa 4 2004-10-21
Beta 1 2005-01-16 Den första betaversionen av Railo.
Beta 2 2005
Beta 3 2005
RC1 2005-09-23 första släppkandidat presenterades för tyska CFUG i München.
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 Första Open Source-släppet av 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 Lade till inbyggt stöd för ORM och många andra funktioner.
3.3.4.003 2012-06-25
4.0

( Appollo )

4.0.0.013 2012-07-02
4.0.5.004 2013-07-09
4.1

( Endal )

4.1.2.005 2013-12-11 .
4.2

( Togo )

4.2.0.009 2014-05-14
4.2.1.000 2014-05-21
4.2.2.005 2014-12-18 Aktuell stabil version av Railo

Plattformar och licens

Railo körs på JVM som en servlet och fungerar med vilken servletbehållare som helst (t.ex. Apache Tomcat , Eclipse Jetty ) eller applikationsserver (t.ex. JBoss AS , GlassFish ). Det är möjligt att ansluta en webbserver (t.ex. Apache , IIS , nginx , Cherokee ) framför, med hjälp av kontakter som mod jk , mod proxy , eller motsvarande, men detta krävs inte av Railo.

Railo har ett installationsprogram för Linux , macOS och Windows , som paketerar Apache Tomcat . Det finns också en förkonfigurerad Railo Express-nedladdning med Jetty .

Från v4.0 och framåt kommer Railo att ha en kommandoradsversion , vilket gör att CFML kan användas som ett allmänt språk utanför servletmiljön.

Railo sedan v3.1 är licensierad som LGPL v2.1, med källkoden tillgänglig på GitHub

Filosofi

Ett primärt syfte med Railo var att tillhandahålla funktionaliteten i ColdFusion med mindre resurser och bättre prestanda, och Railo Technologies-teamet fortsätter att "behandla långsamhet som en bugg" som en kärnutvecklingsfilosofi. Många prestandatester har visat att Railo presterar snabbare än andra CFML-motorer.

Utöver detta försöker Railo lösa många inkonsekvenser som finns i traditionell CFML. Dessa är antingen påtvingade beteendeförändringar eller konfigurerbara alternativ i Railo Administrator.

Railo Technologies-teamet har alltid varit öppet för feedback och aktivt vid CFML-gemenskapsevenemang och är angelägna om att påminna folk om att Railo är ett samhällsprojekt.

Railo Technologies skapar också starka teknologiska partnerskap med CFML-programvaruföretag, inklusive Blue River Interactive Group (utvecklare av Mura CMS), CONTENS Software GmbH (utvecklare av CONTENS CMS) och Intergral GmbH (utvecklare av FusionReactor och FusionDebug ), för att hjälpa till att säkerställa deras programvara fungerar bra med Railo. Dessutom erbjuder Railo Technologies formella "partnerprogram" för lösningar (utveckling), hosting och utbildning.

Användande

Railo Application Server gör för närvarande i genomsnitt 7 000 nedladdningar (och växer) per månad.

Railo används av ett antal företag, bland annat:

Funktioner

  • Stöder objektorienterad programmering med arv , mixins och metaklasser
  • Dynamisk typning och duck typing
  • Bokstavlig notation för arrayer och strukturer
  • Inbädda variabler i strängar ( interpolation )
  • Namngivna argument , valfria argument och standardargument
  • Tre nivåer av objektvariabelomfång: Detta (offentligt objekt), Variabler (objekt privat), Lokalt (privat funktion)
  • Multipelt globalt variabelomfång: Begäran, Session, Klient, Applikation, Server, Kluster
  • Distinkta användartillhandahållna variabla omfattningar: Form (post), URL (get), Cookie, CGI
  • Automatisk sophämtning , (via JVM)
  • Global och lokal undantagshantering , (via onError och try/catch )
  • Anpassat sändningsbeteende (genom onMissingMethod och implicita getters och seters)
  • Implicit objektkonvertering (genom _toString , _toNumeric , _toBoolean , _toDate )
  • Inhemska trådar
  • Stöd för Unicode , flera teckenkodningar och i18n
  • Stort standardbibliotek som täcker vanliga webbutvecklingsbehov
  • Railo Extension Store och Extension Manager för enkel installation av ytterligare programvara och tillägg
  • Native plug-in API i CFML eller Java
  • Native hantering för att enkelt skapa och konsumera webbtjänster
  • Separata GUI-administratörer för enskilda webbkontexter, plus en global serveradministratör
  • Alla administratörsinställningar kan konfigureras programmatiskt eller via redigering av XML- konfigurationsfiler
  • Inbyggda resurser för alla inbyggda filsystemtaggar och funktioner.
  • Klustring och synkronisering för både traditionella och molnservrar
  • Aktivitetshanteraren för att schemalägga upprepade åtgärder eller försöka igen misslyckade händelser
  • Inbyggt stöd för Hibernate ORM
  • Stort antal bildmanipuleringsfunktioner
  • Event Gateways för exekvering av asynkron kod
  • Inbyggt stöd för en mängd olika cachningsmekanismer
  • Native session management (CFML-sessioner eller J2EE-sessioner) med onSessionStart och onSessionEnd- utlösare.
  • Inbyggd användarautentisering och rollfunktionalitet.

säkerhet

CFML har inbyggd funktionalitet för att förhindra kodinjektion, via cfqueryparam -taggen, och funktioner som HtmlEditFormat , XmlFormat , JsStringFormat . Det finns också tredjeparts CFML-implementeringar av OWASP Enterprise Security API och AntiSamy-projektet.

Ett av de viktigaste arkitekturbesluten med Railo var att följa JEE-servletmodellen, med stöd för flera oberoende webbkontexter på en enda server. Detta är en viktig säkerhetsfaktor, eftersom det förhindrar orelaterade applikationer från att störa varandra, vilket kan hända på en delad ColdFusion-server (som bara har en enda webbkontext).

Syntax

Railo implementerar CFML- språket - se avsnittet om CFML-syntax för exempel samt CFScript .

Skillnader

Skillnader från andra språk

CFML har en taggbaserad syntax som skiljer sig visuellt från de flesta andra språk, men bortsett från detta liknar den andra dynamiska språk, med följande undantag:

  • CFML innehåller två syntaxer, en taggbaserad syntax (inte XML-kompatibel) och en C-syntax som kallas cfscript.
  • Arrayer i CFML indexeras från ett, inte från noll.
  • CFML stöder både ordnade och namngivna funktionsargument, eller en kombination.
  • CFML har inga statiska variabler.

Skillnader från Adobe ColdFusion

Även om Railo implementerar CFML och i allmänhet är kompatibel med Adobe ColdFusion (ACF), den ursprungliga CFML-motorn, finns det några anmärkningsvärda skillnader mellan de två:

  • Railo är LGPL v2.1-programvara med öppen källkod . ACF är patentskyddad teknologi.
  • Railo använder en multiwebkontextarkitektur, jämfört med ACF:s enda webbkontext.
  • Railo låter dig skapa "inbyggda" användardefinierade funktioner med standard CFML.
  • Railo kan inte dekryptera (eller exekvera) mallar som har krypterats med ACF:s krypteringsmekanism.
  • Railo har en betydligt snabbare utgivningscykel för större, mindre och patchutgåvor.
  • I Railo har kikarsikten alltid prioritet. I ACF kan att skapa en variabel med namnet "Url" blockera åtkomst till URL-omfattningen. I Railo kan variabeln endast nås som "Variables.Url".
  • Railo söker bara efter CFC:er inom den anpassade taggsökvägen om den har definierats i enlighet därmed i administratören (den har istället en distinkt CFC-sökväg).
  • Railo 4.x introducerar ett kommandoradsgränssnitt (CLI) som tillåter exekvering av CFML-skript från kommandoraden
  • Railo tillåter användning av objektmetoder. Så istället för att använda array Append (arr, "värde") kan man skriva: arr.append("värde").append("ett annatVärde").

Se även

externa länkar