El servidor Railo, comúnmente conocido como Railo ((RY-loh) es un software de código abierto que implementa el lenguaje de scripting común del lado del servidor CFML, que a menudo se usa para crear sitios web dinámicos, aplicaciones web y sistemas de intranet. CFML es un lenguaje dinámico que admite múltiples paradigmas de programación y se ejecuta en la Máquina Virtual Java (JVM).
Railo fue desarrollado por la empresa suiza Railo Technologies GmbH como una potente alternativa a Adobe ColdFusion. En 2008, Railo cambió a un modelo de comunidad de código abierto y se convirtió en un proyecto de JBoss. El proyecto de Código Abierto Railo está dirigido por Railo Technologies. El trabajo de desarrollo se financia con contratos de consultoría y soporte, pero cualquier persona puede contribuir con el código al examen.
Railo fue nombrado después de un perro alienígena en Star Trek Enterprise. El perro en realidad se llama Rhylo, pero fonéticamente en alemán es Railo. Por lo tanto, el Railo se puede pronunciar como rhy-lo o como rai-lo, ambos son aceptables.
Las versiones principales de Railo tienen un nombre en código de perros notables y leales de la historia.
Historia
Railo comenzó en 2002 como un proyecto de estudiantes de Michael Offner y Gert Franz para compilar código CFML en PHP. Esta decisión se tomó debido a la ubicuidad de PHP. Sin embargo, se encontró que esto no daba el rendimiento y la estabilidad deseados, y se tomó la decisión de cambiar a la plataforma Java en su lugar.
El proyecto fue tan exitoso que se decidió desarrollar aún más en un producto completo. Varias versiones alfa y beta fueron lanzadas antes de la versión oficial 1.0 en abril de 2006. Railo se desarrolló aún más, pero fue relativamente desconocido para muchos desarrolladores de CFML hasta junio de 2008 en la conferencia Scotch on the Rocks en Edimburgo, cuando Railo Technologies utilizó el discurso de apertura del segundo día para anunciar una asociación con JBoss y un cambio al código abierto.
En mayo de 2012, en cf. En la conferencia de Target, se anunció el establecimiento de «The Railo Company Ltd», una sociedad de responsabilidad limitada que incluye a la empresa suiza Railo Technologies GmbH junto con otras cinco empresas que operan en la industria de CFML.
Lucee Gabel
El 29 de enero de 2015, el proyecto Lucee, una bifurcación de la base de código Railo 4.2, fue anunciado por el desarrollador original de Railo, quien declaró que no continuaría trabajando en Railo. Los otros desarrolladores han confirmado que también se centrarán exclusivamente en Lucee, y aunque la compañía Railo no ha hecho una declaración oficial, el consenso de la comunidad es que es poco probable que se siga desarrollando el proyecto Railo.
El 19 de julio de 2016, La Compañía Railo se disolvió.
Historial de publicaciones
Versión principal (Nombre en código) |
Versión menor | Fecha de lanzamiento | Notas |
---|---|---|---|
0 | Alfa 1 | 10.04.2004 | La primera versión oficial del motor Railo CFML. |
Alfa 2 | 2004-05-18 | ||
Alfa 3 | 03.08.2004 | ||
Alfa 4 | 2004-10-21 | ||
Beta 1 | 2005-01-16 | La primera versión beta de Railo. | |
Beta 2 | 2005 | ||
Beta 3 | 2005 | ||
RC1 | 2005-09-23 | La primera release candidate de Railo fue presentado a la alemana CFUG en Munich. | |
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 | Primera aparición de 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 | Añadido soporte integrado para el ORM y muchas otras características. |
3.3.4.003 | 2012-06-25 | ||
4.0
( Apolo) |
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
( Ir) |
4.2.0.009 | 2014-05-14 | |
4.2.1.000 | 2014-05-21 | ||
4.2.2.005 | 18.12.2014 | La versión estable actual de Railo |
Plataformas y Licencia
Railo se ejecuta como un servlet en la JVM y funciona con cualquier contenedor de servlets (por ejemplo, Apache Tomcat, Eclipse Jetty) o servidores de aplicaciones (por ejemplo, JBoss AS, GlassFish). Es posible conectar un servidor web (por ejemplo, Apache, IIS, Nginx, Cherokee) a través de conectores como mod jk, mod proxy o un equivalente, pero Railo no lo necesita.
Railo tiene un instalador para Linux, macOS y Windows que incluye Apache Tomcat. También hay una descarga Railo Express preconfigurada con Embarcadero.
De la versión 4.0, Railo tiene una versión de línea de comandos que permite usar CFML como lenguaje de propósito general fuera del entorno de servlet.
Railo ha sido licenciado como LGPL v2.1 desde v3.1, con el código fuente disponible en GitHub
Filosofía
Un objetivo principal de Railo era proporcionar la funcionalidad de ColdFusion con menos recursos y un mejor rendimiento, y el equipo de Railo Technologies continúa tratando la «lentitud como un error» como una filosofía de desarrollo central. Muchas pruebas de rendimiento han demostrado que Railo funciona más rápido que otros motores CFML.
Además, Railo intenta corregir muchas inconsistencias en el CFML tradicional. Estos son cambios de comportamiento forzados u opciones configurables en el Administrador de Railo.
El equipo de Railo Technologies siempre ha estado abierto a comentarios y activo en los eventos comunitarios de CFML y quiere recordar a la gente que Railo es un proyecto comunitario.
Railo Technologies también tiene sólidas asociaciones tecnológicas con empresas de software CFML, como Blue River Interactive Group (desarrollador de Mura CMS), CONTENS Software GmbH (desarrollador de CONTENS CMS) e Intergral GmbH (desarrollador de FusionReactor y FusionDebug) para garantizar que su software funcione bien con Railo. Además, Railo Technologies ofrece «programas de socios» formales para soluciones (desarrollo), alojamiento y capacitación.
El servidor de aplicaciones Railo tiene actualmente un promedio de 7.Descargado (y creciendo) 000 veces al mes.
Railo es utilizado por varias empresas, incluidas:
Propiedades
- Admite programación orientada a objetos con clases de herencia, mixins y meta
- Escritura dinámica y escritura de pato
- Notación literal para matrices y estructuras
- Incrustar argumentos nombrados por variables en cadenas (interpolación)
- , argumentos opcionales y argumentos estándar
- Tres niveles del rango de variables de objeto: Este (objeto público), Variables (objeto privado), Local (función privada)
- Ámbito de varias variables globales: Solicitud, sesión, Cliente, Aplicación, Servidor, Clúster
- Varios ámbitos de variables proporcionados por el usuario: Formulario (Post), URL (Get), Cookie, CGI
- Recolección automática de basura (a través de JVM)
- Manejo de excepciones globales y locales (a través de
onError
ytry/catch
) - Comportamiento de envío definido por el usuario (por
onMissingMethod
y getters y setters implícitos) - Conversión de objetos implícitos (por
_toString
,_toNumeric
,_toBoolean
,_toDate
) - Hilos nativos
- Compatibilidad con Unicode, codificación de varios caracteres e i18n
- Biblioteca estándar grande que cubre los requisitos generales de desarrollo web
- Almacén de extensiones Railo y Administrador de extensiones para una fácil instalación de software y extensiones adicionales
- API de plug-in nativo en CFML o Java
- Manejo nativo para una fácil creación y consumo de servicios web
- Administradores de GUI independientes para contextos web individuales, así como un administrador de servidor global
- Todas las configuraciones de administrador se pueden configurar mediante programación o mediante edición.en etiquetas y funciones del sistema de archivos.
- Agrupación en clústeres y sincronización para servidores tradicionales y en la nube
- Administrador de tareas para programar acciones repetidas o volver a intentar eventos fallidos
- Soporte nativo para Hi Hibernado
- Gran número de funciones de edición de imágenes
- Pasarelas de eventos para ejecución de código asíncrono
- Soporte nativo para una variedad de almacenamiento en caché diferente mecanismos
- Administración de sesiones nativa (sesiones CFML o sesiones J2EE) con activadores
onSessionStart
yonSessionEnd
. - Autenticación de usuario integrada y funcionalidad de rol.
Seguridad
CFML tiene funcionalidad incorporada para evitar la inyección de código a través de la etiqueta cfqueryparam
y características como HtmlEditFormat
, XmlFormat
, JsStringFormat
. También hay implementaciones CFML de terceros de la API de seguridad empresarial de OWASP. y el proyecto AntiSamy.
Una de las decisiones arquitectónicas más importantes de Railo fue seguir el modelo JEE servlet con soporte para múltiples contextos web independientes en un solo servidor. Este es un factor de seguridad importante, ya que evita que las aplicaciones no relacionadas interfieran entre sí, como puede ocurrir en un servidor ColdFusion compartido (que tiene un solo contexto web).
Railo implementa el lenguaje CFML-Se pueden encontrar ejemplos y CFScript en la sección sintaxis CFML.
Diferencias
Diferencias con otros idiomas
CFML tiene una sintaxis basada en etiquetas que es visualmente diferente de la mayoría de los otros idiomas. Aparte de eso, es similar a otros lenguajes dinámicos con las siguientes excepciones:
- CFML contiene dos sintaxis, una sintaxis basada en etiquetas (no compatible con XML) y una sintaxis C llamada cfscript.
- Los arrays en CFML están indexados por uno y no por cero.
- CFML admite argumentos de función ordenados y con nombre o una combinación.
- CFML no tiene variables estáticas.
Diferencias con Adobe ColdFusion
Aunque Railo implementa CFML y es generalmente compatible con Adobe ColdFusion (ACF), el motor CFML original, hay algunas diferencias notables entre los dos:
- Railo es un software de código abierto para LGPL v2.1. ACF es una tecnología patentada.
- Railo utiliza una arquitectura de contexto web múltiple en comparación con el contexto web único de ACF.
- Railo le permite crear funciones personalizadas utilizando CFML estándar.
- Railo no puede descifrar (ni ejecutar) plantillas cifradas con el mecanismo de cifrado de ACF.
- Railo tiene un ciclo de lanzamiento significativamente más rápido para lanzamientos mayores, menores y de parches.
- En Railo, las áreas siempre tienen prioridad. En ACF, la creación de una variable llamada «Url» puede bloquear el acceso al espacio de URL. En Railo, puede acceder a la variable solo como «Variables».Url» se puede acceder.
- Railo solo busca CFCs en la ruta de la etiqueta personalizada si se ha definido en consecuencia en el administrador (en su lugar, hay una ruta de acceso CFC separada).
- Railo 4.x introduce una Interfaz de línea de comandos (CLI) que permite ejecutar scripts CFML desde la línea de comandos
- Railo permite el uso de métodos de objeto. Así que en lugar de usar el array Append(arr, «valor»), se puede escribir: arr.append («valor»). Append(«anotherValue»).