, которое должно недвусмысленно свидетельствовать о первоисточнике - JAva tCL), представляет собой полностью переписанную на Java среду языка Tcl. Наряду с Jacl Sun разработала еще один продукт, названный Tcl Blend, который позволяет создавать расширения Tcl на языке Java, вместо C или C++.

Не удивляйтесь, если вы до сих пор ничего не слышали о Jacl или Tcl Blend. Сообщение об этих продуктах было разослано всем заинтересованным разработчикам в ничем не примечательном сообщении электронной почты. В этом сообщении лидер команды разработчиков SunScript Реймонд Джонсон назвал новый продукт "первым результатом нового проекта Sun Laboratories по интеграции языков программирования Tcl и Java, в ходе реализации которого оба языка будут значительно усовершенствованы".

Множество разнообразных технологий, среди которых можно назвать CORBA, JavaBeans, DCOM, XML, PowerBuilder, средства визуального программирования, объектно-ориентированную разработку и др., уже предлагают простые способы объединения компонентов Java. Казалось бы, чего уж больше? Целью проекта SunScript (девиз разработчиков - "однажды написанный сценарий должен выполняться на всех платформах") является практическая реализация концепции Джона Аустерхаута, состоящей в том, что "языки сценариев - основа программирования 21-го века". Именно Аустерхаут, создавший в 1988 году Tcl, в настоящее время руководит проектом SunScript.

Язык Java уже послужил причиной революционных изменений в маркетинговой политике многих фирм и породил немало судебных процессов. Однако в моделях разработки, которые используются программистами Java, прослеживаются хорошо известные схемы. Ведущие производители модернизируют уже существующие утилиты, создававшиеся для языков Pascal, Smalltalk или C. Команды программистов все чаще прибегают к своего рода инкрементальной разработке, в результате чего новые приложения приобретают вполне привычный вид. Технология Java позволяет сделать этот процесс более безопасным и не зависящим от платформы.

Аустерхаут предлагает совершенно новую парадигму языка сценариев.

"Второе поколение Web-дизайнеров (а они не являются профессиональными разработчиками) уже использует Perl, Frontier и Hypercard, - отметил Джонсон в недавнем интервью. - Все больше и больше людей обращает внимание на высокоуровневые, легкие для освоения языки, которые позволяют создавать прототипы и значительно ускоряют разработку. Точно так же популярность Visual Basic стремительно возросла благодаря возможности повторного применения компонентов OCX. Язык SunScript поможет программистам собирать различные компоненты, написанные на Java. Продукты Jacl и Tcl Blend облегчат написание, обеспечив при этом функциональность, которая недоступна другим языкам".

Расширенные функциональные возможности Jacl особенно заметны в сравнении с другими средствами разработки на Java. Например, с помощью VBScript можно писать как клиентские, так и серверные сценарии, а Jacl позволяет стереть грани между разработкой клиентского, серверного и промежуточного программного обеспечения. Преимущества Tcl особенно проявляются при сопоставлении с JavaBeans. JavaBeans позволяет формировать пакеты для повторного использования ранее созданных компонентов Java. В свою очередь Tcl Blend напрямую вызывает объекты Java во время выполнения программы; пакеты при этом не нужны. На презентации SunScript представители Sun еще раз обратили внимание на то, что лучшие средства компоновки кода Java - это по-прежнему Jacl и Tcl Blend.

Сценарии позволяют организовать программное управление пользовательским интерфейсом. Это очень важно и дает возможность существенно повысить интеллектуальность интерфейса.

Рассмотрим пример, связанный с буксировкой визуальных компонентов палитры. Данная технология с восторгом была принята рынком, но в то же время при создании пользовательского интерфейса она диктует разработчикам некоторые ограничения. Интерфейс становится излишне статичным и "недостаточно чувствительным" к нуждам пользователя. Об этом предупреждал и Брайан Керниган, знаменитый автор технических публикаций Bell Laboratories.

"Самые лучшие интерфейсы - это те, которые могут приспосабливаться к знаниям и умениям человека. Интерфейсы сценариев очень динамичны и ориентированы на пользователя", - отмечал Керниган в ходе проведения июльского семинара, посвященного Tcl.

