Accessibility

Community Publishing

Created:
2009-10-29
User Level:
Beginner
Products:
ColdFusion 9


Presentando Adobe ColdFusion 9

Presentando Adobe ColdFusion 9

Ben Forta

forta.com

Por cerca de quince años, ColdFusion constantemente ha elevado el nivel de productividad del desarrollo de aplicaciones con cada lanzamiento. Este no sucede por accidente. De hecho, cuando se planifica cada nueva versión, el equipo de desarrollo de ColdFusion se reúne con numerosos clientes y socios para determinar exactamente como el producto se usa, para así ser capaz de enfocarse en mejoras que tienen un valor real para los usuarios. Es así como características innovadoras como reportes, puertas de enlaces de eventos (event gateways) y monitoreo del servidor se vuelven una realidad.

 En este artículo me gustaría presentarles algo de lo nuevo y excitante que viene en ColdFusion 9.

 Requisitos básicos.

* ColdFusion 9.

 

ColdFusion funcionalidad expuesta como servicios.

¿Alguna vez te has detenido a pensar cuanta funcionalidad existe dentro de ColdFusion? Nosotros usamos <CFQUERY> para trabajar con bases de datos, permitiéndonos construir sentencias SQL altamente dinámicas y flexibles así como también el almacenamiento en cache de consultas y mas, todo esto es propulsado por una sofisticada maquina interna. Nosotros usamos etiquetas como <CFCHART> y esperamos que los gráficos sean generados y mostrados, sin nunca prestar atención al hecho de que un motor entero basado en Java de generación de gráficos está incorporado y es el que hace el trabajo pesado. Lo mismo es cierto para <CFPDF>, <CFIMAGE>, <CFSEARCH>, el soporte para SOAP y servicios Web, XMPP e integración JMS, y muchas cosas más. Mientras que la mayoría de nosotros nos enfocamos en el lenguaje CFML, la verdad es que la mayor parte de ColdFusion, la mayoría de lo que es instalado, no es el lenguaje sino el extenso surtido de servicios integrados, servicios que son expuestos a ColdFusion mediante etiquetas CFML y funciones.

¿Pero qué sucedería si estos servicios podrían ser accedidos fuera de ColdFusion? ¿Si un desarrollador de PHP en el siguiente cubículo necesitara combinar archivos PDF, por que el no podría invocar los servicios de manipulación PDF en ColdFusion? ¿Si una desarrolladora de .NET necesitara acceso a Microsoft Exchange, por qué ella no podría usar las fantásticas etiquetas de Exchange en ColdFusion (en vez de tener que escribir un montón de código en .NET, y en realidad digo que es un montón de código)?

Y mientras estamos en esto. ¿Qué hay acerca del desarrollador de Flex, el cual necesita generar un mensaje de correo electrónico? Flex (en realidad Flash) no tiene librerías SMTP integradas, y así los desarrolladores de Flex quienes necesitan generar programáticamente mensajes de correo electrónico lo hacen escribiendo código del lado del servidor. Para los desarrolladores de ColdFusion esto significa crear un componente de ColdFusion el cual acepta datos desde una aplicación Flex (probablemente a través de una llamada AMF) y entonces pasar esos mismos datos a una etiqueta <CFMAIL>. En otras palabras, el código que se escribe en el servidor es solo capaz de pasar datos desde Flex en el cliente a la etiqueta <CFMAIL>. ¿Entonces por qué no podría un desarrollador de Flex invocar <CFMAIL> directamente, pasándole parámetros en pares nombre=valor para que este pueda generar un correo electrónico?

 Bueno, con el próximo ColdFusion 9, la respuesta a todas estas preguntas es si. ¡Todo esto es posible! En ColdFusion 9 estamos exponiendo muchos de estos servicios integrados vía AMF (Flash Remoting) y SOAP (Web Services). Los desarrolladores de PHP, .NET y Java pueden invocar los servicios Web incorporados en ColdFusion, pasar datos, y obtener resultados. Además los desarrolladores de Flex pueden incluir un archivo de SWC de ColdFusion exponiendo clases de ActionScript y etiquetas MXML mediante sencillas llamadas abstractas AMF. Simplemente incluye el archivo SWC en tu proyecto de Flash Builder, define el nombre de espacio para las etiquetas de ColdFusion así:

