Autor(es) original(es) | J.J. Allaire | ||||
---|---|---|---|---|---|
Desarrollador(es) | Adobe Systems Incorporated | ||||
Lanzamiento inicial | 1995 ( 1995 ) | ||||
Versión(s) estable(s) | |||||
| |||||
Escrito en | Java | ||||
Sistema operativo | Multiplataforma | ||||
Disponible en | Inglés | ||||
Tipo | Servidor de aplicaciones | ||||
Licencia | Propiedad | ||||
Sitio web | adobe.com/products/coldfusion-family.html |
Adobe ColdFusion es una plataforma informática comercial de desarrollo rápido de aplicaciones web creada por JJ Allaire en 1995. [3] (El lenguaje de programación utilizado con esa plataforma también se denomina comúnmente ColdFusion, aunque se conoce con más precisión como CFML ). ColdFusion se diseñó originalmente para facilitar la conexión de páginas HTML simples a una base de datos . En la versión 2 (1996), se había convertido en una plataforma completa que incluía un IDE además de un lenguaje de scripting completo .
Una de las características distintivas de ColdFusion es su lenguaje de programación asociado, ColdFusion Markup Language (CFML). CFML se compara con los componentes de programación de ASP , JSP y PHP en cuanto a propósito y características, pero su sintaxis de etiquetas se parece más a HTML , mientras que su sintaxis de script se parece a JavaScript . ColdFusion se usa a menudo como sinónimo de CFML , pero hay servidores de aplicaciones CFML adicionales además de ColdFusion, y ColdFusion admite lenguajes de programación distintos de CFML, como Actionscript del lado del servidor y scripts integrados que se pueden escribir en un lenguaje similar a JavaScript conocido como CFScript .
ColdFusion, que originalmente era un producto de Allaire y se lanzó el 2 de julio de 1995, fue desarrollado por los hermanos Joseph J. Allaire y Jeremy Allaire . En 2001, Allaire fue adquirida por Macromedia , que a su vez fue adquirida por Adobe Systems Inc en 2005.
ColdFusion se utiliza con mayor frecuencia para sitios web o intranets basados en datos , pero también se puede utilizar para generar servicios remotos como servicios REST , WebSockets , servicios web SOAP o comunicación remota Flash . Es especialmente adecuada como tecnología del lado del servidor para ajax del lado del cliente .
ColdFusion también puede gestionar eventos asincrónicos como SMS y mensajería instantánea a través de su interfaz de puerta de enlace, disponible en ColdFusion MX 7 Enterprise Edition.
ColdFusion ofrece una serie de funciones adicionales listas para usar. Las principales son:
<CFINVOKE WEBSERVICE="http://host/tempconf.cfc?wsdl" METHOD="Celsius2Fahrenheit" TEMP="#tempc#" RETURNVARIABLE="tempf">
Otras implementaciones de CFML ofrecen una funcionalidad similar o mejorada, como la ejecución en un entorno .NET o la manipulación de imágenes.
El motor se escribió en C y, entre otras cosas, incluía un lenguaje de programación integrado (CFScript), módulos de complemento escritos en Java y una sintaxis muy similar a HTML. El equivalente a un elemento HTML, una etiqueta ColdFusion comienza con las letras "CF" seguidas de un nombre que indica cómo se interpreta la etiqueta en HTML. Por ejemplo, <cfoutput> para comenzar la salida de variables u otro contenido.
Además de CFScript y los complementos (como se describió), CFStudio proporcionó una plataforma de diseño con una pantalla WYSIWYG . Además de ColdFusion, CFStudio también admite la sintaxis en otros lenguajes populares para la programación backend, como Perl. Además de hacer que la funcionalidad backend esté fácilmente disponible para los no programadores, (versión 4.0 y posteriores en particular) se integró fácilmente con el servidor web Apache y con Internet Information Services .
Todas las versiones de ColdFusion anteriores a la 6.0 se escribieron con Microsoft Visual C++ . Esto significaba que ColdFusion se limitaba en gran medida a su ejecución en Microsoft Windows , aunque Allaire logró trasladar con éxito ColdFusion a Sun Solaris a partir de la versión 3.1.
La empresa Allaire fue vendida a Macromedia y, a continuación, Macromedia fue vendida a Adobe . Las versiones anteriores no eran tan robustas como las versiones disponibles a partir de la versión 4.0. [ ¿Hecho u opinión? ]
Con el lanzamiento de ColdFusion MX 6.0, el motor se había reescrito en Java y soportaba su propio entorno de ejecución, que se reemplazaba fácilmente a través de sus opciones de configuración con el entorno de ejecución de Sun. La versión 6.1 incluía la capacidad de codificar y depurar Macromedia Flash .
La versión 3, publicada en junio de 1997, incorporó etiquetas personalizadas, cfsearch/cfindex/cfcollection basadas en el motor de búsqueda Verity, el ámbito del servidor y la codificación de plantillas (llamada entonces "encriptación"). La versión 3.1, publicada en enero de 1998, agregó compatibilidad con RDS, así como un puerto para el sistema operativo Sun Solaris , mientras que ColdFusion Studio obtuvo una vista previa de página en vivo y un verificador de sintaxis HTML.
La versión 4, que se lanzó en noviembre de 1998, es cuando se cambió el nombre de "Cold Fusion" a "ColdFusion", posiblemente para distinguirlo de la teoría de fusión fría . La versión también agregó la implementación inicial de cfscript, soporte para bloqueo (cflock), transacciones (cftransaction), manejo de excepciones jerárquico (cftry/cfcatch), seguridad de sandbox, así como muchas etiquetas y funciones nuevas, incluidas cfstoredproc, cfcache, cfswitch y más.
La versión 4.5, publicada en noviembre de 1999, amplió la capacidad de acceder a recursos externos del sistema, incluidos COM y CORBA, y agregó compatibilidad inicial para la integración con Java (incluidos EJB, Pojo, servlets y Java CFX). También agregó la función getmetricdata (para acceder a información de rendimiento), información de rendimiento adicional en la salida de depuración de páginas, funciones de conversión de cadenas mejoradas y eliminación opcional de espacios en blanco.
La versión 5 se lanzó en junio de 2001 y agregó compatibilidad con consultas mejorada, nuevas funciones de generación de informes y gráficos, funciones definidas por el usuario y herramientas de administración mejoradas. Fue la última versión codificada para una plataforma específica y la primera versión de Macromedia después de la adquisición de Allaire Corporation , que se había anunciado el 16 de enero de 2001.
Antes de 2000, Edwin Smith, un arquitecto de Allaire en JRun y más tarde en Flash Player , Tom Harwood y Clement Wong iniciaron un proyecto con el nombre en código "Neo". [6] Este proyecto se reveló más tarde como un servidor ColdFusion reescrito completamente con Java . Esto facilitó la portabilidad y proporcionó una capa de seguridad en el servidor, porque se ejecutaba dentro de un entorno de ejecución de Java.
En junio de 2002, Macromedia lanzó la versión 6.0 del producto con un nombre ligeramente diferente, ColdFusion MX, lo que permitió asociar el producto tanto con la marca Macromedia como con su imagen de marca original. ColdFusion MX se reconstruyó completamente desde cero y se basó en la plataforma Java EE . ColdFusion MX también se diseñó para integrarse bien con Macromedia Flash mediante Flash Remoting.
Con el lanzamiento de ColdFusion MX, se lanzó la API de lenguaje CFML con una interfaz OOP .
Con el lanzamiento de ColdFusion 7.0 el 7 de febrero de 2005, se modificó la convención de nombres, y el nombre del producto pasó a ser "Macromedia ColdFusion MX 7" (el nombre en código de CFMX7 era "Blackstone"). CFMX 7 agregó formularios web basados en Flash y XForms , y un generador de informes que generaba archivos en Adobe PDF , así como en FlashPaper , RTF y Excel . El archivo de salida en Adobe PDF también está disponible como contenedor para cualquier página HTML, convirtiendo esa página en un documento imprimible de calidad. La edición empresarial también agregó Gateways . Estos proporcionan interacción con servicios de solicitud no HTTP, como servicios de mensajería instantánea, SMS, observadores de directorios y una ejecución asincrónica. La compatibilidad con XML se mejoró en esta versión para incluir la verificación de esquemas nativa.
ColdFusion MX 7.0.1 (nombre en código "Merrimack") agregó compatibilidad con Mac OS X , mejoras en los formularios Flash, compatibilidad con RTF para CFReport, la nueva función CFCPRoxy para la integración con Java/CFC y más. ColdFusion MX 7.0.2 (nombre en código "Mystic") incluyó funciones avanzadas para trabajar con Adobe Flex 2, así como más mejoras para CF Report Builder.
El 30 de julio de 2007, Adobe Systems lanzó ColdFusion 8 , eliminando "MX" de su nombre. [7] Durante la prueba beta, el nombre en clave utilizado fue "Escorpio" (el octavo signo del zodíaco y la octava iteración de ColdFusion como producto comercial). Más de 14.000 desarrolladores de todo el mundo participaron activamente en el proceso beta, muchos más evaluadores de los 5.000 que Adobe Systems esperaba originalmente. El equipo de desarrollo de ColdFusion estaba formado por desarrolladores con sede en Newton/Boston, Massachusetts y en Bangalore, India.
Algunas de las nuevas características son la etiqueta CFPDFFORM, que permite la integración con formularios de Adobe Acrobat , algunas funciones de manipulación de imágenes, la integración con Microsoft .NET y la etiqueta CFPRESENTATION, que permite la creación de presentaciones dinámicas mediante Adobe Acrobat Connect , la solución de colaboración basada en Web anteriormente conocida como Macromedia Breeze . Además, ColdFusion Administrator para la versión Enterprise se entrega con monitorización de servidor integrada. ColdFusion 8 está disponible en varios sistemas operativos , incluidos Linux , Mac OS X y Windows Server 2003 .
Otras adiciones a ColdFusion 8 son widgets Ajax integrados , manipulación de archivos comprimidos (CFZIP), integración con el servidor Microsoft Exchange (CFEXCHANGE), manipulación de imágenes incluyendo generación automática de CAPTCHA (CFIMAGE), subprocesamiento múltiple, configuraciones por aplicación, feeds Atom y RSS , mejoras en los informes, bibliotecas de cifrado más fuertes, mejoras en la matriz y la estructura, interacción mejorada con la base de datos, amplias mejoras en el rendimiento, capacidades de manipulación y fusión de PDF (CFPDF), depuración interactiva, soporte de base de datos integrado con Apache Derby y un CFSCRIPT más compatible con ECMAScript .
Para el desarrollo de aplicaciones ColdFusion, se encuentran disponibles varias herramientas: principalmente Adobe Dreamweaver CS4, Macromedia HomeSite 5.x, CFEclipse, Eclipse y otras. Para estas aplicaciones, se encuentran disponibles "actualizadores de etiquetas" que permiten actualizar su compatibilidad con las nuevas funciones de ColdFusion 8.
ColdFusion 9 (nombre en código: Centaur ) se lanzó el 5 de octubre de 2009. Las nuevas características de CF9 incluyen:
ColdFusion 10 (nombre en código: Zeus) se lanzó el 15 de mayo de 2012. Las características nuevas o mejoradas disponibles en todas las ediciones (Standard, Enterprise y Developer) incluyen (entre otras):
Las características nuevas o mejoradas adicionales en las ediciones ColdFusion Enterprise o Developer incluyen (entre otras):
Las listas anteriores se obtuvieron de las páginas del sitio web de Adobe que describen "nuevas funciones", tal como aparecen primero en los enlaces de la siguiente lista.
CF10 fue originalmente conocido con el nombre en código Zeus, después de que Adobe confirmara por primera vez que vendría en Adobe MAX 2010 y durante gran parte de su período de prelanzamiento. También se lo conocía comúnmente como "ColdFusion next" y "ColdFusion X" en blogs, Twitter, etc., antes de que Adobe finalmente confirmara que sería "ColdFusion 10". Durante gran parte de 2010, Adam Lehman, gerente de productos de ColdFusion, recorrió los EE. UU. organizando innumerables reuniones con clientes, desarrolladores y grupos de usuarios para formular un plan maestro para el próximo conjunto de características. En septiembre de 2010, presentó los planes a Adobe, donde recibieron el apoyo y la aprobación total de la alta gerencia. [8]
La primera versión beta pública de ColdFusion 10 se lanzó a través de Adobe Labs el 17 de febrero de 2012.
ColdFusion 11 (nombre en código: Splendor) se lanzó el 29 de abril de 2014.
Las características nuevas o mejoradas disponibles en todas las ediciones (Standard, Enterprise y Developer) incluyen:
ColdFusion 11 también eliminó muchas funciones que anteriormente se habían identificado simplemente como "obsoletas" o que ya no eran compatibles con versiones anteriores. Por ejemplo, la etiqueta CFLOG ofrecía desde hacía tiempo atributos de fecha y hora que estaban obsoletos (y eran redundantes, ya que la fecha y la hora siempre se registran). A partir de CF11, su uso no causaba que la etiqueta CFLOG fallara.
Adobe ColdFusion (versión 2016), nombre en código: Raijin (y también conocido genéricamente como ColdFusion 2016), se lanzó el 16 de febrero de 2016.
Las características nuevas o mejoradas disponibles en todas las ediciones (Standard, Enterprise y Developer) incluyen:
Adobe ColdFusion (versión 2018), conocido genéricamente como ColdFusion 2018, se lanzó el 12 de julio de 2018. [9] ColdFusion 2018 recibió el nombre en código Aether durante la versión preliminar. [10]
En marzo de 2023, Adobe había lanzado 16 actualizaciones [11] para ColdFusion 2018.
Las características nuevas o mejoradas disponibles en todas las ediciones (Standard, Enterprise y Developer) incluyen: [12]
Adobe ColdFusion (versión 2021) se lanzó el 11 de noviembre de 2020. ColdFusion 2021 tenía como nombre en código Project Stratus durante la versión preliminar.
Las características nuevas o mejoradas disponibles en todas las ediciones (Standard, Enterprise y Developer) incluyen:
Adobe lanzó ColdFusion 2023 el 17 de mayo de 2023.
Las nuevas funciones disponibles son las siguientes: [13]
En septiembre de 2017, Adobe anunció la hoja de ruta que anticipaba los lanzamientos en 2018 y 2020. [14] Entre las características clave anticipadas para el lanzamiento de 2016 se encontraban un nuevo monitor de rendimiento, mejoras en la programación asincrónica, soporte REST renovado y mejoras en el API Manager, así como soporte para CF2016 proyectado hasta 2024. En cuanto al lanzamiento de 2020, las características anticipadas en ese momento (en 2017) eran la configurabilidad (modularidad) de los servicios de aplicación CF, scripting renovado y soporte orientado a objetos, y más mejoras en el API Manager.
ColdFusion puede generar documentos PDF utilizando HTML estándar (es decir, no se necesita codificación adicional para generar documentos para imprimir). Los autores de CFML colocan HTML y CSS dentro de un par de etiquetas cfdocument (o etiquetas cfhtmltopdf, como novedad en ColdFusion 11). El documento generado puede luego guardarse en el disco o enviarse al navegador del cliente. ColdFusion 8 también introdujo la etiqueta cfpdf para permitir el control sobre los documentos PDF, incluidos los formularios PDF, y la fusión de archivos PDF. Sin embargo, estas etiquetas no utilizan el motor PDF de Adobe, sino que cfdocument utiliza una combinación de la biblioteca comercial JPedal Java PDF y la biblioteca Java gratuita y de código abierto iText , y cfhtmltopdf utiliza una implementación WebKit incorporada. [15]
ColdFusion originalmente no era un lenguaje de programación orientado a objetos como las versiones 3 y anteriores de PHP . ColdFusion entra en la categoría de lenguajes OO que no admiten herencia múltiple (junto con Java, Smalltalk, etc.). [16] Con el lanzamiento de MX (6+), ColdFusion introdujo la funcionalidad OO básica con la construcción del lenguaje de componentes que se asemeja a las clases en lenguajes OO. Cada componente puede contener cualquier número de propiedades y métodos. Un componente también puede extender otro ( Herencia ). Los componentes solo admiten herencia simple. El conjunto de características de manejo de objetos y la mejora del rendimiento se han producido con versiones posteriores. Con el lanzamiento de ColdFusion 8, se admiten interfaces de estilo Java . Los componentes de ColdFusion usan la extensión de archivo cfc para diferenciarlos de las plantillas de ColdFusion (.cfm).
Los métodos de componentes pueden estar disponibles como servicios web sin necesidad de codificación ni configuración adicionales. Todo lo que se requiere es que el acceso de un método se declare como "remoto". ColdFusion genera automáticamente un WSDL en la URL del componente de esta manera: http://path/to/components/Component.cfc?wsdl. Además de SOAP, los servicios se ofrecen en formato binario Flash Remoting.
Los métodos que se declaran remotos también se pueden invocar mediante una solicitud HTTP GET o POST. Considere la solicitud GET que se muestra.
http://ruta/a/componentes/Component.cfc?method=search&query=your+query&mode=strict
Esto invocará la función de búsqueda del componente, pasando "su consulta" y "estricto" como argumentos.
Este tipo de invocación es ideal para aplicaciones compatibles con Ajax . ColdFusion 8 introdujo la capacidad de serializar estructuras de datos de ColdFusion en formato JSON para su uso en el cliente.
El servidor ColdFusion generará automáticamente la documentación de un componente si navega hasta su URL e inserta el código apropiado dentro de las declaraciones del componente. Esta es una aplicación de introspección de componentes, disponible para los desarrolladores de componentes ColdFusion. El acceso a la documentación de un componente requiere una contraseña. Un desarrollador puede ver la documentación de todos los componentes conocidos por el servidor ColdFusion navegando hasta la URL de ColdFusion. Esta interfaz se parece a la documentación HTML de Javadoc para las clases Java.
ColdFusion ofrece varias formas de implementar etiquetas de lenguaje de marcado personalizadas , es decir, aquellas que no están incluidas en el lenguaje central de ColdFusion. Estas son especialmente útiles para proporcionar una interfaz familiar para diseñadores web y autores de contenido familiarizados con HTML pero no con la programación imperativa .
La forma tradicional y más común es mediante CFML. Una página CFML estándar se puede interpretar como una etiqueta, cuyo nombre de etiqueta corresponde al nombre del archivo con el prefijo "cf_". Por ejemplo, el archivo IMAP.cfm se puede utilizar como la etiqueta "cf_imap". Los atributos utilizados dentro de la etiqueta están disponibles en el ámbito ATTRIBUTES de la página de implementación de la etiqueta. Se puede acceder a las páginas CFML en el mismo directorio que la página que realiza la llamada, a través de un directorio especial en la aplicación web ColdFusion o a través de una etiqueta CFIMPORT en la página que realiza la llamada. El último método no requiere necesariamente el prefijo "cf_" para el nombre de la etiqueta.
Una segunda forma es el desarrollo de etiquetas CFX mediante Java o C++. Las etiquetas CFX tienen el prefijo "cfx_", por ejemplo "cfx_imap". Las etiquetas se agregan al entorno de ejecución de ColdFusion mediante el administrador de ColdFusion, donde los archivos JAR o DLL se registran como etiquetas personalizadas.
Por último, ColdFusion admite bibliotecas de etiquetas JSP de la especificación del lenguaje JSP 2.0. Las etiquetas JSP se incluyen en las páginas CFML mediante la etiqueta CFIMPORT.
La instalación estándar de ColdFusion permite la implementación de ColdFusion como un archivo WAR o un archivo EAR para su implementación en servidores de aplicaciones independientes, como Macromedia JRun e IBM WebSphere . ColdFusion también se puede implementar en contenedores de servlets como Apache Tomcat y Mortbay Jetty , pero debido a que estas plataformas no admiten oficialmente ColdFusion, dejan muchas de sus características inaccesibles. A partir de ColdFusion 10, Macromedia JRun fue reemplazado por Apache Tomcat .
Dado que ColdFusion es una aplicación Java EE, el código de ColdFusion se puede combinar con clases Java para crear una variedad de aplicaciones y utilizar bibliotecas Java existentes. ColdFusion tiene acceso a todas las clases Java subyacentes, admite bibliotecas de etiquetas personalizadas JSP y puede acceder a funciones JSP después de recuperar el contexto de la página JSP ( GetPageContext() ).
Antes de ColdFusion 7.0.1, los componentes de ColdFusion solo se podían utilizar en Java o .NET declarándolos como servicios web. Sin embargo, a partir de ColdFusion MX 7.0.1, los componentes de ColdFusion ahora se pueden utilizar directamente dentro de las clases Java mediante la clase CFCProxy. [17]
Recientemente, ha habido mucho interés en el desarrollo de Java utilizando lenguajes alternativos como Jython , Groovy y JRuby . ColdFusion fue una de las primeras plataformas de scripting que permitió este estilo de desarrollo de Java.
ColdFusion 8 admite de forma nativa .NET dentro de la sintaxis CFML. Los desarrolladores de ColdFusion pueden llamar a cualquier ensamblado .NET sin necesidad de volver a compilar ni modificar los ensamblados de ninguna manera. Los tipos de datos se traducen automáticamente entre ColdFusion y .NET (ejemplo: .NET DataTable → ColdFusion Query).
Una característica única para un proveedor de Java EE, ColdFusion 8 ofrece la posibilidad de acceder a los ensamblados .NET de forma remota a través de un proxy (sin el uso de .NET Remoting ). Esto permite a los usuarios de ColdFusion aprovechar .NET sin tener que instalarlo en un sistema operativo Windows.
Las siglas de ColdFusion Markup Language son CFML . Cuando las plantillas de ColdFusion se guardan en el disco, tradicionalmente se les asigna la extensión .cfm o .cfml. La extensión .cfc se utiliza para los componentes de ColdFusion. La extensión original era DBM o DBML, que significaba lenguaje de marcado de base de datos. Cuando se habla de ColdFusion, la mayoría de los usuarios utilizan el acrónimo CF y este se utiliza para numerosos recursos de ColdFusion, como grupos de usuarios (CFUG) y sitios.
CFMX es la abreviatura común para las versiones 6 y 7 de ColdFusion (también conocidas como ColdFusion MX).
ColdFusion se originó como una tecnología patentada basada en estándares de la industria de la tecnología web. Sin embargo, se está convirtiendo en una tecnología menos cerrada debido a la disponibilidad de productos de la competencia. Estos productos alternativos incluyen:
Estos están descontinuados o fuera de producción:
Se puede argumentar que ColdFusion está incluso menos limitado por la plataforma que Java EE o .NET, simplemente porque ColdFusion se ejecutará sobre un servidor de aplicaciones .NET (New Atlanta), o sobre cualquier contenedor de servlets o servidor de aplicaciones Java EE (JRun, WebSphere , JBoss , Geronimo , Tomcat , Resin Server , Jetty (servidor web) , etc.). En teoría, una aplicación ColdFusion podría trasladarse sin cambios de un servidor de aplicaciones Java EE a un servidor de aplicaciones .NET.
En marzo de 2013, un problema conocido que afectaba a ColdFusion 8, 9 y 10 dejó la Base de Datos Nacional de Vulnerabilidades expuesta a ataques. [18] La vulnerabilidad había sido identificada y Adobe había publicado un parche para CF9 y CF10 en enero. [19]
En abril de 2013, Linode atribuyó una vulnerabilidad de ColdFusion a una intrusión en el sitio web del panel de control de Linode Manager. [20] Adobe había publicado un boletín de seguridad y una revisión para este problema una semana antes. [21]
En mayo de 2013, Adobe identificó otra vulnerabilidad crítica, que al parecer ya se estaba explotando, que afectaba a todas las versiones recientes de ColdFusion en cualquier servidor en el que no se hubiera bloqueado el administrador basado en web y la API. La vulnerabilidad permite a usuarios no autorizados cargar scripts maliciosos y potencialmente obtener el control total del servidor. [22] Seis días después, Adobe publicó un boletín de seguridad y una revisión para este problema. [23]
En abril de 2015, Adobe corrigió una vulnerabilidad de secuencias de comandos entre sitios (XSS) [24] en Adobe ColdFusion 10 antes de la actualización 16, y en ColdFusion 11 antes de la actualización 5, que permitía a atacantes remotos inyectar secuencias de comandos web o HTML arbitrarios; [25] sin embargo, solo pueden explotarla los usuarios que se hayan autenticado a través del panel de administración. [26]
En septiembre de 2019, Adobe corrigió dos vulnerabilidades de inyección de comandos (CVE-2019-8073) que permitían código arbitrario y un cruce de callejones (CVE-2019-8074).