Технологии Java нужны более эффективные средства для решения простых задач

Представьте, что это вы изобрели технологию Java. Что будете делать дальше? Если ваше имя Джеймс Гослинг, то вы удаляетесь в святая святых Sun Labs — научно-исследовательской группы корпорации Sun Microsystems — и там в течение года трудитесь над созданием следующего поколения инструментальных средств разработки программного обеспечения. Вы участвуете в проекте Jackpot, который призван упростить процедуры управления разработкой сложного программного обеспечения и его поддержки. Что это такое? Джеймс Гослинг сравнивает Jackpot с lint — известной утилитой проверки программного кода, написанного на языке Си.

По словам Гослинга, у Sun сейчас имеется ряд новых средств разработки, которые должны упростить проектирование и использование приложений и Web-служб, созданных на базе Java.

Джеймс Гослинг: «Мы ориентируемся на высококвалифицированных разработчиков, и созданные нами инструментальные средства пока не предназначены для людей, которым нужно решать простые задачи»

Чем вы сейчас заняты в Sun Labs? По-прежнему работаете над Jackpot?

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

Существуют ли сегодня коммерческие продукты, аналогичные Jackpot?

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

Некоторые разработчики утверждали, что технология Java выиграет, если представить ее в виде стандартной интегрированной среды разработки, как это сделала Microsoft для своего семейства продуктов Visual Studio. Оглядываясь назад, можно ли считать, что рынок инструментальных средств Java развивается в правильном направлении или же стоило поискать какой-то иной путь?

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

Но не кажется ли вам, что многообразие выбора приводит к тому, что Java нередко воспринимается как технология, которую не так просто применять?

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

А кто занимался подобными разработками?

Возьмем недавний пример — проект, реализованный при содействии ООН в Бразилии. Люди, которые принимали в нем участие, выступали на конференции JavaOne в июне этого года.

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

Хорошо, а что еще, помимо простых в использовании инструментальных средств Java, может привлечь сейчас ваше внимание?

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

Вы хотите сказать, что появление платформы Java 2 Enterprise Edition (J2EE), возможно, не самое знаменательное событие с точки зрения развития технологии Java в целом?

Даже не знаю, как мне корректно ответить на этот вопрос. Я хочу сказать, что J2EE имеет очень важное значение и пользуется поистине огромным успехом. Но эта платформа настолько популярна и получила настолько широкое распространение, что ее присутствие для меня так же естественно, как присутствие кислорода в воздухе, которым мы дышим. Она находится повсюду, вы полностью зависите от нее, но это не то, что поражает воображение, когда просыпаешься утром. Конечно, если очутиться на поверхности Луны, наличие там кислорода действительно покажется удивительным. Но на Земле кислород — совершенно обыденная вещь.

А что можно сказать по поводу настольных систем?

Технология Java очень хорошо проработана для настольных систем. Об этом не принято громко заявлять, но многие люди постоянно занимаются написанием Java-приложений для настольных компьютеров. Таких людей в большом количестве можно встретить в корпоративных информационных службах, где разрабатываются приложения для внутреннего пользования. Подобные программы пишут также студенты университетов. Конечно, есть вопросы, связанные с привязкой к платформам, — в какой-то степени это способ существования мира Windows. И поэтому на практике часто оказывается, что для разработки Windows-приложений лучше подходят инструментальные средства Microsoft. Но вот что интересно — в последнее время появляется все больше конкурентоспособных настольных компьютеров (я говорю, естественно, о коммерческих продуктах), работающих не под управлением Windows. Разработчикам Macintosh, на мой взгляд, удалось добиться потрясающих результатов. Заслуживают похвалы, на мой взгляд, и те, кто занимается Linux, хотя и не в той степени, в какой авторы последних наработок для Macintosh. Таким образом, с учетом растущей конкуренции между различными платформами для настольных компьютеров у Java практически не остается достойных соперников.

Нравится ли вам что-нибудь в C#?

Помимо того что подражание — самая искренняя форма самообольщения и порождения иллюзий? (Смеется.)

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

Некоторые разработчики утверждали, что в C# по сравнению с Java улучшена поддержка атрибутно-ориентированного программирования, что упрощает написание Web-служб.

В C# нет атрибутно-ориентированного программирования. Если вы посмотрите на поддержку Web-служб в Java, нетрудно заметить, что все здесь работает очень хорошо.

Единственное, в чем Microsoft действительно добилась успехов, — это простые в использовании инструментальные средства, которые облегчают разработку приложений. Поэтому говорить о преимуществах C# в отрыве от инструментальных средств не имеет смысла. Таким образом, мы возвращаемся к тому, о чем шла речь раньше. Чтобы сделать окончательный вывод, нужно проследить саму историю развития Java. Эта технология позволяла решать сложные задачи, но выполнение простых вызывало определенные затруднения. В мире Microsoft простые задачи решаются очень легко, зато решение сложных оказывается невозможным. Поэтому сегодня мы упорно работаем над тем, чтобы облегчить решение простых задач. Более конкретно — речь идет о разработке инструментальных средств. Значит, есть смысл подождать появления новых инструментов.

Какое влияние Web-службы оказывают на развитие Java?

А что вы понимаете под Web-службами? Ведь одно из определений Web-служб гласит: это все, что вы делаете при помощи технологии XML поверх протокола HTTP. Если такое определение Web-служб совпадает с вашим, на языке программирования это практически никак не отражается. Здесь можно говорить о воздействии на API. У нас имеются все дополнительные модули для поддержки XML через HTTP.

Но если Web-службы понимаются в более широком смысле (т.е. к ним относятся любые службы, работающие через Сеть), это уже затрагивает все конструктивные нити Java. На мой взгляд, поворотный момент, отличающий архитектуру Java от всего того, что было раньше, следует искать в ответе на вопрос: «В чем заключается смысл создания Сети?» То есть вас должны волновать вопросы устойчивости и безопасности.

Если взглянуть на базовые конструкции Java, можно дать ответы на многие вопросы, касающиеся непосредственно языка: «Какие средства имеются здесь для построения непробиваемой системы безопасности? Какие средства есть для создания по-настоящему устойчивой системы?»

Набор инструментальных средств для создания Web-служб с помощью Java достаточно обширен. Вы можете делать практически все, что угодно, но в этом-то и заключается основная сложность. Это совсем непросто. Представьте себе, что очутились в кабине «Боинга», в то время как собирались всего лишь перелететь через озеро на маленькой «Сессне».

Так значит, все, что нужно сделать для эффективного создания Web-служб на основе Java, ограничивается упрощением инструментальных средств?

Да, это скорее косметическая процедура, чем структурная перестройка.