<mx:Application xmlns:cf=”coldfusion.service.mxml.*”>

 Y tú tendrás acceso a las etiquetas CFML dentro de tu proyecto Flex. Por ejemplo, para enviar un correo electrónico podrías usar lo siguiente:

<cf:Mail id="cfMail" to="{para.text}" from="{de.text}" subject="{asunto.text}"

content="{body.text}" type="html" />

 El código de arriba crea una instancia del objeto Mail y lo llama “cfMail”, luego ajusta los valores de las propiedades to, from, subject con los valores de otros objetos de Flex. Para enviar el correo todo lo que necesitas es invocar lo siguiente (probablemente cuando se da clic sobre el botón Enviar).

cfMail.execute();

 Hay mucho mas acerca de este tema de la funcionalidad “ColdFusion como Servicios”, incluyendo muchos servicios más siendo expuestos, y un sofisticado modelo de seguridad. Pero lo más destacable es que ColdFusion está ahora más listo que nunca para ser un recurso aun mas valioso para los desarrolladores de Flex y AIR.

 

Ejecutando código en el inicio del servidor.

ColdFusion puede ejecutar código cuando una aplicación comienza o termina, cuando una sesión comienza o termina, cuando una petición comienza o termina y más. ¿Pero qué sucedería si necesitas ejecutar código cuando el servidor inicia? Garantizado, este no es un caso de uso común, pero cuando se necesita, hemos tenido que usar onApplicationStart para esto, probablemente haciendo algo como esto:

<cfif not IsDefined("SERVER.myVar")>
    ...
</cfif>

 ColdFusion 9 agrega la habilidad de definir el código que será ejecutado usando onServerStart. Por defecto este es un método llamado onServerStart en el archivo server.cfc. Pero, actualmente, este puede estar en cualquier componente de ColdFusion, incluyendo Application.cfc. En el administrador de ColdFusion tú puedes apuntar al archivo CFC y el método que será invocado, y ColdFusion ejecutara el código en el inicio del servidor antes de cualquier petición.

 

Trabajando con hojas de cálculo en ColdFusion.

Las hojas de cálculo son clave para casi cualquier todo tipo de negocios y organizaciones, los desarrolladores de ColdFusion han buscado por largo tiempo una manera de acceder y manipular datos de hojas de cálculo programáticamente. La verdad es, ColdFusion ha soportado el acceso a hojas de cálculo por un buen tiempo en varias formas – es posible acceder archivos de Excel desde un controlador ODBC, y es posible generar estos archivos usando CFReport así como también generar contenido HTML o CSV y entonces ajustar el tipo MIME apropiado para forzar al navegador a mostrar los datos usando Excel.

Pero los desarrolladores de ColdFusion han pedido más – un mayor y mejor control, la habilidad de leer y escribir partes especificas de los archivos de hojas de cálculo. Y como ha sido demostrador en mis presentaciones de grupos de usuarios de la semana pasada, esto esta ciertamente planeado para ColdFusion 9.

Así como lo hicimos con la funcionalidad de manipulación de imágenes de ColdFusion, las hojas de cálculo en ColdFusion son manipuladas usando las etiquetas o funciones, o algunas combinaciones de ambas. La etiqueta <CFSPREADSHEET> se usa para leer una página de una hoja de cálculo (como un objeto hoja de cálculo, una consulta, una cadena CSV, o HTML), escribir paginas a archivos XLS, y agregar paginas a archivos XLS. Las mas 30 funciones como SpreadsheetSetCellValue(), SpreadSheetAddRow(), y SpreadsheetCellFormula() permiten para una manipulación de hojas de cálculo mas granular, y puede ser usada en conjunción con funciones como SpreadSheetNew() para crear un nuevo objeto de hoja de cálculo, y SpreadsheetInfo() lo cual retorna el titulo, nombres de hojas, ultima fecha y hora de grabación, y más.

