KOL

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 — единственная объектно-ориентированная библиотека с такой архитектурой.

Для библиотеки KOL (точнее, первоначально, для её предшественника, библиотеки XCL) Владимир Кладов разработал генератор документации XHelpGen, принцип работы которого схож с Doxygen.

Справочные файлы генерируются автоматически на основе комментариев вида {* }, помещаемых в исходных текстах в интерфейсной части модулей. (символ * опциональный и может комплекте быть замещён любым другим; более того, возможно использовать несколько различных символов, например — для локализации справочных файлов).

Генерация выполняется автоматически на основе комментариев к исходному коду (на языке Delphi Pascal), и происходит в случае, когда xHelpGen при запуске обнаруживает, что какие-либо исходные файлы в сканируемом каталоге изменены. Справка формируется в формате HTML и доступна для просмотра из любого браузера.

Литература

править
  • Фленов Михаил Евгеньевич. 1.7. Использование библиотек KOL и MCK // Программирование в Delphi глазами хакера.. — 2 изд.. — БХВ-Петербург, 2012. — С. 37-40. — 480 с. — ISBN 9785977500814.
  • Вадим Станкевич. «Платформа Win32 так просто не уйдёт» Интервью с Владимиром Кладовым, автором библиотеки KOL // Компьютерные вести. — 2007. — № 46.

См. также

править

Примечания

править

Ссылки

править