Motto

В тихом саду здравомыслия
Пусть на вас постоянно падают
кокосовые орехи пробужденности.
Чогьям Трунгпа РИНПОЧЕ


Версия для мобильного


воскресенье, 28 декабря 2008 г.

Введение в JCL(JEDI Code Library) и JVCL(JEDI Visual Component Library)

Введение

JCL – это сокращение от JEDI Code Library. JCL - это библиотека для Delphi с открытым исходным кодом. JEDI Code Library неспроста называется именно библиотекой кода, она содержит только процедуры, функции, классы, интерфейсы и ни одного компонента. JCL составлена из кода, пожертвованного разными разработчиками. Из пожертвованных компонент была составлена библиотека JVCL – JEDI Visual Component Library. Для установки JVCL понадобится уже было установленная JCL. О некоторых компонентах JVCL можно почитать в моём блоге в категории JVCL.

JCL доступна по двум лицензиям: Mozilla Public License(MPL) 1.1 и LGPL. Лицензия MPL позволяет использовать библиотеку в коммерческих проектах с закрытым кодом, а LGPL не знаю зачем нужна(возможно, чтобы дать возможность использовать код сторонникам GNU GPL). Поправьте, если я неправ. А если кто-нибудь может объяснить лучше, сделайте это.

Почему я об этом пишу

Потому что на русском языке практически нет информации об этих библиотеках. Некоторые разработчики предпочитают использовать взломанные версии коммерческих библиотек, нарушая закон, хотя вполне может быть, что для достижения целей им хватило бы и бесплатных JCL и/или JVCL. Многие разработчики изобретают велосипеды, решая классические задачи(что хорошо) и допуская классические ошибки(что плохо, но даёт опыт) и выкладывая решения с ошибками в интернет(что не очень хорошо), а то и публикуя ошибки в книгах(что ужасно). Я надеюсь, что популяризация этих библиотек поможет привлечь новых пользователей, а может даже и разработчиков. =)

Отмазка: К слову, я сам использую эти библиотеки недолго, поэтому при описании вещей с которыми не работал, буду кратко отделываться общими фразами и перечислением свойств, методов, классов.

Поддержка и развитие

В отличие от многих open-source библиотек, JCL и JVCL до сих пор поддерживаются командой Delphi Jedi[1]. Библиотеки поддерживают Delphi с версии 6 по 2009. Помимо поддержки, библиотеки продолжают потихоньку развиваться, реструктуризироваться, в них появляются новые интерфейсы, уменьшается количество дублирующегося кода. В отличие от VCL, JVCL стремительными темпами обрастает поддержкой интерфейсов.

Свой вклад в эти библиотеки внесли такие люди, как гуру Delphi Andreas Hausladen, евангелист Delphi Nick Hodges, автор библиотеки SpTbxLib – Rober Lee, автор VirtualTreeView - Mike Lischke. А также масса других разработчиков.  Список людей, пожертвовавших код библиотеке JCL. Список людей, пожертвовавших код библиотеке JVCL. Если Ваше имя есть в списке я с удовольствием поставлю прямую ссылку на Ваш сайт.

Разумеется, код в библиотеках не идеален, и там ещё осталось достаточно ошибок, особенно в связи с недавно появившейся поддержкой юникода в Delphi 2009. О найденных ошибках обязательно стоит сообщить в баг-трекер проекта, расположенный по адресу: http://homepages.codegear.com/jedi/issuetracker/main_page.php

Но даже учитывая все недостатки, эти библиотеки содержат массу полезного кода, способного существенно упростить быструю разработку приложений.

Документация

В данный момент на русском языке документации по библиотекам нет. Даже более менее внятного описания библиотек, в Рунете практически не сыскать. Этими постами я отчасти хочу заполнить этот информационный пробел.

Документацию на английском, кстати, найти также непросто. В интернете в открытом доступе информации мало. Наилучшим источником информации о JCL и JVCL являются файлы справки, в которых описано достаточно большая часть кода, а также исходники. И количество документированного кода продолжает расти.

Расширение JCL и JVCL

