KOL (Key Objects Library) — библиотека объектных типов для программирования в среде Delphi и Lazarus. Основная цель KOL — уменьшение размера конечной программы (Win32, GUI) в 5—10 раз по сравнению с тем, что даёт библиотека VCL. Поддерживаются все 32-разрядные версии Delphi, начиная с Delphi 2 и заканчивая BDS 2010.
KOL | |
---|---|
Тип | Библиотека |
Разработчик | Владимир Кладов |
Написана на | Pascal |
Операционные системы | Windows, Windows Mobile, Linux |
Последняя версия | r170 (03.09.2021) |
Состояние | активное [1] |
Лицензия | Freeware |
Сайт | sourceforge.net/projects… |
Эта статья или раздел нуждается в переработке. |
MCK (Mirror Classes Kit) — это набор зеркальных классов, позволяющих разрабатывать проект на основе библиотеки KOL визуально. Компоненты MCK устанавливаются на палитру компонентов, работа с ними происходит так же, как это обычно делается в Delphi при визуальной разработке. В откомпилированном проекте визуальные компоненты замещаются своими невизуальными двойниками из KOL. Использование MCK сокращает размер исполнимой программы так же, как и при использовании KOL невизуально. Преимуществом является визуальная разработка, недостатком же — зависимость от версии Delphi (поддерживаются Delphi2, Delph3, Delphi4, Delphi5, Delphi6, Delphi7, BDS 2005—2012, Kylix а также Free Pascal Compiler 1.0.5 и выше).
Проект KOL ведётся программистом Владимиром Кладовым уже около десяти лет. Проекты KOL и MCK содержат в себе сотни компонентов.
Причина создания
правитьОдна из проблем систем типа RAD — размеры исполняемого модуля приложения. Основной виновник этого — реализация технологий ООП библиотеками визуального проектирования (VCL, MFC, Qt). Одна из причин — система наследования с высоким уровнем абстракции, значительно увеличивающая код базовых классов. Учитывая довольно внушительную иерархию графических компонентов VCL, их большой размер вполне объясним. Вторая причина — реализация виртуальных методов компилятором Delphi. Обычные, невиртуальные методы Delphi может исключить при компоновке, если они нигде не вызываются в коде. Виртуальные же методы жестко прописаны в VMT, размер которой компилятор пересчитывать не умеет, поэтому виртуальные методы включаются в компонуемый код всегда, даже если нигде реально не вызываются.
Разработчик KOL/MCK сумел предложить компромиссное решение, дающее аналог VCL с возможностью визуального проектирования, но с выходным размером исполняемого модуля в 5—10 раз меньше, чем с VCL. Здесь сыграли свою роль и оптимизация многих участков на ассемблере, и интересное решение с фактическим отказом от наследования в традиционном смысле: все визуальные компоненты KOL являются экземплярами единого огромного TControl, реализующего функциональность сразу всех интерфейсных элементов ОС. Можно говорить, что решение KOL — это ОО-надстройка над описателем окна (handle) «в лоб», не делающая различий между разными классами элементов интерфейса, как не делает их сама ОС. Вероятно, KOL — единственная объектно-ориентированная библиотека с такой архитектурой.
XHelpGen
правитьДля библиотеки KOL (точнее, первоначально, для её предшественника, библиотеки XCL) Владимир Кладов разработал генератор документации XHelpGen, принцип работы которого схож с Doxygen.
Справочные файлы генерируются автоматически на основе комментариев вида {* }
, помещаемых в исходных текстах в интерфейсной части модулей. (символ *
опциональный и может комплекте быть замещён любым другим; более того, возможно использовать несколько различных символов, например — для локализации справочных файлов).
Генерация выполняется автоматически на основе комментариев к исходному коду (на языке Delphi Pascal), и происходит в случае, когда xHelpGen при запуске обнаруживает, что какие-либо исходные файлы в сканируемом каталоге изменены. Справка формируется в формате HTML и доступна для просмотра из любого браузера.
Литература
править- Фленов Михаил Евгеньевич. 1.7. Использование библиотек KOL и MCK // Программирование в Delphi глазами хакера.. — 2 изд.. — БХВ-Петербург, 2012. — С. 37-40. — 480 с. — ISBN 9785977500814.
- Вадим Станкевич. «Платформа Win32 так просто не уйдёт» Интервью с Владимиром Кладовым, автором библиотеки KOL // Компьютерные вести. — 2007. — № 46.
См. также
правитьПримечания
правитьСсылки
править- Сайт KOL
- Библиотека KOL
- KOL Book
- Использование библиотеки KOL на компиляторе Free Pascal Архивная копия от 28 октября 2016 на Wayback Machine, freepascal.ru
- Использование версии KOL-CE, адаптированой под Lazarus Архивная копия от 29 ноября 2016 на Wayback Machine, wiki.freepascal.org
- Библиотека KOL, компоненты и документация на sourceforge.net, выложенные автором KOL(только файлы в архивах)
- Другой SVN репозитарий KOL и компонентов на sourceforge.net
- Форум по KOL на delphimaster.net Архивная копия от 25 января 2021 на Wayback Machine и его версия на: http://pda.delphimaster.net Архивная копия от 9 июня 2019 на Wayback Machine