Aquí algunos de los ejemplos que use en mis presentaciones. Este primer ejemplo lee una hoja de cálculo entera como una consulta y luego hace el volcado de sus contenidos:

<!--- Read spreadsheet --->

<cfspreadsheet action="read" src="Sales.xls" query="myQuery">

<cfdump var="#myQuery#">

 Este próximo ejemplo lee una celda específica, en una hoja especifica y devuelve el contenido de la misma a una variable.

<!--- Read a spreadsheet cell --->

<cfspreadsheet action="read" src="Sales.xls" name="myVar" sheet="1" rows="C" columns="3">

<cfdump var="#myVar#">

 <CFSPREADSHEET> es también usada para escribir o (sobrescribir) una hoja de cálculo, como se muestra aquí:

<!--- Write spreadsheet --->

<cfspreadsheet action="write" overwrite="true" filename="Sales.xls" name="sObj" />

 Para actualizar una celda especifica, necesitas leer, actualizar y guardarla, así:

<!--- Read spreadsheet --->

<cfspreadsheet action="read" src="Sales.xls" name="sObj" />

<!--- Set cell value --->

<cfset spreadsheetSetCellValue(sObj, FORM.sales, FORM.row, FORM.col)>

<!--- Write spreadsheet --->

<cfspreadsheet action="write" overwrite="true" filename="Sales.xls" name="sObj" />

 Este ejemplo usa campos de formulario para especificar la fila, columna y valor. Ahora para un ejemplo más completo, crear y formatear una hoja de cálculo desde la nada. Empezaremos con un simple Application.cfc para definir el origen de datos que se necesitara para esta aplicación:

<cfcomponent>

<cfset this.datasource="cfartgallery">

</cfcomponent>

 Ahora para la manipulación de hojas de datos :

<!--- Get data --->

<cfquery name="ArtOrders">

    SELECT orderid, customerfirstname, customerlastname, total

    FROM orders

    ORDER BY orderid

</cfquery>

<!--- Create new spreadsheet --->

<cfset sObj=SpreadsheetNew()>


<!--- Create header row --->

<cfset SpreadsheetAddRow(sObj, "Order,First Name,Last Name,Amount")>

<cfset SpreadsheetFormatRow(sObj, {bold=TRUE, alignment="center"}, 1)>


<!--- Add orders from query --->

<cfset SpreadsheetAddRows(sObj, ArtOrders)>


<!--- Figure out row for formula, 2 after data --->

<cfset rowDataStart=2>

<cfset rowDataEnd=ArtOrders.recordCount+1>

<cfset rowTotal=rowDataEnd+2>

<cfset totalFormula="SUM(D#rowDataStart#:D#rowDataEnd#)">


<!--- Add total formula --->

<cfset SpreadsheetSetCellValue(sObj, "TOTAL:", rowTotal, 3)>

<cfset spreadsheetSetCellFormula(sObj, totalFormula, rowTotal, 4)>


<!--- Format amount column as currency --->

<cfset SpreadsheetFormatColumn(sObj, {dataformat="$00000.00"}, 4)>


<!--- Save it --->

<cfspreadsheet action="write" name="sObj" filename="Orders.xls"

overwrite="true">

 Una vez más, empezamos con una consulta a la base de datos. Entonces, SpreadsheetNew() se usa para crear un nuevo objeto de hojas de cálculo.

El código entonces crea el encabezado de la fila. SpreadsheetAddRow() se usa para agregar una fila especifica, los encabezados de columna (como no se especifico numero de fila, SpreadsheetAddRow() agrega la fila a la siguiente fila libre, la primera). SpreadsheetFormatObject() se usa entonces para formatear la fila 1. Esta función acepta una estructura (la cual aquí es implícitamente creada).

Ahora vienen los datos. SpreadsheetAddRows() agrega toda la consulta a la hoja de cálculo (de nuevo, como no se especifico una columna los datos se agregan a la siguiente fila libre).