Многие разработчики начинают разработку своих собственных бесплатных библиотек с открытым кодом. Они развивают свой проект, выпускают, и до какого-то момента поддерживают. А потом им это надоедает, и проект остаётся заброшенным. Выходят новые версии Delphi, энтузиасты портируют код под них, выкладывают на форумах, но проект формально считается мёртвым. Таких проектов достаточно много. Некоторые, популярные иногда они перемещаются на sf.net и начинают там жить своей жизнью. JCL и JVCL расширяются за счёт того, что поглощают такие проекты(с разрешения авторов). На данный момент они вобрали в себя следующие известные проекты: Graphics32, RxLib, Globus VCL Extention Library(GVCL), Jans Delphi Components, Universal Interbase Components.

[1] Мне не нравится слово джедай в применении к программированию, потому что для меня это подразумевает некоторое ребячество, а мне сложно совместить ребячество с качеством и серьёзностью этих библиотек.

p.s. кстати, настоятельно приветствуются комментарии и ссылки. =)

p.p.s. В первый раз JCL и JVCL лучше всего устанавливать с помощью установщика. (Lazy Delphi Builder не поможет)

Ссылки по теме

14 комментариев:

  1. JCL не видит при установке C++ Builder 2009
    Скачал последнюю самую.
    В чем причина и как ее поставить может руками ?
    Или только на Дельфи ?
    Или только 2006 ?
    Спасибо

    ОтветитьУдалить
  2. http://jcl.sourceforge.net/daily/

    ОтветитьУдалить
  3. > jkeks
    Попробуй установить последний ежедневный билд.

    ОтветитьУдалить
  4. Не могу установить JCL Turbo для Turbo Delphi 2006 Explorer. Пишет, что не может найти пути:
    "Starting Uninstall process..................
    Failed to remove library search path.
    Failed to remove library browsing path.
    "

    ОтветитьУдалить
  5. > Starting Uninstall process
    Uninstall - это вообще-то не установка, а наоборот - деинсталляция.

    ОтветитьУдалить
  6. Ураа!!! Поставил JCL и JVCL на Delphi TurboExplorer(хоть он по идее и не поддерживает установку сторонних компонент)!!!
    Бесплатное к бесплатному))) Как я доволен теперь) :)
    Спасибо тебе Bose, твои посты вдохновили меня вручную установить каждый пакет)

    ОтветитьУдалить
  7. "Лицензия MPL позволяет использовать библиотеку в коммерческих проектах с закрытым кодом"

    с MPL вроде должны исходники идти?

    ОтветитьУдалить
  8. Исходники должны быть доступны для библиотеки, а также для тех её частей, которые были изменены. Программа, которая использует библиотеку может оставаться закрытой.
    п.с. imho

    ОтветитьУдалить
  9. т.е. получается, если я использую в своей программе, компоненты с лицензией MPL без изменений, то для программы я могу практически любую лицензию, на компоненты же так же остается MPL.
    или все же как то хитрей?!

    ОтветитьУдалить
  10. Да, почти любую. Некоторые лицензии типа GNU GPL не являются совместимыми с лицензией типа MPL.

    ОтветитьУдалить
  11. Не сочтите за некропостинг Алексей :) Просто не мог не отписаться по поводу вот этого:

    >> Мне не нравится слово джедай в применении к программированию, потому что для меня это подразумевает некоторое ребячество, а мне сложно совместить ребячество с качеством и серьёзностью этих библиотек.

    JEDI - это не джедай, это аббревиатура от Joint Endeavour of Delphi Innovators.

    Кстати, рыцари-джедаи как мне кажется тоже не ребячеством занимаются с ихними световыми мечами :)

    ОтветитьУдалить
  12. Пост не новый, но не знаю куда еще написать. Вы написали, что в jvcl входят Universal Interbase Components. Никогда про такие не слышал, но стало интереснее, могут ли они стать какой то заменой платным фибам.
    Вобщем не нашел их в палитре. Вы не в курсе - их надо отдельно ставить или они вообще не визуальные?

    ОтветитьУдалить
  13. Входят. Замена FIB+ из них довольно фиговая. По функционалу они даже слабее IBX-ов. Единственное в чём UIB лучше Fib+ - это работа в многопоточных приложениях (многие версии Фибов имели проблемы при работе в потоках).
    В палитре их стоит искать под именем UIB.

    ОтветитьУдалить

Постоянные читатели