2004 г
BlueJ: учебная оболочка или полноценная среда разработки?
Вячеслав Яковенко, Издательский Дом "КОМИЗДАТ"
BlueJ разработана в Monash University, в Мельбурне, группой преподавателей
во главе с Майклом Келлингом. Появлению BlueJ предшествовало создание совершенно нового
языка программирования Blue совместными усилиями Sydney University и Monash University.
Разработанная там же среда программирования Blue System по сей день поддерживается и используется
в этих университетах в учебном курсе по ООП.
BlueJ унаследовала все особенности
своей предшественницы, но реализована полностью на Java. Это, естественно, имеет свои
плюсы и минусы. Проект постоянно тестируется на платформах Solaris, Linux, Windows 95
и Windows NT.
Название проекта «BlueJ» (произносится как «блуджэй») созвучно английскому
названию голубой сойки, логотип с изображением которой украшает заставку приложения (фотографией
этой птички желающие могут полюбоваться на сайте разработчиков www.bluej.org).
Изначально проект BlueJ поддерживался Sun Microsystems, базировался
на J2SDK v1.2/1.3 и предназначался для обучения студентов основам ООП и программированию
на языке Java. Этим коллектив преподавателей намеревался решить целый ряд проблем, возникавших
при использовании широко известных сред разработки. Первая из них -- цена профессиональной
интегрированной среды разработки (ИСР) высока даже для студентов из высокоразвитых стран,
что накладывает ограничения на использование ИСР в домашних условиях: ведь для этого каждому
студенту необходимо приобретать отдельную лицензию! Это приводит к тому, что в ход идет
стандартный пакет J2SDK от Sun, распространяющийся свободно, который, как известно, работает
из командной строки. При этом оказывается, что внимание студента, изучающего ООП и Java,
занято не классами и объектами, а особенностями операционной системы, файлами, расположением
каталогов и т. п. Но использование визуальных ИСР не только обременительно с финансовой
точки зрения, но и не решает всех проблем учебного процесса. Например, во многих ИСР под
визуализацией разработки подразумевается возможность разработчика поместить на экране
кнопки или другие объекты, но ни одна из существующих сред не позволяет наблюдать иерархию
классов приложения в виде графа, со связями, отображающими наследование. Изобилие же инструментальных
средств в профессиональных средах тоже лишь отвлекает внимание, занимая пространство на
экране. А это, по мнению разработчиков BlueJ, еще хуже, так как заставляет программиста
мыслить не категориями ООП, а последовательностью строк кода, которая свойственна традиционному
процедурному программированию, и щелчками мышкой для достижения нужного результата. К
сожалению, проблемы не ограничиваются оболочками. В самом языке тоже есть несколько «узких
мест», трудных для понимания новичка, например сигнатура метода
main:
public static void main (String[] argv);
В этой сигнатуре заложены сразу несколько понятий: статический метод, возвращаемый
тип void, массив. Все это приводит к тому, что в самом начале обучения, когда студент
еще ничего не знает о классах, методах, переменных, циклах и т. п. для наглядной демонстрации
простейшего присвоения значения переменной необходимо создать хотя бы каркас c методом
main. Преподавателю не остается ничего лучшего, как предложить аудитории поверить ему
на слово, что этот метод должен быть объявлен так, а не иначе, так как при использовании
стандартных ИСР нет возможности выполнить часть кода, не создав всего скелета класса.
Итак, существующие решения оказываются не вполне удовлетворительными:
у J2SDK нет интерактивной оболочки, а большинству ИСР не хватает конструктивных решений.
В BlueJ все эти проблемы решены, и вот как это сделано.
Окно менеджера проекта состоит из вертикальной панели инструментов, расположенной слева,
графа классов в центре и панели объектов внизу.
Приятно отметить, что окно менеджера проекта упрощено до предела и
содержит только необходимые элементы. На мой взгляд, авторам удалось очень оригинально
и остроумно продемонстрировать графически работу виртуальной машины (ВМ), отобразив ее
в правом нижнем углу окна в виде спирали, напоминающей винт Архимеда (во время работы
ВМ она движется и меняет цвет). У этого «винта» есть и другое назначение: если дважды
щелкнуть на нем при запущенном потоке, поток (и винт) остановится, и запустится отладчик.
Это очень удобно при отладке «долгоиграющих» процессов и особенно при попадании в бесконечный
цикл.
Классы проекта отображаются в виде прямоугольников и связей между ними.
Цвет и штриховка прямоугольника указывают на состояние, в котором находится класс - модифицирован,
откомпилирован или находится в стадии компиляции,- а вид стрелок -- на тип связи. Например,
штриховка класса Student означает, что класс был модифицирован, а более темный фон класса
Person - что в данный момент идет компиляция этого класса. Такой подход позволяет постоянно
контролировать все, что происходит в BlueJ.
Для того чтобы приступить к редактированию класса, нужно дважды щелкнуть
на соответствующем ему прямоугольнике, а по щелчку правой кнопкой мыши открывается контекстное
меню, позволяющее создать экземпляр класса или выполнить один из его статических методов.
Все это можно проделать независимо от того, готов ли весь класс полностью или только этот
метод.
Если же создать экземпляр класса и поместить его на панель объектов,
появляется возможность выполнять все нестатические методы объекта. Для этого необходимо
вызвать один из конструкторов, например new Staff(). Таким образом, мы получаем возможность,
создав метод и откомпилировав класс, сразу же проверить работоспособность этого участка
кода.
В BlueJ есть набор шаблонов, позволяющих быстро создать «скелет» интерфейса,
класса или аплета, а графические инструменты менеджера проекта позволяют добавить наследование
простым «перетаскиванием» стрелок от одного класса к другому.
Окно отладчика содержит традиционный набор средств и, как отмечают
авторы BlueJ, требует для ознакомления не более 15 минут, даже если пользователь совершенно
незнаком с программированием.
Интересную возможность контролировать состояние объекта предоставляет
команда Inspect из контекстного меню объекта. Она позволяет просматривать состояние полей
объекта так же, как это делается в отладчике.
В состав BlueJ входят менеджер проекта, текстовый редактор и отладчик.
Компилятор, виртуальная машина и некоторые другие средства «позаимствованы» у J2SDK. Кроме
того, не забывайте: BlueJ - бесплатная, платформо-независимая среда. Проект постоянно
совершенствуется. На момент написания этой статьи была доступна версия 1.1.3 (http://www.bluej.org/download/download.html).
Несмотря на то, что BlueJ использует многие инструменты из набора J2SDK,
это среда с графическим интерфейсом. Так, например, интерактивный вызов директивы Tools
? Project Documentation приводит к созданию пакета документации в стиле Sun. Естественно,
в любой момент можно открыть окно терминала или сеанса MS-DOS, в зависимости от платформы,
и выполнить то же самое из командной строки.
Но и это еще не все. В настоящий момент разработчики сделали доступными
исходные коды текстового редактора, а на сайте www.bluej.org ведется
обсуждение нововведений. Так что у каждого есть возможность не только ознакомиться с исходными
текстами, но и внести свою лепту в развитие BlueJ. А если вы серьезно заинтересовались
разработкой, можете подписаться на рассылку новостей.
Конечно, у BlueJ есть свои проблемы. И целый список обнаруженных ошибок
(а где их нет!). Так, например, в последней версии возникли проблемы с отладкой метода
main.
Однако, учитывая масштабность проекта, его свободное распространение,
а также доступность J2SDK (http://www.java.sun.com)
и возможность установки среды на различные операционные системы, включая Linux, BlueJ
вполне может составить конкуренцию многим ИСР. При этом, на мой взгляд, она подходит не
только для начинающего, но и для профессионала, благодаря своей интеграции с J2SDK и полному
набору инструментальных средств.
В заключение хочется добавить, что в настоящий момент на сайте BlueJ
появилась русская версия руководства пользователя, а в ближайшее время появится полностью
русифицированный интерфейс оболочки. Кроме того, хочется обратить внимание преподавателей
наших ВУЗов на то, что в сочетании с Linux BlueJ позволяет создать полностью легальную
среду разработки межплатформенных приложений. А это реальная возможность, во-первых, уйти
от пиратских копий Turbo Pascal, на которых построено обучение в большинстве институтов,
а во-вторых, использовать самые современные технологии для разработки веб-приложений в
учебном процессе.