Ahora para la formula la cual agregara el total a todas las ordenes. Así para no tener que codificar la fila, unas pocas sentencias con <cfset> se usan para calcular la primera y la última fila de datos, y la fila para el total (la 2da fila después del final de los datos, para dejar una fila vacía entre los datos y el total). Se puede también evitar codificar la formula, así entonces en vez de usar SUM(D2:D24), las variables de fila se usan para construir la cadena de la formula dinámicamente. SpreadSheetSetCellValue() se usa para agregar un titulo, y SpreadsheetSetCellFormula() inserta la formula.

Ahora, la cuarta columna, conteniendo la cantidad de órdenes y el total calculado, se formatea para que sea visualizada con el formato de moneda usando SpreadsheetFormatColumn(). Todo lo que falta por hacer es grabar el archivo usando <cfspreadsheet>. <cfspreadsheet> y sus más de 30 funciones soportadas pueden hacer mucho más, pero esto te deberá dar una probada de lo que es posible usando esta innovadora nueva característica.

 

Definiendo un origen de datos predeterminado.

Mira este fragmento de código. ¿Nota algo raro acerca de esta?

<cfquery name="Art">

SELECT *

FROM art

ORDER BY ArtName

</cfquery>

 

Si, a la etiqueta <CFQUERY> en el fragmento de código anterior le falta el atributo DATASOURCE. Y si, este código funciona. ¿Por qué? Observe el código de este archivo Application.cfc:

<cfcomponent>

<cfset this.datasource="cfartgallery">

</cfcomponent>

 En ColdFusion 9 tú puedes ahora especificar un origen de datos predeterminado escribiendo el valor de this.datasource en Application.cfc. El origen de datos especificados se convierte en el predeterminado para todas las <CFQUERY>,<CFSTOREDPROC>, y otras etiquetas que esperan que se determine un origen de datos. Por supuesto, el origen de datos pueden ser también especificados manualmente si se necesita, y un origen de datos especificado sobrescribirá el predeterminado de la aplicación.

Este es una de esas mejoras sencillas, que simplemente son útiles. Y, como explicare luego en otro articulo, esta también tiene otro importante propósito.

 

ORM – El replanteamiento de la integración de base de datos.

La integración con bases de datos es una marca distintiva de las aplicaciones de ColdFusion. Ciertamente, la etiqueta <CFQUERY> fue una de las primeras agregadas al lenguaje, y hasta este día sigue siendo una de las más usadas. Hay también una desventaja real con este tipo de integración de bases de datos. Después de todo, considere que le sucedería a su código si el nombre de una tabla cambiara, o si las columnas fueran reestructuradas y divididas, o si todos los esquemas fueran actualizados. Tenebroso, ¿Verdad? La desventaja de cómo la mayoría de nosotros integramos bases de datos en nuestras aplicaciones de ColdFusion es que tenemos la tendencia de escribir código especifico para la base de datos aun en el nivel del cliente, el código que genera la salida a pantalla o cuando se trabaja con campos de formulario, por ejemplo. Además, nosotros inevitablemente debemos escribir SQL específico para un DBMS, y ese código específico para un DBMS necesita ser manejado por nuestras aplicaciones.

Antes de ir más lejos, debo señalar que <cfquery> no va a desaparecer, y que esta sigue siendo una de las opciones de integración con bases de datos más simple y poderosa. Para muchos de nosotros, y para muchas aplicaciones, esta etiqueta permanece siendo altamente apropiada. Pero, habiendo dicho eso, en ColdFusion 9 estamos agregando soporte para una manera más novedosa de pensar acerca de la integración con bases de datos, utilizando Object Relational Mapping (ORM). El soporte de ColdFusion para ORM está construido sobre Hibernate, la implementación de ORM mas importante en el desarrollo de Java, en efecto, Hibernate forma parte de la siguiente versión de ColdFusion, y es expuesto mediante componentes de ColdFusion y elementos del lenguaje.

