Java "стукнуло" 10 лет. Довольно большой срок для технологии. За это время Java пережила несколько эволюционных этапов своего развития - от языка программирования до платформы для разработок, - завоевала интерес ИТ-сообщества и прочно укрепилась на позициях одного из общепринятых стандартов в сфере ИТ-разработок.

Идея проекта Java заключалась в том, чтобы приложения можно было создавать не под конкретную аппаратную платформу и даже не под конкретную операционную систему, а под некую интеллектуальную платформу, которая была бы доступна везде. Как к этому шли? Развитие информационных систем начиналось с того, что приложения писались под какую-то конкретную аппаратную платформу на машинных кодах. Затем появился Assembler, что дало возможность писать уже не на машинных кодах, а в неких элементарных командах, которые потом легко транслировались в машинные коды. Далее возникли языки программирования, компиляторы. И если на первом этапе совсем не было переносимости, а с Ассемблером переносимость была в рамках одной архитектуры, то с появлением языков программирования (С, Pascal и др.) переносимость вышла на уровень исходных кодов. Java дала возможность писать приложения, не привязываясь к аппаратуре, к архитектуре, к компилятору. Хотя здесь тоже есть некоторые ограничения, поскольку существуют разные системы: компактные, десктопные, серверные. И хотя язык программирования один, его реализации и библиотеки в каждом случае "затачиваются" под какие-то конкретные задачи. Так и появились три варианта платформ Java (см. врезку "Три кита").

Три кита

Сегодня компания Sun Microsystems выделяет три глобальных направления в Java по областям применения. Платформа, с которой все начиналось, - Java Standart Edition (J2SE) - представляет собой виртуальную машину, некий стандарт (язык программирования и библиотеки по разработке на Java). J2SE позволяет создавать традиционные приложения, которые могут работать на любой платформе, в которой есть виртуальная машина Java. Другими словами, платформа J2SE в первую очередь предназначена для разработки стандартных сетевых приложений для рабочих мест.

Платформа Java Micro Edition (J2ME) представляет собой немного урезанный вариант J2SE, она содержит меньше библиотек. С одной стороны, эта платформа обладает меньшими возможностями, а с другой - благодаря своей компактности дала возможность использовать Java на целом ряде небольших устройств, таких как телефоны, органайзеры, Java-машины в холодильниках, телевизорах и пр. J2ME - самая широко применяемая Java-платформа в мире.

И третья платформа, Java Enterprise Edition (J2EE), является средой разработки серверных приложений на Java. Сама компания Sun Microsystems большую часть своих серверных корпоративных программных продуктов разрабатывает в этой архитектуре. Что касается продуктов других компаний, то J2EE используется практически во всех современных серьезных разработках. "Почти любая большая коммерческая система либо полностью, либо в большей степени разрабатывается с использованием стандарта J2EE. Это и CRM-системы, и ERP", - говорит менеджер по программным продуктам компании Sun Microsystems Евгений Абрамов.

Можно сказать еще об одном направлении - смарт-карты в стандарте Java (Java Card). Это совсем урезанная версия Java, которая позволяет писать код под смарт-карту и соответственно переносить этот код между разными Java-машинами, которые работают на этих смарт-картах. Самый наглядный пример: большинство SIM-карт в мобильных телефонах есть не что иное, как реализация Java Card.

Открытость с одним "но"

Сегодня Java развивается во многих направлениях. Они отражают потребности определенных технологических, индустриальных областей: например, Java 2D и 3D для графики, Java Cryptography Extension (JCE) для безопасности, Java Connector Architecture (JCA) и Java Business Integration (JBI) для интеграции систем, Java Management Extensions (JMX) для управления, Java Naming and Directory Interface (JNDI) для связи с каталогами и многие другие.

Все Java-платформы являются открытыми проектами, и их развитием занимается не только Sun, а мировое сообщество Java-разработчиков. Существует процесс Java Community Process (JCP), который позволяет любой компании или человеку поучаствовать в разработке самой платформы, ее стандартов, расширить ее в том или ином направлении.

Однако при всей открытости Java-платформы существует одно очень важное "но". "Sun изначально была против рождения разных несовместимых между собой вариантов Java, поэтому Java не совсем попадает под стандартное определение Open Source, - поясняет менеджер по программным продуктам представительства Sun Microsystems в регионе СНГ Евгений Абрамов. - Модель Open Source - это когда каждый имеет право развивать систему в произвольном направлении, которое уже может быть несовместимым с тем, от чего отделилось. В случае Java процесс JCP открыт и демократичен, а демократия тут означает движение в том направлении, за которое проголосовало большинство. Этим процессом не управляет ни Sun, ни какая другая компания. Это некий общественный контроль. Он очень важен, так как позволяет сохранить переносимость Java, то есть любое разработанное приложение может работать на разных серверах приложений, на разных J2ME-устройствах".

У всех