Предположим, вы согласны с тем, что объединение объектов Java в сценарии представляет собой уникальный по своей эффективности способ реализации некоторых важных этапов процесса разработки. Но при этом нерешенным остается вопрос: почему в качестве языка сценариев должен быть выбран именно Tcl?

Появление SunScript как раз и позволило на него ответить. Первым аргументом в пользу Tcl является его надежность. Несколько тысяч коммерческих приложений, зависящих от Tcl, ежедневно подтверждают его зрелость. Во-вторых, он полностью использует потенциал сценариев, легко позволяя добавлять или исключать части кода, реализующие конкретные функции.

Что это дает разработчикам? Возможно, когда-нибудь перед вами встанет задача объединить с помощью сценария различные компоненты Java. Естественно, возникает вопрос, каким языком воспользоваться для этого? Начать можно с VBScript или JavaScript - они, безусловно, будут по-прежнему доминировать в занятых ими нишах. Реймонд Джонсон по этому поводу заметил, что "устойчивость позиций JavaScript на рынке не подвергается сомнению".

SunScript сделала выбор, и теперь успех зависит от результатов скачек. Сумеют ли Jacl и Tcl Blend эволюционировать достаточно быстро, преобразовав технологическое лидерство в лидерство на рынке средств разработки, или же о них будут вспоминать как об одаренных претендентах, не выдержавших темпа, когда фавориты ринулись вдогонку? Сейчас, в конце 1997 года, Jacl и Tcl Blend опережают другие продукты в возможностях создавать сценарии для Java. Вопрос лишь в том, многим ли разработчикам нужна сегодня подобная мощь? По крайней мере, группа Джонсона делает ставку на это.

Вы можете более подробно ознакомиться с этим продуктом и после этого решить, подойдет ли он вам. Загляните на узел SunScript (http://sunscript.sun.com/) и подумайте, какой из примеров сценариев для Java подойдет вам для решения проблемы, с которой вам приходится сталкиваться. Скачайте программное обеспечение и попробуйте запустить пробный сценарий. В худшем случае окажется, что вам понравился язык, от которого рынок впоследствии откажется. Это не так уж страшно. Это означает лишь, что впоследствии вам придется перекомпоновать ваше приложение. В случае же удачи вы станете одним из первых экспертов в области программирования 21-го века.


Советы бывалых

Сам по себе язык Tcl и библиотеки Tk используются достаточно давно, главным образом для создания интерфейсов в среде X Window. Об этом говорит хотя бы номер текущей версии - 8.0. Этот язык часто используют также и для разработки некоммерческого ПО. Объектно-реляционная СУБД PostgreSQL (версия Postgres), разработанная профессором Стоунбрейкером вместе с его студентами и ставшая прототипом коммерческой базы Illustra, распространялась без интерфейсов. Один из интерфейсов, позволяющий работать с таблицами, формулировать запросы и многое другое, целиком написан на Tcl/Tk. Язык этот был выбран потому, что мощь этого языка позволила ему написать весь пакет от начала и до конца всего за 4 дня напряженной работы. Чтобы убедится в компактности приложений, можно посмотреть представленные в Web "тиклеты", о которых писал Computerworld Россия (#35 за 1996 год) - приложения, загружаемые по сети как апплеты Java и исполняемые браузером в виртуальной машине (для этого надо "скачать" встроенный модуль, разработанный тоже в SunScript). В эпоху Java, если таковая настанет, версии языка, о которых говорилось в статье, имеют все шансы проникнуть на рынок. Процитированные высказывания Брайана Кернигана очень показательны, ведь это не просто технический автор, как представили его Лэрд и Сорэз, а "отец" C и Unix, или, скажем так, "соотец" (и уж точно крестный отец Unix - это он придумал название для новой ОС). Уж он-то много повидал на своем веку, кроме Jacl, и тем не менее...

- Игоpь Левшин,
Computerworld Россия

Поделитесь материалом с коллегами и друзьями