El soporte para ORM en ColdFusion requiere una cobertura extensiva, y esto esta más allá del alcance de este articulo, pero aquí están los conceptos básicos. En ORM, tú nunca escribes sentencias SQL, y nunca realmente consideras tablas de filas y columnas, al menos no cuando escribes código del cliente. En vez de eso, los desarrolladores que usan ORM trabajan con objetos. Por ejemplo, una tabla que contiene books con columnas llamadas name, title, author e ISBN, tendría un objeto correspondiente con las mismas propiedades. Cuando se usa ORM, en vez de recuperar una fila de una tabla, usted recuperaría un objeto book (el cual es llenado automáticamente por los contenidos de la fila de la tabla). Para recuperar todas las filas, no usaras SELECT *FROM Books, en cambio usaras funciones de Entidad para solicitar una matriz de objetos books, llenados y listos para ser utilizados. Y entonces en vez de referirte a los nombres de columna en tu código, usted utilizaría métodos Get en los objetos que sean retornados. Esto es actualmente mucho menos confuso de cómo se escucha, así que veamos un ejemplo. Primero el archivo Application.cfc

<cfcomponent>

<cfset this.ormenabled=true>

<cfset this.datasource="cfbookclub">

</cfcomponent>

 this.datasource se usa para definir el origen de datos a ser definido, y entonces this.ormenabled se ajusta a TRUE para activar el soporte ORM.

 Entonces necesitaremos un objeto que representa la tabla que será usada, y en ColdFusion los objetos son implementados como componentes de ColdFusion (si estás trabajando con múltiples tablas tu necesitarías múltiples CFCs, uno para cada tabla). Aquí está el código de Books.cfc el cual hace el mapeo en los orígenes de datos especificados:

<cfcomponent persistent="true">

<cfproperty name="BOOKID" column="BOOKID" datatype="integer" length="10" />

<cfproperty name="AUTHORID" column="AUTHORID" datatype="integer" length="10" />

<cfproperty name="TITLE" column="TITLE" datatype="string" length="255" />

<cfproperty name="BOOKDESCRIPTION" column="BOOKDESCRIPTION" datatype="clob" length="2147483647" />

<cfproperty name="BOOKIMAGE" column="BOOKIMAGE" datatype="string" length="50" />

<cfproperty name="THUMBNAILIMAGE" column="THUMBNAILIMAGE" datatype="string" length="50" />

<cfproperty name="ISSPOTLIGHT" column="ISSPOTLIGHT" datatype="character" length="1" />

<cfproperty name="GENRE" column="GENRE" datatype="string" length="50" />

</cfcomponent>

 Dese cuenta que no hay métodos (funciones) en este CFC. Hay solo etiquetas <cfproperty> que corresponden a columnas de la tabla. Y actualmente, las etiquetas <cfproperty> no son opcionales, y si son omitidas ColdFusion leerá la tabla de la base de datos para definir implícitamente las propiedades para ti. También, note que el CFC es denominado Books.cfc, así este se mapea a la tabla Libros. Si el nombre de la tabla cambia, o si usted necesita usar un nombre de CFC diferente, usted podría usar el atributo opcional de tabla <cfcomponent> para especificar el nombre de la tabla que se usara.

Oh, y es válido notar que el nuevo ColdFusion Builder (mas acerca de eso en un momento) viene con asistentes para generar estos CFCs de tablas para ti.

Y finalmente, aquí esta como recuperar los datos de Books. Primero recuperaremos todos los books (esto es equivalente a SELECT *, pero en vez de devolver una consulta, una matriz de objetos books es devuelta.)

<!--- Get data --->

<cfset data=EntityLoad("Books")>

<!--- Display titles --->

<cfloop from="1" to="#ArrayLen(data)#" index="i">

<cfoutput>#data[i].GetTitle()#<br></cfoutput>

</cfloop>

 Por supuesto, ordenar, filtrar y más todo es soportado. Por ejemplo, para recuperar libros con un autor id de 10 (equivalente a la clausula SQL WHERE) tú podrías usar lo siguiente:

<!--- Get data --->

<cfset data=EntityLoad("Books", {authorid=10})>

 Fíjese que para acceder la propiedad Title, un método GetTitle se usa. Este es un getter, y es automáticamente creado por ColdFusion. Hay también setters, usados para ajustar propiedades con un objeto. Para guardar un objeto nuevo o actualizarlo usted simplemente haría lo siguiente:

<cfset EntitySave(data)>

 Esto trabajaría para insertar o actualizar. Solo guarde el objeto, ColdFusion e Hibernate figuraran si actualizar una fila existente o insertaran una nueva.

