Adobe ColdFusion — это коммерческая вычислительная платформа для быстрой разработки веб-приложений, созданная JJ Allaire в 1995 году. [3] ( Язык программирования , используемый с этой платформой, также обычно называется ColdFusion, хотя более точно известен как CFML .) ColdFusion изначально был разработан для упрощения подключения простых HTML- страниц к базе данных . К версии 2 (1996) он стал полноценной платформой, которая включала IDE в дополнение к полноценному языку сценариев .
Одной из отличительных особенностей ColdFusion является связанный с ним язык сценариев, ColdFusion Markup Language (CFML). CFML сравним с компонентами сценариев ASP , JSP и PHP по назначению и возможностям, но его синтаксис тегов больше напоминает HTML , в то время как его синтаксис сценариев напоминает JavaScript . ColdFusion часто используется как синоним CFML , но существуют дополнительные серверы приложений CFML помимо ColdFusion, и ColdFusion поддерживает языки программирования, отличные от CFML, такие как серверный Actionscript и встроенные скрипты, которые могут быть написаны на языке, похожем на JavaScript, известном как CFScript .
Первоначально продукт Allaire и выпущенный 2 июля 1995 года, ColdFusion был разработан братьями Джозефом Дж. Аллером и Джереми Аллером . В 2001 году Allaire была приобретена Macromedia , которая, в свою очередь, была приобретена Adobe Systems Inc в 2005 году.
ColdFusion чаще всего используется для веб-сайтов, управляемых данными , или интрасетей , но может также использоваться для создания удаленных служб, таких как службы REST , WebSockets , веб-службы SOAP или Flash remoting. Он особенно хорошо подходит в качестве серверной технологии для клиентской стороны ajax .
ColdFusion также может обрабатывать асинхронные события, такие как SMS и мгновенные сообщения , через свой интерфейс шлюза, доступный в ColdFusion MX 7 Enterprise Edition.
ColdFusion предоставляет ряд дополнительных функций из коробки. Основные функции включают:
<CFINVOKE WEBSERVICE="http://host/tempconf.cfc?wsdl" METHOD="Celsius2Fahrenheit" TEMP="#tempc#" RETURNVARIABLE="tempf">
Другие реализации CFML предлагают аналогичные или расширенные функциональные возможности, такие как работа в среде .NET или манипулирование изображениями.
Движок был написан на языке C и включал, среди прочего, встроенный язык сценариев (CFScript), модули плагинов, написанные на Java, и синтаксис, очень похожий на HTML. Эквивалент элемента HTML, тег ColdFusion начинается с букв «CF», за которыми следует имя, указывающее на то, как интерпретируется тег в HTML. Например, <cfoutput> для начала вывода переменных или другого контента.
В дополнение к CFScript и плагинам (как описано), CFStudio предоставила платформу проектирования с WYSIWYG- дисплеем. В дополнение к ColdFusion, CFStudio также поддерживает синтаксис других языков, популярных для программирования бэкенда, таких как Perl. В дополнение к тому, что бэкенд-функциональность легко доступна непрограммистам (версия 4.0 и выше в частности), она легко интегрируется с Apache Web Server и Internet Information Services .
Все версии ColdFusion до 6.0 были написаны с использованием Microsoft Visual C++ . Это означало, что ColdFusion был в значительной степени ограничен запуском на Microsoft Windows , хотя Allaire успешно портировал ColdFusion на Sun Solaris, начиная с версии 3.1.
Компания Allaire была продана Macromedia , затем Macromedia была продана Adobe . Более ранние версии были не такими надежными, как версии, доступные с версии 4.0 и далее. [ факт или мнение? ]
С выпуском ColdFusion MX 6.0 движок был переписан на Java и поддерживал собственную среду выполнения, которую можно было легко заменить с помощью параметров конфигурации на среду выполнения от Sun. Версия 6.1 включала возможность кодирования и отладки Macromedia Flash .
Версия 3, выпущенная в июне 1997 года, принесла пользовательские теги, cfsearch/cfindex/cfcollection на основе поисковой системы Verity, область действия сервера и кодировку шаблона (тогда называемую «шифрованием»). Версия 3.1, выпущенная в январе 1998 года, добавила поддержку RDS, а также порт на операционную систему Sun Solaris , в то время как студия ColdFusion получила предварительный просмотр страницы в реальном времени и проверку синтаксиса HTML.
Выпущенная в ноябре 1998 года версия 4 — это версия, в которой название было изменено с «Cold Fusion» на «ColdFusion» — возможно, чтобы отличать ее от теории холодного слияния . В релизе также была добавлена начальная реализация cfscript, поддержка блокировки (cflock), транзакций (cftransaction), иерархической обработки исключений (cftry/cfcatch), безопасности песочницы, а также множество новых тегов и функций, включая cfstoredproc, cfcache, cfswitch и многое другое.
Версия 4.5, выпущенная в ноябре 1999 года, расширила возможности доступа к внешним системным ресурсам, включая COM и CORBA, и добавила начальную поддержку интеграции Java (включая EJB, Pojo, сервлеты и Java CFX). IT также добавили функцию getmetricdata (для доступа к информации о производительности), дополнительную информацию о производительности в выводе отладки страницы, улучшенные функции преобразования строк и необязательное удаление пробелов.
Версия 5 была выпущена в июне 2001 года, добавив улучшенную поддержку запросов, новые функции отчетности и построения диаграмм, определяемые пользователем функции и улучшенные инструменты администрирования. Это был последний релиз, закодированный для определенной платформы, и первый релиз от Macromedia после приобретения Allaire Corporation , о котором было объявлено 16 января 2001 года.
До 2000 года Эдвин Смит, архитектор Allaire на JRun, а позже и Flash Player , Том Харвуд и Клемент Вонг инициировали проект под кодовым названием «Neo». [6] Этот проект позже был раскрыт как ColdFusion Server, полностью переписанный с использованием Java . Это упростило переносимость и обеспечило уровень безопасности на сервере, поскольку он работал внутри Java Runtime Environment.
В июне 2002 года Macromedia выпустила версию продукта 6.0 под немного другим названием, ColdFusion MX, что позволило ассоциировать продукт как с брендом Macromedia, так и с его оригинальным брендингом. ColdFusion MX был полностью переработан с нуля и базировался на платформе Java EE . ColdFusion MX также был разработан для хорошей интеграции с Macromedia Flash с использованием Flash Remoting.
С выпуском ColdFusion MX был выпущен API языка CFML с интерфейсом ООП .
С выпуском ColdFusion 7.0 7 февраля 2005 года соглашение об именовании было изменено, и название продукта стало "Macromedia ColdFusion MX 7" (кодовое название CFMX7 было "Blackstone"). В CFMX 7 были добавлены веб-формы на основе Flash и XForms , а также конструктор отчетов, который выводится в Adobe PDF, а также FlashPaper , RTF и Excel . Вывод Adobe PDF также доступен в качестве оболочки для любой HTML-страницы, преобразуя эту страницу в качественный печатный документ. В корпоративной версии также были добавлены шлюзы . Они обеспечивают взаимодействие со службами запросов, отличными от HTTP, такими как службы обмена мгновенными сообщениями, SMS, Directory Watchers и асинхронное выполнение. Поддержка XML была улучшена в этой версии, чтобы включить проверку собственной схемы.
В ColdFusion MX 7.0.1 (кодовое название «Merrimack») добавлена поддержка Mac OS X , улучшены формы Flash, поддержка RTF для CFReport, новая функция CFCPRoxy для интеграции Java/CFC и многое другое. В ColdFusion MX 7.0.2 (кодовое название «Mystic») включены расширенные функции для работы с Adobe Flex 2, а также дополнительные улучшения для CF Report Builder.
30 июля 2007 года Adobe Systems выпустила ColdFusion 8 , исключив «MX» из своего названия. [7] Во время бета-тестирования использовалось кодовое имя «Скорпион» (восьмой знак зодиака и восьмая итерация ColdFusion как коммерческого продукта). Более 14 000 разработчиков по всему миру были активны в бета-процессе — гораздо больше тестировщиков, чем изначально ожидали Adobe Systems в 5 000 человек . Команда разработчиков ColdFusion состояла из разработчиков, базирующихся в Ньютоне/Бостоне, Массачусетс, и в Бангалоре, Индия.
Некоторые из новых функций включают тег CFPDFFORM, который обеспечивает интеграцию с формами Adobe Acrobat , некоторые функции обработки изображений, интеграцию с Microsoft .NET и тег CFPRESENTATION, который позволяет создавать динамические презентации с использованием Adobe Acrobat Connect , веб-решения для совместной работы, ранее известного как Macromedia Breeze . Кроме того, ColdFusion Administrator для версии Enterprise поставляется со встроенным мониторингом сервера. ColdFusion 8 доступен в нескольких операционных системах, включая Linux , Mac OS X и Windows Server 2003 .
Другие дополнения к ColdFusion 8 включают встроенные виджеты Ajax , обработку файловых архивов (CFZIP), интеграцию с сервером Microsoft Exchange (CFEXCHANGE), обработку изображений, включая автоматическую генерацию CAPTCHA (CFIMAGE), многопоточность, настройки для каждого приложения, каналы Atom и RSS , улучшения отчетности, более надежные библиотеки шифрования, улучшения массивов и структур, улучшенное взаимодействие с базами данных, значительные улучшения производительности, возможности обработки и слияния PDF-файлов (CFPDF), интерактивную отладку, встроенную поддержку баз данных с Apache Derby и более совместимый с ECMAScript CFSCRIPT.
Для разработки приложений ColdFusion доступно несколько инструментов: в первую очередь Adobe Dreamweaver CS4, Macromedia HomeSite 5.x, CFEclipse, Eclipse и другие. Для этих приложений доступны «обновители тегов», позволяющие обновить их поддержку новых функций ColdFusion 8.
ColdFusion 9 (кодовое название: Centaur ) был выпущен 5 октября 2009 года. Новые функции CF9 включают в себя:
ColdFusion 10 (кодовое название: Zeus) был выпущен 15 мая 2012 года. Новые или улучшенные функции, доступные во всех версиях (Standard, Enterprise и Developer), включают (но не ограничиваются):
Дополнительные новые или улучшенные функции в редакциях ColdFusion Enterprise или Developer включают (но не ограничиваются):
Приведенные выше списки были получены со страниц веб-сайта Adobe, описывающих «новые функции», указанные первыми в ссылках в следующем списке.
Первоначально CF10 назывался кодовым именем Zeus, после того как Adobe впервые подтвердила его выход на Adobe MAX 2010 и в течение большей части периода предварительного выпуска. В блогах, Twitter и т. д. его также часто называли «ColdFusion next» и «ColdFusion X», пока Adobe окончательно не подтвердила, что это будет «ColdFusion 10». Большую часть 2010 года менеджер по продукту ColdFusion Адам Леман ездил по США, организуя бесчисленные встречи с клиентами, разработчиками и группами пользователей, чтобы сформулировать основной план для следующего набора функций. В сентябре 2010 года он представил планы Adobe, где они получили полную поддержку и одобрение высшего руководства. [8]
Первая публичная бета-версия ColdFusion 10 была выпущена Adobe Labs 17 февраля 2012 года.
ColdFusion 11 (кодовое название: Splendor) был выпущен 29 апреля 2014 года.
Новые или улучшенные функции, доступные во всех версиях (Standard, Enterprise и Developer), включают:
ColdFusion 11 также удалил многие функции, которые ранее были просто определены как «устаревшие» или больше не поддерживаемые в более ранних версиях. Например, тег CFLOG долго предлагал атрибуты даты и времени, которые были устарели (и избыточны, поскольку дата и время всегда регистрируются). Начиная с CF11, их использование не приводило к сбою тега CFLOG.
Adobe ColdFusion (выпуск 2016 года) под кодовым названием Raijin (также известный как ColdFusion 2016) был выпущен 16 февраля 2016 года.
Новые или улучшенные функции, доступные во всех версиях (Standard, Enterprise и Developer), включают:
Adobe ColdFusion (выпуск 2018 года), известный как ColdFusion 2018, был выпущен 12 июля 2018 года . [9] ColdFusion 2018 имел кодовое название Aether во время предварительного выпуска. [10]
По состоянию на март 2023 года Adobe выпустила 16 обновлений [11] для ColdFusion 2018.
Новые или улучшенные функции, доступные во всех версиях (Standard, Enterprise и Developer), включают: [12]
Adobe ColdFusion (версия 2021) был выпущен 11 ноября 2020 года. На момент предварительного выпуска ColdFusion 2021 имел кодовое название Project Stratus.
Новые или улучшенные функции, доступные во всех версиях (Standard, Enterprise и Developer), включают:
Adobe выпустила ColdFusion 2023 17 мая 2023 года.
Доступны следующие новые функции: [13]
В сентябре 2017 года Adobe анонсировала дорожную карту, предполагающую выпуски в 2018 и 2020 годах. [14] Среди основных функций, ожидаемых в выпуске 2016 года, были новый монитор производительности, улучшения асинхронного программирования, обновленная поддержка REST и улучшения API Manager, а также поддержка CF2016, запланированная на 2024 год. Что касается выпуска 2020 года, ожидаемыми на тот момент (в 2017 году) функциями были настраиваемость (модульность) служб приложений CF, обновленные скрипты и объектно-ориентированная поддержка, а также дальнейшие улучшения API Manager.
ColdFusion может генерировать PDF- документы с использованием стандартного HTML (т. е. для генерации документов для печати не требуется дополнительного кодирования). Авторы CFML помещают HTML и CSS в пару тегов cfdocument (или новые теги в ColdFusion 11, cfhtmltopdf). Затем сгенерированный документ можно сохранить на диск или отправить в браузер клиента. ColdFusion 8 также представил тег cfpdf, позволяющий управлять PDF-документами, включая формы PDF, и объединять PDF-файлы. Однако эти теги не используют движок Adobe PDF, но cfdocument использует комбинацию коммерческой библиотеки JPedal Java PDF и бесплатной и открытой библиотеки Java iText , а cfhtmltopdf использует встроенную реализацию WebKit . [15]
ColdFusion изначально не был объектно-ориентированным языком программирования , как PHP версии 3 и ниже. ColdFusion попадает в категорию OO-языков, которые не поддерживают множественное наследование (вместе с Java, Smalltalk и т. д.). [16] С выпуском MX (6+) ColdFusion представил базовую OO-функциональность с компонентной языковой конструкцией, которая напоминает классы в OO-языках. Каждый компонент может содержать любое количество свойств и методов. Один компонент также может расширять другой ( наследование ). Компоненты поддерживают только одиночное наследование. Набор функций обработки объектов и повышение производительности произошли в последующих выпусках. С выпуском ColdFusion 8 поддерживаются интерфейсы в стиле Java . Компоненты ColdFusion используют расширение файла cfc , чтобы отличать их от шаблонов ColdFusion (.cfm).
Методы компонентов могут быть доступны как веб-сервисы без дополнительного кодирования и настройки. Все, что требуется, — это объявить доступ метода «удален». ColdFusion автоматически генерирует WSDL по URL для компонента следующим образом: http://path/to/components/Component.cfc?wsdl. Помимо SOAP, сервисы предлагаются в двоичном формате Flash Remoting.
Методы, объявленные удаленными, также могут быть вызваны через HTTP-запрос GET или POST. Рассмотрим показанный запрос GET.
http://path/to/components/Component.cfc?method=search&query=your+query&mode=strict
Это вызовет функцию поиска компонента, передавая «ваш запрос» и «строгий» в качестве аргументов.
Этот тип вызова хорошо подходит для приложений с поддержкой Ajax . ColdFusion 8 представил возможность сериализации структур данных ColdFusion в JSON для потребления на клиенте.
Сервер ColdFusion автоматически сгенерирует документацию для компонента, если вы перейдете по его URL-адресу и вставите соответствующий код в объявления компонента. Это приложение интроспекции компонента, доступное разработчикам компонентов ColdFusion. Для доступа к документации компонента требуется пароль. Разработчик может просмотреть документацию для всех компонентов, известных серверу ColdFusion, перейдя по URL-адресу ColdFusion. Этот интерфейс напоминает документацию Javadoc HTML для классов Java.
ColdFusion предоставляет несколько способов реализации пользовательских тегов языка разметки , т. е. те, которые не включены в основной язык ColdFusion. Они особенно полезны для предоставления привычного интерфейса для веб-дизайнеров и авторов контента, знакомых с HTML, но не с императивным программированием .
Традиционный и наиболее распространенный способ — использование CFML. Стандартная страница CFML может быть интерпретирована как тег, при этом имя тега соответствует имени файла с префиксом "cf_". Например, файл IMAP.cfm может быть использован как тег "cf_imap". Атрибуты, используемые в теге, доступны в области ATTRIBUTES страницы реализации тега. Страницы CFML доступны в том же каталоге, что и вызывающая страница, через специальный каталог в веб-приложении ColdFusion или через тег CFIMPORT на вызывающей странице. Последний метод не обязательно требует префикса "cf_" для имени тега.
Второй способ — разработка тегов CFX с использованием Java или C++. Теги CFX имеют префикс "cfx_", например "cfx_imap". Теги добавляются в среду выполнения ColdFusion с помощью администратора ColdFusion, где файлы JAR или DLL регистрируются как пользовательские теги.
Наконец, ColdFusion поддерживает библиотеки тегов JSP из спецификации языка JSP 2.0. Теги JSP включаются в страницы CFML с помощью тега CFIMPORT.
Стандартная установка ColdFusion позволяет развертывать ColdFusion как файл WAR или EAR для развертывания на автономных серверах приложений, таких как Macromedia JRun и IBM WebSphere . ColdFusion также можно развернуть на контейнерах сервлетов, таких как Apache Tomcat и Mortbay Jetty , но поскольку эти платформы официально не поддерживают ColdFusion, они оставляют многие его функции недоступными. Начиная с ColdFusion 10 Macromedia JRun был заменен на Apache Tomcat .
Поскольку ColdFusion является приложением Java EE, код ColdFusion можно смешивать с классами Java для создания различных приложений и использования существующих библиотек Java. ColdFusion имеет доступ ко всем базовым классам Java, поддерживает библиотеки пользовательских тегов JSP и может получать доступ к функциям JSP после получения контекста страницы JSP ( GetPageContext() ).
До ColdFusion 7.0.1 компоненты ColdFusion могли использоваться только Java или .NET, объявляя их как веб-сервисы. Однако, начиная с ColdFusion MX 7.0.1, компоненты ColdFusion теперь можно использовать напрямую в классах Java с помощью класса CFCProxy. [17]
В последнее время наблюдается большой интерес к разработке Java с использованием альтернативных языков, таких как Jython , Groovy и JRuby . ColdFusion была одной из первых платформ сценариев, которая позволяла этот стиль разработки Java.
ColdFusion 8 изначально поддерживает .NET в синтаксисе CFML. Разработчики ColdFusion могут просто вызывать любую сборку .NET без необходимости перекомпилировать или изменять сборки каким-либо образом. Типы данных автоматически транслируются между ColdFusion и .NET (пример: .NET DataTable → ColdFusion Query).
Уникальная функция для поставщика Java EE, ColdFusion 8 предлагает возможность удаленного доступа к .NET Assemblies через прокси (без использования .NET Remoting ). Это позволяет пользователям ColdFusion использовать .NET без необходимости установки в операционной системе Windows.
Аббревиатура для языка разметки ColdFusion — CFML . Когда шаблоны ColdFusion сохраняются на диске, им традиционно присваивается расширение .cfm или .cfml. Расширение .cfc используется для компонентов ColdFusion. Первоначальное расширение было DBM или DBML, что означало Database Markup Language. Когда речь идет о ColdFusion, большинство пользователей используют аббревиатуру CF, и она используется для многочисленных ресурсов ColdFusion, таких как группы пользователей (CFUG) и сайты.
CFMX — общепринятое сокращение для ColdFusion версий 6 и 7 (также известное как ColdFusion MX).
ColdFusion возникла как фирменная технология, основанная на стандартах индустрии веб-технологий. Однако она становится менее закрытой технологией из-за доступности конкурирующих продуктов. Такие альтернативные продукты включают:
Они прекращены или не работают:
Можно утверждать, что ColdFusion даже менее привязан к платформе, чем сырые Java EE или .NET, просто потому, что ColdFusion будет работать поверх сервера приложений .NET (New Atlanta) или поверх любого контейнера сервлетов или сервера приложений Java EE (JRun, WebSphere , JBoss , Geronimo , Tomcat , Resin Server , Jetty (веб-сервер) и т. д.). Теоретически приложение ColdFusion можно перенести без изменений с сервера приложений Java EE на сервер приложений .NET.
В марте 2013 года известная проблема, затрагивающая ColdFusion 8, 9 и 10, сделала Национальную базу данных уязвимостей открытой для атак. [18] Уязвимость была обнаружена, и в январе Adobe выпустила исправление для CF9 и CF10. [19]
В апреле 2013 года компания Linode обвинила уязвимость ColdFusion в проникновении на веб-сайт панели управления Linode Manager. [20] Неделей ранее Adobe выпустила бюллетень по безопасности и исправление для этой проблемы. [21]
В мае 2013 года Adobe обнаружила еще одну критическую уязвимость, которая, как сообщается, уже эксплуатируется в дикой природе, которая нацелена на все последние версии ColdFusion на любых серверах, где веб-администратор и API не заблокированы. Уязвимость позволяет неавторизованным пользователям загружать вредоносные скрипты и потенциально получать полный контроль над сервером. [22] Бюллетень безопасности и исправление для этого были выпущены Adobe 6 дней спустя. [23]
В апреле 2015 года Adobe исправила уязвимость межсайтового скриптинга (XSS) [24] в Adobe ColdFusion 10 до обновления 16 и в ColdFusion 11 до обновления 5, которая позволяла удаленным злоумышленникам внедрять произвольный веб-скрипт или HTML; [25] однако, ее могут использовать только пользователи, прошедшие аутентификацию через панель администрирования. [26]
В сентябре 2019 года компания Adobe исправила две уязвимости внедрения команд (CVE-2019-8073), которые позволяли выполнять произвольный код и обход обходного пути (CVE-2019-8074).