Инструментарий jCentral компании IBM - первый среди механизмов поиска нового типа
Если вам приходилось хотя бы раз в течение нескольких часов (дней, а то и недель или месяцев) искать какой-нибудь фрагмент связанной с Java информации или экземпляр кода, вам не нужно объяснять, что испытывает пользователь, получающий результаты обработки подобного запроса. Чтобы найти искомое, вам, скорее всего, придется посетить немало информационных узлов Java и групп новостей Usenet, самому просматривая статьи и архивы, тему за темой. Или обратиться к каталогам с программами на Java, в которых содержатся десятки экземпляров программ, причем не только тех, которые вам действительно необходимы. Даже после добавления в текст запроса всех пришедших вам в голову ключевых (и неключевых) слов вас ожидают муки обработки мириад страниц, найденных в результате работы механизма поиска общего назначения. Возможно, не обойтись вам и без работы с более традиционными носителями информации: книгами, журналами и разного рода записями - короче, всем, что может помочь решению стоящей пред вами задачи разработки на Java. Иногда, если повезет, вы в конце концов найдете то, что ищите. Но это происходит крайне редко. Самое неприятное во всем этом - понимать, что необходимая информация существует, но не знать, как ее найти.
Отныне ваши попытки поиска ресурсов Java не будут такими мучительными, да и времени потребуют меньше. IBM jCentral, анонсированный и продемонстрированный на последней конференции разработчиков JavaOne, состоявшейся в Сан-Франциско, - это механизм, ориентированный на поиск информации, касающейся ресурсов Java. Другими словами, jCentral - это инструментарий поиска, который ищет только Java-ресурсы, причем все виды ресурсов, в том числе код, JavaBeans, апплеты и статьи в группах новостей и на Web-узлах, связанных с Java.
Как только jCentral находит требуемый код в апплетах, объектных компонентах, программах или статьях групп новостей, он выявляет отличительные особенности этого кода, которые используются при индексировании. Например, при работе с апплетом Java модуль jCentral анализирует встроенную страницу HTML и классификационный файл апплета, описывающий используемые классы, чтобы получить необходимую информацию об апплете - допустим, список инициирующих его методов. Эта информация затем индексируется, и пользователи могут инициировать запросы на поиск, к примеру, всех апплетов Java, которые устанавливают сетевое соединение, вызывая методы из класса java.net.socket либо все апплеты, которые содержат определенную кнопку или скользящий указатель. Разработчики могут с помощью этой технологии вести поиск конкретного Java-кода по методам класса, строкам и другим его фрагментам.
Поскольку jCentral оптимизирован для выполнения поиска, ориентированного на ресурсы Java, он представляет собой важное для программистов инструментальное средство. Ведущие представители сообщества разработчиков Internet, такие как World Wide Web Consortium Conference, все чаще сетуют на то, что наиболее распространенные механизмы поиска общего назначения в специфических случаях работают все менее и менее эффективно. По мере расширения Internet соответственно растет и объем информации, связанной с любым конкретным ключевым словом, и в итоге механизмы поиска общего назначения генерируют огромные массивы данных, которые зачастую не относятся к делу и бесполезны для пользователей. К примеру, в результате поиска английского слова Java с помощью Alta Vista (популярной поисковой системы, разработанной компанией Digital Equipment) был сгенерирован список из 800 тыс. документов.
Логичным решением этой проблемы является создание вертикальных, нацеленных на конкретную информацию механизмов поиска и репозитария данных. jCentral - один из первых вертикальных поисковых сервисов. Он действует как ориентированный на поиск программного кода аналог Alta Vista или, по меткому выражению Дирка Никола, специалиста по Web подразделения программного обеспечения компании IBM и менеджера по продуктам www.ibm.com/java, как "поиск с умом". Так как jCentral - технология довольно новая, Никол предлагает читателям JavaWorld свои услуги и просит присылать ему отзывы по адресу nicold@us.ibm.com. "Мы создали jCentral с одной целью - помочь разработчикам Java и по-прежнему намерены оказывать им всяческую поддержку в создании программ на Java", - отметил Никол.
Ориентация на код
Но если репозитарии данных, пополняемых механизмами поиска общего назначения, рискуют в конце концов оказаться забитыми огромным количеством неподходящей информации, то может ли это произойти с вертикальными механизмами поиска специального назначения, и если может, то как это предотвратить? Никол сказал, что подобная ситуация невозможна в силу природы jCentral (и других ориентированных на поиск специфической информации). Механизмы поиска общего назначения находят и распределяют по категориям информацию на основе ключевых слов и метатегов страниц Web, которые определяют авторы Web-страниц (зачастую злоупотребляя этим). В jCentral реализован кардинально иной подход. Этот сервис анализирует Java-код и текстовые комментарии, содержащиеся в теле программ, устанавливает весовые коэффициенты и индексирует атрибуты кода, а не комментариев.
jCentral одновременно представляет собой глобальный и внутренний (для организации и intranet) ресурс. Предложенный на ibm.com/java механизм поиска является глобальным поисковым инструментарием jCentral, однако в самой IBM используется его частная версия, которая позволяет разработчикам компании выполнять поиск материалов по Java в своей корпоративной сети. В качестве глобального ресурса jCentral сейчас распространяется бесплатно. (Пока IBM не сообщила о намерении лицензировать исходный текст как отдельный продукт для внутренних корпоративных разработчиков или поставлять его с другим продуктом.)
jCentral предусматривает не только выполнение автоматизированной обработки репозитария, но и возможность делать это вручную. Такой подход дает jCentral отличимое преимущество перед другими службами разработки Java, которые предполагают, что подобная обработка накопленных ресурсов осуществляется исключительно вручную.
Автоматизированный компонент jCentral для поиска в Internet необходимых материалов, связанных с Java, использует группу запатентованных IBM 100% Pure Java "пауков", а затем добавляет эти материалы в репозитарий jCentral, анализируя и классифицируя их в процессе обработки. Сейчас репозитарий содержит примерно 150 тыс. записей, в том числе 40 тыс. апплетов и 60 тыс. фрагментов Java-кода. В репозитарий jCentral также добавляется содержимое каталогов статей журнала JavaWorld и исходные тексты. Как отмечают представители IBM, скорость роста репозитария непостоянна и труднопредсказуема, но в среднем еженедельно в хранилище добавляется несколько тысяч записей.
Компонент jCentral, с помощью которого можно накапливать ресурсы вручную, реализует более распространенный подход к пополнению объема каталогов, где хранятся ресурсы. В конечном счете Java-разработчики предлагают код, который добавляется в репозитарий jCentral, и несколько сотрудников группы разработки jCentral проверяют код вручную и дают разрешение на его включение в репозитарий. Таким образом, объем одобренных текстов оказывается достаточно скромным. Число разработчиков Java невелико, поэтому сотрудники, работающие с jCentral, не будут погребены под лавиной информации, как при работе с механизмом поиска общего назначения, такого как Yahoo!.
Сотрудники, проводящие экспертизу кода для jCentral, не оценивают качество переданных программ и не составляют аннотаций. Это обязанность разработчиков - создавать комментарии и описания своего собственного кода, так что пользователи получат возможность больше узнать о хранящихся программах и чаще их использовать. Как только код одобрен, метаданные, представляющие собой описание выходных данных (а не сами выходные данные), добавляются к репозитарию jCentral.
Визуальные карты и уведомления об электронной почте
К несомненным достоинствам jCentral относится возможность создать диаграмму иерархии классов JavaBeans или компонентов, которая представляет собой визуальную карту кода. После щелчка мыши на любом узле диаграммы в окне появляется соответствующий код, а внизу экрана - его описание.
jCentral также предлагает автоматическую службу уведомления о получении сообщений электронной почты, которая постоянно инициирует запросы и периодически посылает подписчикам новые результаты одного и того же поиска. Разработчики могут воспользоваться этой возможностью для поиска необходимых ресурсов или для поиска новых экземпляров их собственного исходного кода. Сочетание быстрого поиска и уведомления о новых его результатах позволяет снизить нагрузку по сравнению с регулярной инициацией одинаковых запросов. Это весьма удобно, если, к примеру, вы всегда ищите новые и более совершенные анимационные объектные компоненты. К тому же пользователи jCentral, передавшие адреса электронной почты в эту службу, гарантированно защищены от всякого рода навязчивых рекламных объявлений: представители IBM отмечают, что jCentral - не маркетинговый инструментарий, поэтому информация о подписчиках будет использоваться исключительно для их уведомления о результатах поиска.
Не повторяйте чужих ошибок
jCentral можно использовать для самых разных целей. Наиболее очевидная из них - избежать дублирования усилий при разработке кода. Если кто-то уже создал экземпляр кода или придумал руководство, которое сможет сэкономить ваше время и энергию, ничто не мешает ими воспользоваться, если, конечно, вам удастся их найти.
Поиск соответствующих экземпляров и руководств значительно облегчается в тех случаях, когда вам известна строка или раздел кода. Если, например, вам необходим хороший алгоритм защиты MD5 или специальный метод вызова (который обычно трудно найти), вы можете искать и анализировать такой код с помощью jCentral. Или если вы разрабатываете программу на Java для использования с базой данных, можно запускать поиск экземпляров, которые относятся к уровню 3 (серверные базы данных), уровню 2 (промежуточное программное обеспечение) или уровню 1 (клиент). (К примеру, по имени класса java.net.socket можно найти программы, касающиеся соединений с серверными базами данных.) Как только вы нашли подходящий для вашей работы код, следует получить у автора разрешение на его использование. Вы можете также проанализировать предложенные другими варианты решения задачи и затем создать свою собственную программу. Удачное использование jCentral может сэкономить вам по крайней мере пару часов времени разработки.
Разработчики также могут использовать jCentral, чтобы узнать, кто еще использует их код. К примеру, разработчики Java в компании IBM периодически выполняют поиск экземпляров кода, в которых используется класс имен IBM, то есть поиск имени домена IBM с обратным URL (com.ibm class). До появления jCentral доказать, что кто-то без разрешения применяет ваш код, было весьма затруднительно.
jCentral можно использовать не только в мире программирования, но и, в частности, для маркетинговых целей. Сотрудники отдела маркетинга и бизнес-разработчики могут с помощью jCentral рекламировать свои объектные компоненты, апплеты и другие ресурсы Java всему сообществу разработчиков. Таким образом, jCentral мог бы использоваться в качестве инструментального средства для создания объединений и коммерции.
Поскольку jCentral способен выполнять не только текстовый, но и многоуровневый поиск, вы получаете возможность искать фрагмент кода со специфическими атрибутами и свойствами. К примеру, вы можете найти все апплеты с GridBagLayout, а затем еще раз отсортировать полученные результаты с помощью других специфических параметров. jCentral также позволяет вам обращаться с запросами к конкретным фрагментам исходного кода. К примеру, можно составить запрос, который будет искать информацию об авторе, размещенную в комментариях, расположенных в свою очередь в теле программы. jCentral позволяет найти апплет, полученный из определенного источника или конкретного домена. Так, если вы ищите студента, который написал вычислительный апплет, можно проанализировать все вычислительные апплеты, полученные из всех доменов edu.
jCentral предлагает гибкие и надежные возможности поиска. Один запрос может запускаться для всех типов информации. С помощью одной процедуры поиска вы можете найти различные способы использования, к примеру, GridBagLayout: в апплетах, фрагментах программ, FAQ, статьях групп новостей и узлах Web. После поиска jCentral пропускает код через фильтрующий механизм, который сам написан на Java.
jCentral порой применяют и весьма необычным образом. Менеджер исследовательского Web-центра Almaden компании IBM Дэн Форд с помощью этого инструментария периодически ищет информацию о самом jCentral на внешних Web-узлах - таким образом он контролирует публичное использование и распространение продукта своей компании.
Он начинал как внутренний инструментарий IBM...
Как возник jCentral? Это побочный продукт Grand Central Station (GCS), исследовательского проекта IBM, в частности занимающегося технологией поиска общего назначения, предназначенного для поиска в Web различных форматов данных (не только HTML). Так, GCS может искать и анализировать такие форматы данных, как SQL или ODBC, графические форматы, такие как MPEG или GIF, электронные таблицы, сжатые файлы в форматах TAR и ZIP и языки программирования.
"jCentral - это алмаз в короне GCS, один из лучших экземпляров, демонстрирующих возможности GCS", - считает Кью Лу, научный сотрудник исследовательского центра Almaden, входящего в состав подразделения Web-технологий компании IBM. Поскольку jCentral создан на основе GCS, он переносим на другие языки, такие как C/C++ или Perl, но пока разработчики GCS/jCentral не анонсировали никаких планов относительно других инструментариев, ориентированных на поиск программ.
Изначально предполагалось, что jCentral избавит 2,5 тыс. разработчиков Java компании IBM от необходимости дублировать работу друг друга. Однако после того как технология "пауков", разработанная отделом Computer Science Department исследовательского центра Almaden компании IBM, была объединена с технологией анализа и создания визуальных связей в исходных текстах, подготовленной в Haifa Research Lab, Дик Никол впервые предложил использовать jCentral для поиска в intranet компании IBM программ на Java и других информационных ресурсов. Таким образом, сотрудники IBM, работающие в различных странах, получили возможность легко находить и повторно использовать программы друг друга. Никол и его помощники провели тестирование этого прототипа для intranet и исправили обнаруженные ошибки, продолжая постоянно анализировать отзывы участников бета-тестирования. После этого периода внутренней разработки Никол, с благословения IBM, расширил цель проекта jCentral. Этот модуль предназначался уже и для широкой публики.
Разработчики проекта jCentral вместе с сотрудниками отдела маркетинга продуктов Java компании IBM организовали несколько рабочих групп, состоящих из опытных программистов на Java. Эти группы помогали усовершенствовать интерфейс и функциональность jCentral, быстро внося необходимые изменения, в частности добавив возможность работы с группами новостей, расширив функции поиска, отшлифовав интерфейс и увеличив поддержку JavaBean.
Больше изучайте Java
Некоторые аспекты разработки jCentral требуют дополнительного изучения и исследования, в частности такие, как процесс использования "пауков" для поиска ресурсов Java, который значительно отличается от поиска с помощью той же технологии страниц HTML. Апплет, включенный в страницу HTML, к примеру, помечен тегом
Фактически процесс разработки "пауков" jCentral позволил Лу более тщательно изучить язык Java: в период разработки jCentral он многое узнал о Java с точки зрения разработки, а также с точки зрения поиска компонентов. Точнее, Лу и другим разработчикам jCentral приходится анализировать возможности апплетов, объектных компонентов и классов, чтобы создавать эффективных "пауков".
Самый важный технический шаг в создании jCentral - разработка его "ядра", то есть "паука", способного "ползать" и выявлять ресурсы Java в Internet. Поскольку "паук" - это резидентная задача, которая может работать без перерыва несколько недель, разработчики jCentral должны позаботиться об ограничении роста памяти, используемой виртуальной машиной Java; с другой стороны, немалая часть процессорной мощности и полосы пропускания ввода/вывода будут расходоваться на сборку мусора вместо того, чтобы использоваться для поиска новых ресурсов Java.
Лу и другие разработчики jCentral пришли к выводу, что увеличить эффективность процесса проектирования "паука" на Java можно двумя способами. Во-первых, организовать основные структуры данных - например, таблицы хеширования, хранящие найденные URL, - таким образом, чтобы в оперативной памяти в каждый момент времени находились лишь небольшие фрагменты, а сами структуры в основном размещались в постоянной памяти - в файлах на диске. Второй способ - создать контроллер, который работает в отдельном адресном пространстве для контроля, периодического завершения и возобновления работы "паука". Последний метод требует создания механизмов приостановки работы "паука". Этот механизм должен сохранять внутреннее состояние в файлах, загружать сохраненное состояние после возобновления работы и продолжать поиск из состояния, которое было на момент прерывания работы. Сочетание обоих методов снижает остроту проблемы роста объема используемой памяти и позволяет проводить эффективный поиск с помощью "паука".
Разработчики jCentral больше узнали не только о технической стороне Java, в частности о том, как люди его используют, насколько он популярен, сколько существует апплетов и какие из них наиболее известны. Они выяснили, что наиболее доступный код содержит экземпляры, предложенные профессорами и студентами университетов, поэтому, по всей вероятности, чаще всего нужные апплеты можно найти на образовательных узлах. Кроме того, наибольшей популярностью пользуются различные игры, фрагменты обучающих исходных текстов (например, примеры серий объектов), The Lake Applet - апплет обработки файлов в формате GIF, предложенный Дэвидом Гриффитом, который создает эффект отраженной воды и используется на более чем 4 тыс. страниц Web.
Представители IBM отмечают, что "пауки" jCentral редко ищут примеры использования Microsoft J/Direct, в частности, потому, что разработчики Java в основном применяют JDK компании Sun.
Работа в специализированных группах и поиск с помощью "пауков" заставили разработчиков jCentral прийти к выводу, что как разработчики, исправляющие дефекты языка, так и злоумышленники часто ищут трудные для понимания и плохо документированные аспекты JDK, такие как GridBagLayout или невразумительный AWT в JDK. Иногда "пауки" находят дублированные наборы данных, такие как публикации на университетском узле, касающиеся программы сортировки по методу Гузлинга. В целом разработчики ищут высококачественные исходные тексты, апплеты и компоненты для использования на домашних страницах и при разработке проектов, таких как примеры кода для изучения Java.
Инструмент для краж?
Хотя jCentral обещает упростить разработку Java, многие обеспокоены потенциальной опасностью краж интеллектуальной собственности. "Украденный" код могут использовать декомпилятор и дизассемблер, такой как javap, а также шестнадцатеричный дамп или строковые команды Unix для преобразования байтового кода в исходный текст. Угроза кражи интеллектуальной собственности, исходит, однако, только от jCentral (или других инструментов поиска) - это проблема, присущая Internet в целом. Для обнаружения некоторых данных вместо jCentral можно использовать механизмы поиска общего назначения, однако в этом случае времени потребуется больше, поскольку они не оптимизированы для работы с ресурсами Java.
Даже в этих условиях разработчики jCentral пытаются ограничить опасность, применяя методы, которые защищают копирайтные материалы. Во-первых, jCentral не запускает апплеты; его репозитарий содержит лишь метаданные о коде и указывает на ресурсы Internet, которые содержат этот код. Это важно для разработчиков, которые не хотят, чтобы кто-либо, в том числе jCentral, использовал и запускал их код без предварительного получения разрешения. Во-вторых, jCentral предлагает две версии своей страницы с информацией о результатах поиска - обычную страницу и страницу, учитывающую владельцев авторского права, где указаны конкретные ограничения на использование кода. Все, что имеет копирайт, автоматически появляется на странице только с соответствующим набором информации о результатах поиска.
В основном разработчики весьма позитивно отзываются о новом инструментарии. На конференции JavaOne павильон, где демонстрировался jCentral, пользовался популярностью никак не меньшей, чем аттракцион на ярмарке. Скептически настроенные разработчики обрушили на сотрудников компании град вопросов, касающихся таких вещей, как Red-Black Tree и AVL Tree (алгоритмы сортировки), сортировка методом пузырьков, "обтекание" иллюстраций и алгоритмы защиты MD5. Многие программисты просили найти собственные программы, и jCentral ни разу не ошибся, уверенно указывая источник и предоставляя экземпляр кода.
Карл Макенхоуп, бывший разработчик EarthWeb, который теперь работает в этой компании консультантом, высоко оценил jCentral. Ему долго не удавалось найти написанный им конкретный апплет, а jCentral смог его обнаружить очень просто. Макенхоуп предсказывает, что сервисы EarthWeb - Developer.com и Gamelan - в совокупности с jCentral станут такими же популярными, как и Yahoo! и Alta Vista.
Некоторые разработчики Java скептически относятся к jCentral. Инженер компании SGI и ведущий колонки в JavaWorld Билл Дей считает, что нет никакой необходимости в регулярном использовании jCentral, поскольку лично он уже знает, где найти конкретную информацию, связанную с Java, не прибегая к помощи ни механизмов поиска общего назначения, ни jCentral. Однако он пока не отверг jCentral окончательно и, анализируя, как расширяется функциональность этого модуля, намерен время от времени искать конкретные экземпляры кода. Дей также считает, что добавление в jCentral возможности выполнять поиск с логическими операциями в подмножествах своего репозитария (например, поиск слова JavaWorld, но не java.sun.com и других подобных комбинаций индексированных подмножеств) значительно увеличит его ценность. (Хороший пример тому - DevSearch, узел Web, который индексирует информационное наполнение более десяти узлов, интересных для разработчиков Web.)
Майкл Шофнер, президент компании PDC, занимающейся разработкой программного обеспечения, утверждает, что jCentral предлагает не больше реальной информации, чем Alta Vista или DejaNews, что размер шрифта на итоговой странице jCentral слишком маленький и часто для групп новостей инструментарий поиска DejaNews предлагает лучший интерфейс.
Перспективы
Сейчас идет работа над целым рядом усовершенствований. В конце мая разработчики jCentral выпустили руководство, где подробно описаны все возможности jCentral и объясняется, как выполнять эффективный поиск. Среди планируемых модернизаций jCentral - добавление стандартной нотации UML к функции, определяющей соответствия; возможности вызова URL по щелчку мыши внутри идентификационного поля карты; максимально широкие возможности выбора из исходного кода при поиске, импорте и организации пакетов внутренних классов (сейчас ссылки на информацию о классах, методах и членах данных удаляются или соответствующие "ярлыки" становятся недоступными). Будут предусмотрены категории для статей и документации, отличающихся от категории Other; идентификация типа информации с помощью уникальных пиктограмм, размещаемых в каждой записи Results (результатов поиска); возможность указывать периодичность рассылки уведомлений о сообщениях электронной почты.
Несмотря на то что jCentral появился не так давно и определенно требует шлифовки, эта служба стоит внимания Java-разработчиков. Как говорит Уди Манбер, профессор компьютерных наук университета Аризоны и консультант компании IBM, "если вы хоть как-то связаны с Java, вам непременно нужно поработать с jCentral".