Y lo hemos hecho aun más fácil para romper las barreras entre usar ORM y trabajar con las consultas (por ejemplo, para ser capaz de usar, y mas), solo usa la función EntityToQuery() para convertir matrices básicas de objetos de entidades para consultas familiares ColdFusion.

 Hay mucho mas que se podría comentar acerca de ORM e Hibernate y la integración en ColdFusion. Y ColdFusion los desarrolladores tienen acceso para todo de Hibernate, sea esto soporte para la tablas relacionales, carga diferida, cacheo, optimización de consultas (optimizando el Hibernate Query Language directamente), controlando todos los ajustes ORM, y mucho mas, también. ColdFusion 9 te da el poder de Hibernate con la productividad que es única de ColdFusion.

 

El nuevo ámbito local de ColdFusion .

Los desarrolladores de ColdFusion han conocido por mucho tiempo que para asegurarse que una variable local sea local se la usa la palabra clave “var” para definirlas. Aquí hay un ejemplo:

<cffunction name="miFuncion">

<cfset var miVariableSegura = 1>

<cfset miVariableInsegura = 1>

</cffunction>

En el fragmento de código anterior, dos variables son creadas. La primera variable usa la palabra clave var para asegurarse que la variable es local a la función, y si el mismo nombre de variable existe en algún otro lugar esta no será sobrescrita. La segunda variable no usa var, y como tal no es una variable local, entonces un conflicto con el nombre de variables ciertamente puede suceder. Es así, cuando se crean funciones definidas por el usuario (User Defined Functions o UDFs) o métodos de componentes de ColdFusion, la regla siempre ha sido prefijar las variables locales con “var”.

¿Pero qué es exactamente una variable que se define con var? ¿En qué ámbito esta variable está? ¿Y cómo es accedido usando notación de ámbito explicita? Las respuestas a todas estas preguntas son algo confusas, parcialmente porque el ámbito de variable local no se usa como cualquier otro ámbito el cual siempre el cual es siempre designado mediante el uso del prefijo del ámbito (VARIABLES.miVariable, FORM.miVariable, SESSION.miVariable, etc.).

ColdFusion 9 simplifica el uso del ámbito local (sin dañar la funcionalidad del código existente) mediante la definición explicita de un ámbito local que es intuitivamente llamado local. Aquí está la misma variable local definida antes, pero usando el ámbito LOCAL en vez de var:

<cfset LOCAL.miVariableSegura = 1>

¿Pero qué sucedería si usas var? Bueno, simplemente funcionara. Mire los siguientes ejemplos:

<CFSET>

statements:

<cfset local.miVar1=1>

<cfset var miVar1=1>

Ambos de estos fragmentos de código hacen exactamente la misma cosa. Las variables con el prefijo var son ahora automáticamente definidas en el ámbito local. Entonces una variable definida como:

<cfset var miVariableSegura=1>

Puede ser acezada con toda seguridad como

<cfoutput>#LOCAL.miVariableSegura#</cfoutput>

 Es una forma ordenada, sencilla e intuitiva, y es totalmente compatible hacia atrás. Y, si tú tienes una variable llamada “local” esta todavía funcionara – la variable se convertirá en LOCAL.local, y como el ámbito LOCAL es el predeterminado en la cadena de evaluación esta declaración funcionara.

Oh, en cambio. La palabra clave “var” solía solo ser soportada al comienzo de las funciones y métodos, así era que todas las variables locales tenían que ser definidas anticipadamente. Esta limitación se ha removido en ColdFusion 9.

 

Administración de servidor simplificada

ColdFusion 8 introdujo el monitoreo para uno y varios servidores. Esta aplicación basada en Flex proveía acceso a toda clase de características de ColdFusion, alertas, manejo proactivo de problemas, y más.