Сейчас, наверное, уже сложно назвать компанию, которая бы в той или иной области не использовала Java. Основные отрасли, где активно применяются Java-разработки, - это телекоммуникации и финансовый сектор. Именно в таком порядке. Говоря о телекоммуникационном рынке, можно упоминать все уровни - это и SIM-карты, и телефоны, и биллинговые системы, и CRM-системы, которые используются компаниями этого сектора.

Что до банковских систем, то в первую очередь следует назвать электронный банкинг - электронный доступ к своему счету. Web-cтраницы, которые показывают состояние счета, создаются J2EE-системами. Например, крупнейшие мировые и российские банки предлагают своим клиентам сервисы для управления счетом через Интернет или мобильный телефон, которые представляют собой ни что иное, как Java-приложение.

CRM-системы, основанные на Java, намного проще в настройке для конкретного заказчика по сравнению со своими закрытыми конкурентами. В процессе внедрения CRM-системы разработчики могут легко менять и настраивать как пользовательский интерфейс с использованием JSP, так и бизнес-логику через JavaBeans. (примеры можно увидеть на www.amdocs.com/documents/Customization_Center.pdf). Среди проектов, реализованных подразделением Sun Microsystems Client Solutions, - портальные решения для энергетического сектора, системы управления доступом для нескольких крупнейших телекоммуникационных компаний. Практически все проекты Client Solutions так или иначе завязаны на Java, в них либо используются продукты Sun на платформе Java, либо разрабатывается что-то на языке Java. "Java настолько широко применяется, что заказчик зачастую даже не знает, что использует Java, и это как раз говорит о насыщении рынка, - говорит Евгений Абрамов. - Заказчик лишь говорит, что ему нужно, а это в большинстве случаев и приводит с собой платформу Java".

Здесь хочется отметить еще одну тенденцию. Все больше западных компаний достаточно активно используют Java, более того, развивают разработки именно в России. Яркий тому пример - компания Deutsche Bank, у которой большие ресурсы разработчиков сконцентрированы здесь, в московском представительстве.

Переносимость данных

Наряду с переносимостью программ сегодня стоит задача реализовать переносимость данных из разных систем и разных архитектур - то есть чтобы, например, можно было электронную таблицу открыть и на персональном компьютере, и на сотовом телефоне, и под ОС Window, и под Linux. В этой сфере тоже все начиналось c форматов данных, которые читались только в рамках одной аппаратной платформы, потом в рамках одной архитектуры, потом в рамках одной ОС. Сейчас появился XML, который позволяет описывать данные в формате, понятном вне зависимости от того, на каком устройстве читается документ. "Я считаю актуальным совместное использование Java и XML, - говорит Евгений Абрамов. - Это то, над чем сейчас Sun активно работает. Мы называем это направление Java Web Services. Есть переносимый код, есть переносимые данные, и приложения мы можем разрабатывать таким образом, что они, во-первых, работают на любой платформе, а во-вторых, могут обмениваться информацией между собой, то есть, учитывая возможности каждого из этих приложений, динамически связываться друг с другом. На мой взгляд, Java Web Services сейчас развивается активнее всех других направлений в области Java".

Java Web Services позволяет решать проблемы интеграции между системами у одного заказчика или между системами у разных заказчиков. Например, есть крупная торговая сеть, которая продает товары в розницу. Есть производитель - некая крупная компания, которая делает довольно много разных продуктов (в частности, шоколадных батончиков). И вот стоит задача - проинтегрировать поставки. Чтобы, с одной стороны, производитель мог планировать производство своих шоколадных батончиков, с другой стороны, магазин, по мере того как идут продажи, имел возможность заказывать в режиме онлайн новые партии этих батончиков. Это только часть задачи. Ведь производитель поставляет свои батончики в различные торговые сети, и магазин продает не только шоколадные батончики, а тысячи других товаров. Если размещать заказы вручную, то все очень сложно прогнозировать. В результате в какой-то момент возникает ситуация, когда в магазине может не оказаться какого-то конкретного товара. Это плохо и для покупателя, и для магазина. Магазину же вообще выгодно держать товара ровно столько, сколько он может продать. И вот для того, чтобы магазин мог не держать громадные склады и в то же время не оставался без какого-то товара, активно развивается направление Java Web Services, решаются задачи интеграции ERP-систем у поставщиков, продавцов, клиентов.

***

"Сейчас мы наблюдаем следующую картину. Мир информационных технологий консолидировался вокруг двух платформ для разработки приложений, - говорит Евгений Абрамов. - Первая сфера - платформа Java и ее различные реализации. Вторая крутится вокруг решений на платформе Microsoft. И сегодня серьезные большие корпоративные системы разрабатываются в стандарте J2EE, системы среднего уровня - либо в J2EE, либо на платформе Microsoft, клиентские места - это в первую очередь Microsoft, хотя J2SE тоже довольно популярна, мир компактных решений - те же две платформы, но перевес в сторону Java".