Railo
Deweloperzy | Railo Technologies, Michael Offner, Gert Franz |
---|---|
Pierwsze wydanie | kwiecień 2006 |
Wersja stabilna | 4.2.2.005 / 18 grudnia 2014
|
Magazyn | |
Napisane w | Jawa |
System operacyjny | Windows , Linux , Unix , macOS |
Dostępne w | angielski, niemiecki |
Typ | Serwer aplikacji |
Licencja | LGPL v2.1 |
Strona internetowa |
Railo Server , powszechnie określany jako Railo ( / r aɪ l oʊ aplikacji / RY -loh ), to oprogramowanie typu open source , które implementuje język skryptowy CFML po stronie serwera ogólnego przeznaczenia , często używany do tworzenia dynamicznych stron internetowych , internetowych i systemów intranetowych . CFML jest dynamicznym językiem obsługującym wiele paradygmatów programowania i działa na Wirtualna maszyna Javy (JVM).
Railo zostało stworzone przez szwajcarską firmę Railo Technologies GmbH, pomyślane jako wydajna alternatywa dla Adobe ColdFusion . W 2008 roku Railo przeszedł na model oparty na społeczności open source i stał się JBoss . Projekt Railo Open Source jest prowadzony przez Railo Technologies, a prace rozwojowe są finansowane z umów konsultingowych i wsparcia, ale każdy może wnieść kod do rozważenia.
Nazewnictwo
Railo został nazwany na cześć obcego psa ze Star Trek: Enterprise . Pies w rzeczywistości nazywa się Rhylo, ale fonetycznie po niemiecku to Railo. Zatem Railo można wymawiać albo jako rhy-lo, albo jako rai-lo - oba są dopuszczalne.
Główne wydania Railo mają kryptonim znanych i lojalnych psów z historii.
Historia
Railo rozpoczął się w 2002 roku jako studencki projekt Michaela Offnera i Gerta Franza, mający na celu skompilowanie kodu CFML do PHP , wybór dokonany ze względu na wszechobecność PHP, jednak stwierdzono, że nie zapewniało to pożądanej wydajności i stabilności, a decyzja była zamiast tego przełączyć się na Java .
Projekt okazał się na tyle udany, że postanowiono dalej rozwijać się w pełnoprawny produkt. Kilka wydań alfa i beta zostało wydanych przed oficjalnym wydaniem 1.0 w kwietniu 2006. Railo był nadal rozwijany, ale był stosunkowo nieznany wielu programistom CFML, aż do czerwca 2008 na konferencji Scotch on the Rocks w Edynburgu, kiedy Railo Technologies użyło Day 2 keynote, aby ogłosić partnerstwo z JBoss i przejście na open source.
W maju 2012 r. na zob. Konferencja obiektywna, ogłoszono powstanie "The Railo Company Ltd", Prywatnej Spółki z ograniczoną odpowiedzialnością , w skład której wchodzi szwajcarska firma Railo Technologies GmbH wraz z pięcioma innymi firmami działającymi w branży CFML.
Widelec Luce
W dniu 29 stycznia 2015 r. Projekt Lucee , rozwidlenie bazy kodu Railo 4.2, został ogłoszony przez pierwotnego programistę Railo, który stwierdził, że nie będzie dalej pracował nad Railo. Pozostali programiści potwierdzili, że również będą skupiać się wyłącznie na Lucee i – chociaż The Railo Company nie wydało oficjalnego oświadczenia – społeczność jest zgodna co do tego, że dalszy rozwój projektu Railo jest mało prawdopodobny.
W dniu 19 lipca 2016 r. Spółka Railo została rozwiązana.
Historia wydania
Wersja główna (nazwa kodowa) |
Wersja drugorzędna | Data wydania | Notatki |
---|---|---|---|
0 | Alfa 1 | 2004-04-10 | Pierwsza oficjalna wersja silnika Railo CFML. |
Alfa 2 | 2004-05-18 | ||
Alfa 3 | 2004-08-03 | ||
Alfa 4 | 2004-10-21 | ||
Beta 1 | 2005-01-16 | Pierwsza wersja beta Railo. | |
Beta 2 | 2005 | ||
Beta 3 | 2005 | ||
RC1 | 2005-09-23 | Pierwszy Release Candidate Railo został przedstawiony niemieckiemu CFUG w Monachium. | |
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'ego ) |
3.1.0.000 | 2009-08-12 | Pierwsza wersja Open Source 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 | Dodano wbudowaną obsługę ORM i wielu innych funkcji. |
3.3.4.003 | 2012-06-25 | ||
4.0 ( Apollo ) |
4.0.0.013 | 2012-07-02 | |
4.0.5.004 | 2013-07-09 | ||
4.1 ( koniec ) |
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 | Bieżąca stabilna wersja Railo |
Platformy i licencja
Railo działa na maszynie JVM jako serwlet i będzie działać z dowolnym kontenerem serwletów (np. Apache Tomcat , Eclipse Jetty ) lub serwerem aplikacji (np. JBoss AS , GlassFish ). Istnieje możliwość podłączenia serwera WWW (np. Apache , IIS , nginx , Cherokee ) z przodu za pomocą konektorów takich jak mod jk , mod proxy lub odpowiednik, ale nie jest to wymagane przez Railo.
Railo ma instalator dla systemów Linux , macOS i Windows , który zawiera Apache Tomcat . Istnieje również wstępnie skonfigurowane pobieranie Railo Express przy użyciu Jetty .
Począwszy od wersji 4.0, Railo będzie miało wersję wiersza poleceń , umożliwiającą używanie CFML jako języka ogólnego przeznaczenia, poza środowiskiem serwletów.
Railo od wersji 3.1 jest licencjonowane jako LGPL v2.1, z kodem źródłowym dostępnym na GitHub
Filozofia
Głównym celem Railo było zapewnienie funkcjonalności ColdFusion przy mniejszym zużyciu zasobów i zapewnieniu lepszej wydajności, a zespół Railo Technologies nadal „traktuje powolność jako błąd” jako podstawową filozofię rozwoju. Wiele testów wydajności wykazało, że Railo działa szybciej niż inne silniki CFML.
Oprócz tego Railo próbuje rozwiązać wiele niespójności występujących w tradycyjnym CFML. Są to albo wymuszone zmiany w zachowaniu, albo konfigurowalne opcje w Railo Administratorze.
Zespół Railo Technologies zawsze był otwarty na opinie i aktywny na wydarzeniach społecznościowych CFML i chętnie przypomina ludziom, że Railo jest projektem społecznościowym.
Railo Technologies tworzy również silne partnerstwa technologiczne z firmami zajmującymi się oprogramowaniem CFML, w tym Blue River Interactive Group (twórcy Mura CMS), CONTENS Software GmbH (twórcy CONTENS CMS) i Intergral GmbH (twórcy FusionReactor i FusionDebug ), aby zapewnić, że ich oprogramowanie dobrze współpracuje z Railo. Ponadto Railo Technologies oferuje formalne „programy partnerskie” dla rozwiązań (rozwoju), hostingu i szkoleń.
Stosowanie
Serwer aplikacji Railo ma obecnie średnio 7000 pobrań (i rośnie) miesięcznie.
Railo jest używany przez wiele firm, w szczególności:
- Amtrak California (kalifornijska firma kolejowa)
- Apple (firma zajmująca się elektroniką użytkową i oprogramowaniem)
- Diamond Bank (bank komercyjny w Nigerii )
- DistroKid (usługa publikowania/dystrybucji muzyki autorstwa Philipa J. Kaplana )
- IDG Germany (wydawca magazynów Computer World, GameStar, PCWorld)
- Fandalism (sieć społecznościowa dla muzyków, autor: Philip J. Kaplan )
- NASA Jet Propulsion Laboratory (centrum robotycznej eksploracji kosmosu)
- The List (brytyjski magazyn rozrywkowy)
- Grupa RTL (druga co do wielkości firma telewizyjna, radiowa i produkcyjna w Europie)
- STV Player (szkocka usługa wideo na żądanie)
- Swisscom (główny dostawca usług telekomunikacyjnych w Szwajcarii)
Cechy
- Obsługuje programowanie obiektowe z dziedziczeniem , domieszkami i metaklasami
- Pisanie dynamiczne i kaczka
- Notacja literałowa dla tablic i struktur
- Osadzanie zmiennych w łańcuchach ( interpolacja )
- Nazwane argumenty , opcjonalne argumenty i domyślne argumenty
- Trzy poziomy zasięgu zmiennej obiektowej: This (obiekt publiczny), Variables (obiekt prywatny), Local (funkcja prywatna)
- Wiele zakresów zmiennych globalnych: żądanie, sesja, klient, aplikacja, serwer, klaster
- Różne zakresy zmiennych udostępniane przez użytkownika: Form (post), Url (get), Cookie, CGI
- Automatyczne wyrzucanie elementów bezużytecznych (przez JVM)
- Globalna i lokalna obsługa wyjątków (przez
onError
itry/catch
) - Niestandardowe zachowanie wysyłania (poprzez
onMissingMethod
i niejawne moduły pobierające i ustawiające) - Niejawna konwersja obiektów (poprzez
_toString
,_toNumeric
,_toBoolean
,_toDate
) - Wątki rodzime
- Obsługa Unicode , kodowania wielu znaków i i18n
- Duża standardowa biblioteka, obejmująca typowe potrzeby związane z tworzeniem stron internetowych
- Railo Extension Store i Extension Manager do łatwej instalacji dodatkowego oprogramowania i rozszerzeń
- Natywne API wtyczek w CFML lub Javie
- Natywna obsługa ułatwiająca tworzenie i korzystanie z usług sieciowych
- Oddzielni administratorzy GUI dla poszczególnych kontekstów internetowych oraz globalny administrator serwera
- Wszystkie ustawienia administratora można konfigurować programowo lub poprzez edycję plików konfiguracyjnych XML
- Natywne zasoby dla wszystkich wbudowanych tagów i funkcji systemu plików.
- Klastrowanie i synchronizacja zarówno dla serwerów tradycyjnych, jak i chmurowych
- Menedżer zadań do planowania powtarzających się działań lub ponawiania nieudanych zdarzeń
- Natywne wsparcie dla Hibernate ORM
- Duża liczba funkcji manipulacji obrazem
- Event Gateways do asynchronicznego wykonywania kodu
- Natywna obsługa wielu różnych mechanizmów buforowania
- Natywne zarządzanie sesjami (sesje CFML lub sesje J2EE) z wyzwalaczami
onSessionStart
ionSessionEnd .
- Wbudowana funkcja uwierzytelniania użytkowników i ról.
Bezpieczeństwo
CFML ma wbudowaną funkcjonalność zapobiegającą wstrzykiwaniu kodu za pomocą znacznika cfqueryparam
oraz funkcje takie jak HtmlEditFormat
, XmlFormat
, JsStringFormat
. Istnieją również implementacje CFML innych firm OWASP Enterprise Security API i projekt AntiSamy.
Jedną z kluczowych decyzji architektonicznych podjętych w Railo było podążanie za modelem serwletów JEE, z obsługą wielu niezależnych kontekstów sieciowych na jednym serwerze. Jest to kluczowy czynnik bezpieczeństwa, ponieważ zapobiega wzajemnemu zakłócaniu się niepowiązanych ze sobą aplikacji, co może się zdarzyć na współdzielonym serwerze ColdFusion (który ma tylko jeden kontekst sieciowy).
Składnia
Railo implementuje język CFML - zobacz sekcję Składnia CFML dla przykładów, jak również CFScript .
Różnice
Różnice w stosunku do innych języków
CFML ma składnię opartą na znacznikach, która różni się wizualnie od większości innych języków, chociaż poza tym jest podobna do innych języków dynamicznych, z następującymi wyjątkami:
- CFML zawiera dwie składnie, składnię opartą na znacznikach (niezgodną z XML) oraz składnię w stylu C, zwaną cfscript.
- Tablice w CFML są indeksowane od jednego, a nie od zera.
- CFML obsługuje zarówno uporządkowane, jak i nazwane argumenty funkcji lub kombinację.
- CFML nie ma zmiennych statycznych.
Różnice w stosunku do Adobe ColdFusion
Podczas gdy Railo implementuje CFML i jest ogólnie kompatybilny z Adobe ColdFusion (ACF), oryginalnym silnikiem CFML, istnieją pewne zauważalne różnice między nimi:
- Railo to oprogramowanie LGPL v2.1 typu open source . ACF to zastrzeżona technologia.
- Railo wykorzystuje architekturę wielu kontekstów sieciowych, w porównaniu do pojedynczego kontekstu sieciowego ACF.
- Railo umożliwia tworzenie „wbudowanych” funkcji zdefiniowanych przez użytkownika przy użyciu standardowego CFML.
- Railo nie jest w stanie odszyfrować (ani wykonać) szablonów, które zostały zaszyfrowane za pomocą mechanizmu szyfrowania ACF.
- Railo ma znacznie szybszy cykl wydawniczy dla wydań głównych, pomocniczych i poprawek.
- W Railo zakresy zawsze mają pierwszeństwo. W ACF utworzenie zmiennej o nazwie „Url” może zablokować dostęp do zakresu Url. W Railo dostęp do zmiennej można uzyskać tylko jako „Variables.Url”.
- Railo wyszukuje CFC tylko w niestandardowej ścieżce znacznika, jeśli została odpowiednio zdefiniowana przez administratora (zamiast tego ma odrębną ścieżkę CFC).
- Railo 4.x wprowadza interfejs wiersza poleceń (CLI), który umożliwia wykonywanie skryptów CFML z wiersza poleceń
- Railo umożliwia stosowanie metod obiektowych. Zamiast więc używać tablicy Append (arr, "value") można napisać: arr.append("value").append("anotherValue").
Zobacz też
- Lucee - rozwidlenie Railo obecnie obsługiwane przez oryginalnych programistów Railo.
- Adobe ColdFusion — oryginalny silnik CFML.
- Open BlueDragon - kolejny silnik Open Source CFML.
- CFML - język używany przez Railo.