ColdFusion 9 lleva esto un nivel más allá con una nueva herramienta llamada “ColdFusion Server Manager”. Esta aplicación basada en AIR te permite monitorear tantos servidores como sean necesarios (incluyendo instancias individuales de ColdFusion en una configuración multi-instancias) y además ofrece alertas desplegables cuando existan problemas, aplicar parches de seguridad a uno o más servidores, y también te permite seleccionar dos servidores de ColdFusion para comparar sus ajustes de configuración y resaltar cualquier diferencia entre ellos.

Ah, y antes de que usted se lo pregunte, aquí están las respuestas a las tres preguntas que se realizan más frecuente:

* No, esta no es una utilidad vendida separadamente. Esto es parte de ColdFusion mismo (instalado a través de un vínculo en la Administración de ColdFusion).
* La administración de Servidor de ColdFusion usa APIs agregadas a ColdFusion 9, por lo tanto esta aplicación no funcionara con ColdFusion 8 o versiones anteriores.
* No, no hemos hecho ninguna decisión respecto a versiones del producto, no hemos decidido si esta será una característica disponible solo en la versión Empresarial o no.

La gran noticia: ColdFusion tendrá un Entorno de Desarrollo Integrado (IDE)

Si todo de lo que hemos visto hasta ahora no ha sido suficiente, la siguiente “característica” es probablemente una de las que más emociona a los desarrolladores de ColdFusion. ColdFusion tendrá su propia IDE, ColdFusion Builder. Yo introduje esta nueva herramienta en mi artículo “Introducing Adobe ColdFusion Builder beta”, pero aquí hay una lista rápida de los puntos importantes de resaltar:

* ColdFusion Builder está construido sobre Eclipse , la misma plataforma sobre la que funciona Flash Builder, y está diseñada para ser instalada junto con Flash Builder para tener una integración transparente.
* ColdFusion Builder puede trabajar con servidores locales o remotos, y puede también detener, iniciar, reiniciar, administrar, y monitorear estos servidores.
* Entre las características destacables de ColdFusion Builder hay una interfaz de código enriquecida de colores, ayuda sensitiva al contexto, ayuda de atributos de etiquetas, y más.
* ColdFusion Builder incluye barras de tareas con atajos para cosas como envolver bloques de código dentro de una etiqueta <cfoutput> y más.
* RDS está integrado, también un depurador de código, un visor de archivos de bitácora, y más.
* ColdFusion Builder tiene un modelo de extensibilidad integrada el cual permite que se escriban extensiones en CFML (en vez de Java, la forma en que las extensiones para Eclipse se escriben usualmente). Numerosas extensiones de ColdFusion se han escrito y se han publicado en http://www.riaforge.org

ColdFusion Builder ha estado en planeación por largo tiempo, y nosotros tenemos grandes planes para mejorar esta aplicación aun más en el futuro.

 

Donde ir de aquí.

Hay mucho más que hablar de ColdFusion 9 que están más allá de lo que he cubierto aquí. Desde la integración de SharePoint y servidores de portal, mejoras importantes del lenguaje, soporte para aplicaciones desconectadas de AIR y mucho mas, ColdFusion 9 es un lanzamiento extenso, lleno de características útiles y poderosas con la intención de hacer su trabajo mucho más productivo que nunca antes.

Si tú quieres aprender más acerca de ColdFusion 9 y ColdFusion Builder, lo mejor que puedes hacer es descargar ColdFusion 9 y la versión beta pública de ColdFusion Builder  ahora. Y para una introducción rápida a ColdFusion Builder, lee mi articulo Introducing ColdFusion Builder beta.

 

Acerca del autor.

Ben Forta es un evangelista sénior en Adobe y el autor de numerosos libros incluyendo ColdFusion Web Application Construction Kit y su secuela Advanced ColdFusion Application Development, así como también numerosos libros en SQL, JavaServer Pages, WAP, desarrollo de Windows y más. Ben es co-autor del material de entrenamiento oficial de ColdFusion, las pruebas de certificación y las guías de estudio de Macromedia Press para estas pruebas, ahora el invierte una cantidad considerable de su tiempo dando seminarios, hablando y escribiendo acerca del desarrollo de aplicaciones a nivel mundial. Visite el blog de Ben para leer sus publicaciones regulares acerca de ColdFusion y muchos artículos más.

 

 

 

Creative Commons License
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License