ТЕХНИЧЕСКИЙ АНАЛИЗ

Впереди по курсу - рационализация задач программирования

При 67 готовых к реализации изменениях в спецификации Java (JSR) и 31 предложении, находящемся на рассмотрении, эта платформа все еще остается в значительной мере незавершенным произведением - главным образом в положительном смысле.

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

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

Создатели Java с самого начала учли такой недостаток популярных современных языков программирования, как их сложность (в особенности это относится к C++). Они намеренно отказались от ряда языковых средств - (включая указатели на произвольные адреса в памяти), которые создают по крайней мере не меньше возможностей для программистских ошибок, нежели для повышения эффективности программ.

Судя по опыту специалистов Тестового центра eWeek Labs, эта мера принесла свои плоды. Как и многие другие, кто занимается оценкой производительности труда разработчиков, мы обнаружили, что в типовом случае задача программирования на Java решается вдвое, а то и вчетверо быстрее, чем на C++, - даже в тех случаях, когда она решается на обоих языках впервые.

Еще одно немаловажное обстоятельство: более высокая потребность в отладке программ на C++ (наблюдения показывают, что в них обнаруживается в два-три раза больше ошибок в расчете на строку кода, а кроме того, и самих этих строк тоже больше) сдвигает баланс показателей производительности в пользу Java, когда программисту приходится писать новый код, не ограничиваясь использованием готовых интерфейсов прикладного программирования - таких, как интерфейсы ОС Windows.

Впрочем, значение этих мер предосторожности существенно умаляется в силу того, что стремительно растет рынок готовых компонентов на языке Visual Basic и расширяется распространение предназначенного для работы с ними инструментария, основанного на модели компонентных объектов Component Object Model корпорации Microsoft. В результате наиболее производительным оказывается способ создания программ, вообще не предусматривающий написания собственного кода, - комбинирование с помощью высокоуровневого инструментария готовых компонентов, обладающих развитыми функциональными возможностями.

Маятник качнулся

Новые инициативы поставщиков конкурирующих платформ способствуют повышению производительности труда разработчиков.

 

Достижения Java

- Технология JavaServer Faces упрощает организацию связей между пользовательскими интерфейсами на клиентских машинах и функциональными компонентами, работающими на серверах.

- Java Metadata Facility рационализирует решение часто встречающихся, но представляющих значительную сложность задач программирования.

Достижения .Net

- Единая модель языков программирования Common Language оставляет разработчикам больше свободы в выборе компромисса между безопасностью и эффективностью.

- Развитой рынок функционально насыщенных готовых программных компонентов стимулирует повторное использование готовых модулей.

 

Достижения остальной отрасли

- Уровень интеграции и функциональные возможности инструментов программирования постоянно совершенствуются.

Маятник преимущества в показателях производительности еще сильнее качнулся в сторону Windows-технологий с представлением единой модели языков программирования Common Language и вспомогательной среды исполнения для .Net Framework. Во многих отношениях предложенный Microsoft язык C# являет собой "Java с отключаемыми подушками безопасности". Он позволяет программисту сделать глубокий вдох и пойти на обгон, отказавшись от помощи техники и полагаясь лишь на себя самого, - если есть уверенность, что повышенная эффективность рискованного кода стоит тех усилий, которые придется потратить на его выверку.

Средства обеспечения безопасности среды .Net и другие ее усовершенствования разбили многие аргументы, выдвигавшиеся ранее Java-разработчиками при выборе платформы.

Теперь, говоря о преимуществе в производительности, сторонники Java больше упирают на достоинства вспомогательного инструментария, такого, как JavaServer Faces из JSR 127. Эта технология должна значительно упростить сопряжение серверных функций с пользовательскими интерфейсами, находящихся на клиентских системах.

Появление предусмотренных JSR 175 средств автоматической обработки Java-текстов на основе метаданных способствует уменьшению числа строк исходного кода, необходимых для достижения результата. Этот стандартный механизм назначения атрибутов прикладным элементам ограничивает свободу создателей инструментов разработки для Java в интерпретации общих идиом языка. Программистов, предпочитающих самостоятельно подбирать инструменты для работы на собственный вкус, это заставит быть более разборчивыми.

JSR 223 претендует на ликвидацию преимущества .Net перед Java в простоте доступа к программным объектам из сценариев. Особый акцент сделан на популярный в Web язык описания сценариев PHP, но поддерживаются и такие устои корпоративных вычислений, как REXX.

JSR 224 предлагает интерфейс прикладного программирования удаленных вызовов процедур на базе XML для стремительно расширяющейся империи Web-служб - в ответ (пускай и не слишком оперативный) на реализованный в .Net простой механизм организации доступа к Web-службам без написания больших объемов дополнительного программного кода.

В 1997 г. передовой край новаторства в рядах раннего Java-инструментария занимали два продукта фирмы Sun Microsystems - элегантная среда разработки на базе браузера Java WorkShop и Java Studio с ее передовой ориентацией на компоненты. Эта ранняя и агрессивная реализация принципа "для Java на Java" опередила свое время. Новая платформа тогда еще не была вполне готова к конкуренции в оперативности реагирования построенного на ее основе инструментария на команды разработчика.

На сегодняшний день использование Java-технологий для построения средств разработки на Java - намного более решаемая задача, и усиление акцента на нее ясно просматривается в нынешнем поколении усовершенствований языка.

С главным редактором отдела новых технологий eWeek Питером Коффи можно связаться по адресу: peter_coffee@ziffdavis.com.