Intelligent Enterprise: Какие особенности платформы Java позволили ей стать такой популярной?
Джеймс Гослинг: Java как платформа сегодня отражает главную тенденцию современности - все большее распространение сетевых технологий. Сегодня сетевая архитектура стала господствующей, и в эту "экосистему" включается все больше самых разных устройств. И Java, с моей точки зрения, максимально приспособлена для работы в этих условиях.
Другая причина такой популярности Java - универсальность. Хотя Java исполнилось уже 10 лет, мы только сейчас в полной мере осознаем масштабы ее возможного применения. Java сегодня работает в любых - и в переносных, и в интерактивных - устройствах. Например, с Java-технологиями связан весь интерактивный контент DVD-дисков. Интерактивность подразумевает далеко не только индустрию развлечений. Например, в самолетах (в частности, такие разработки ведет компания Boeing) совсем скоро будут использоваться мобильные Web-сервисы, которые позволят бортовой электронике, где используется Java, работать с удаленными устройствами в режиме реального времени. Это дает возможность создавать полноценные беспилотные устройства, например для спасательных операций. Те, кто находится в удалении, смогут видеть, что происходит в районе такой операции, и к моменту прибытия людей с помощью такого оборудования уже можно будет координировать все движущиеся средства на месте событий.
Несмотря на все это многообразие возможностей для применения Java-технологий и огромное разнообразие аппаратных средств, с помощью которых эти технологии реализуются, - будь то мобильный телефон или тяжелый сервер, мне очень приятно, что Java делает реальным однородный подход к каждой системе. Это позволяет коллективам разработчиков Java понимать "всю вселенную" этих систем. Инженер-разработчик может один раз изучить Java и в дальнейшем без переобучения работать в областях самого разного применения ее технологии.
Разумеется, с таким широким применением Java-технологий для Java повышается значение вопросов безопасности. Наши технологии влияют на жизнь многих людей, и информационные системы, где используется Java, например, в области финансов, без обеспечения высокой степени защиты просто не могут существовать. И наш опыт в этой области я не стесняясь могу назвать выдающимся - мы постоянно общаемся с банками и другими финансовыми институтами и не встречали еще ни одного случая возникновения угроз безопасности, связанных с работой Java-технологий.
Есть ли уникальные задачи, которые помогает решить Java, не решаемые посредством традиционных языков программирования?
Java сравнивают с другими языками, пытаясь понять, что же привело ее к нынешним успехам. В момент ее возникновения Java была просто одним из языков программирования, и на нее оказали влияние такие языки, как Си, Си++, LISP. Но, развиваясь, Java много дала программированию, появление этого языка ускорило восприятие и повсеместное использование сетевых технологий. Сегодня практически каждое приложение Java - это сетевое приложение. Java хорошо функционирует в условиях многопроцессорной обработки данных. Сейчас, с ростом числа многоядерных процессоров, Java дает возможности для параллельного программирования.
Если сравнивать стоимость разработки на Java со стоимостью, например, аналогичной разработки на С++, второе обходится дороже. При этом как разработчик я считаю, что любую задачу можно решить разными способами. Вопрос не в уникальности Java и не в том, что на других языках аналогичный функционал реализовать невозможно. Речь идет просто о том, что на других языках решение этих задач так сложно, что лучше просто не подступаться. На базе других языков сложно разрабатывать крупномасштабные комплексные системы для корпоративного сектора. В Java можно найти решения, обрабатывающие несколько миллионов параллельных потоков. Java выигрывает именно в случае работы с большими объемами данных в сложных средах, например в системах фондовых бирж или онлайнового бронирования авиабилетов. Кроме того, именно в Java так полноценно реализован сетевой функционал, без которого немыслимы современные информационные системы. Да, Java - обычный алгоритмический язык, но с рядом задач он справляется эффективнее других.
Что собой представляет сегодня сообщество разработчиков Java, и каковы принципы его работы?
Все, что происходит в мире Java, - это коллективные усилия Java-сообщества. Членами сообщества являются 780 корпораций, всего же, по нашим подсчетам, в мире около 5 млн профессиональных Java-разработчиков. У нас есть принципы, по которым они работают.
Одним из таких принципов можно назвать открытость наших стандартов. Как правило, организация, отвечающая за стандартизацию, - это хранилище информации об определенных стандартах. Но как узнать, соответствует ли какая-то разработка этим стандартам? Одних заявлений разработчика явно недостаточно, поэтому у нас есть комиссия, которая проверяет новые разработки на соответствие стандартам. Кроме того, обычно организации, отвечающие за стандартизацию, забюрократизированы. Мы стараемся не перегружать наших разработчиков количеством лицензий и стремимся к тому, чтобы это были лицензии самые общие.
Еще один недостаток таких организаций часто состоит в том, что стандарт документируется до того, как он был где-то реализован. Поэтому в состав наших стандартов входит помимо технических условий (спецификации) еще и типовая реализация стандарта. Кроме того, ни одна из разработок не будет утверждена, пока не проверена ее совместимость с другими компонентами Java. Это по-прежнему сложная задача, несмотря на все наши усилия по упрощению этого процесса. Любой новый Java-стандарт проверяется Java-сообществом, оно дает нам свои отзывы. Их комментарии изучаются, проверяются, и стандарт окончательно принимается в результате утверждения особым комитетом.
То есть проекты Java-разработчиков мы проверяем на соответствие нашим стандартам, но в то же время даем им возможность вносить в Java-сообщество свои идеи. Наша модель разработки Java чем-то похожа на улицу с двухсторонним движением. Исходные коды Java открыты уже больше 10 лет, и Java от этого только выиграла. Сейчас мы открываем коды ОС Solaris и хотели бы получить тот же эффект, но подводить итоги пока рано.
Вы часто встречаетесь с клиентами - представителями корпоративного сектора. Каковы их пожелания и предложения по развитию Java?
У большинства клиентов потребности и пожелания связаны с масштабированием, надежностью и безопасностью, а также с тем, чтобы можно было делать собственные дополнительные разработки на Java. Многие клиенты хотят иметь возможность одновременной работы с продуктами Microsoft, и с .NET.
Каковы перспективы отношений Java с .NET? И что выгоднее для корпоративного заказчика - вкладывать инвестиции в одну платформу или в обе?
Касаясь наших отношений с Microsoft и с главным конкурентом Java - технологией .NET, могу сказать, что мы стараемся двигаться в сторону большей совместимости. Мы идем навстречу нашим клиентам, которые хотят работать в гетерогенной среде. Но даже в дальней перспективе о полной интеграции с .NET речи не идет. Думаю, наши платформы в ближайшие 10 лет будут существовать параллельно.
Однако, технология .NET чаще всего используется для работы на настольных ПК. Кроме того, эта технология не работает достаточно эффективно в крупных системах, не является кросс-платформенным решением, как Java. Решение на Java клиент может получить у разных поставщиков. Например, основанную на Java технологию Application Server предлагают такие компании, как Oracle и IBM. Приложения на Java могут быть созданы и реализованы на базе любой платформы. В зависимости от того, какая платформа отвечает их задачам, это может быть и Windows, и Linux, и Solaris. Даже написав одну игру для мобильного телефона на Java, вы можете ее инсталлировать на сотнях других моделей. Поэтому, с моей точки зрения, работать с нашей платформой проще.
Сейчас существует тенденции переноса приложений на архитектуру SOA. Как вы видите перспективы этой технологии, и в чем ее преимущества?
SOA - это достаточно сложная для меня тема. Ведь каждый, кто говорит о SOA, вкладывает в это понятие свое значение. Разные люди по-разному понимают, что такое SOA. Часто ее воспринимают как набор задач, которые работают только на базе Web-сервисов. Если люди полагаются только на такое понимание, то, мне кажется, они упускают значительную часть ценности SOA.
На мой взгляд, само понятие SOA эквивалентно объектноориентированной технологии, но применительно скорее к крупномасштабным сетям, чем к адресному пространству одного процесса. Я имею в виду, что в основе этой архитектуры лежат очень эффективные принципы организации систем. SOA - это то, как вы структурируете крупные архитектуры и сервисы, а не то, как вы создаете отдельные архитектуры, накладывая их одну на другую. Существует огромное множество методологий реализации SOA. Среди основных на Java - CORBA и Jinni, обе предназначены для разработки систем на базе SOA.
Сегодня все сетевые услуги на базе Web-сервисов построены на основе не SOA, а другой методологии, но все же я считаю, что SOA - это наиболее правильный подход для организации сети.
В целом, хотя SOA работает в системах любого масштаба, ее преимущества максимально проявляются в крупных системах. В рамках небольшой системы вопросы оптимизации ее организационной структуры не решают такой роли, как в крупной.
Каковы перспективы развития Java?
О перспективах развития Java, честно говоря, трудно даже задумываться. За эти 10 лет Java-технологии проникли в самые разнообразные области - от космических кораблей до телефонов. Само сообщество разработчиков Java очень разнообразно, разработки движутся в самых разных, зачастую противоположных, направлениях. Сейчас в качестве наиболее перспективных областей применения Java я бы назвал системы работы в режиме реального времени, смарт-карты. Java все больше используют в инфраструктурных решениях, в сложных корпоративных приложениях. Но наибольший количественный рост Java-решений в ближайшие годы я вижу в секторе смартфонов.