JAVA і XML - що за горизонтом?

Сергій Дунаєв

Про нову мову розмітки електронних документів XML (Extensible Markup Language), ще одному підмножині SGML, написано вже досить * 1. Але до сих пір для багатьох незрозумілі перспективи його практичного використання. Справді, якщо XML потрібен тільки для того, щоб подолати початкову статичність HTML і оживити вміст Web-сторінок, так в нинішній час подібні завдання вирішуються надзвичайно легко за допомогою прекрасних інструментів - ASP (Active Server Page), JSP (Java Server Page) , аплетов, сервлетів, скріплет і т. д. Здавалося б, навіщо винаходити нову мову, якщо старий, настільки добре знайомий, постійно збагачується новими можливостями? В тому-то й справа, що причина є! Парадигма об'єктного програмування передбачає повторне використання модулів, внаслідок чого утримує програмістів від спокуси по тисячі разів переписувати одне і те ж. XML хороший вже тим, що дозволяє:

- відокремити дані від їхнього уявлення і тим самим подолати хаотичність HTML;

- упорядкувати дані в дерева і списки, структурувати їх і породжувати з них об'єктні моделі;

- описувати метадані на метамові таким чином, щоб програмні модулі стали абсолютно універсальними, оскільки вони матимуть справу тільки з XML-файлами і більше ні з чим іншим. Таким чином, за допомогою XML можна спробувати реалізувати принцип: "Дані повинні управляти програмами, а не навпаки".

_____

* 1. 1. Шеллі Пауерс. "Чого ми чекаємо від XML?" "Світ ПК", № 3/98.

2. Мова XML - практичне введення (www.citforum.ru).

3. / xml / (http://java.sun.com/xml/).

4. /xml/ncfocus.html (http://java.sun.com/xml/ncfocus.html).

5. Document Object Model (DOM) Level 1 Specification http://www.w3.org/TR/1998/REC-DOM-Level-1-19981001/.

Останнім часом симбіозом новітніх технологій, пов'язаних з Java і XML, активно, але без зайвого рекламного шуму займається IBM, вважаючи цей напрям для себе стратегічним. З'явився цілий ряд прекрасних і вже реалізованих проектів: IBM's XML for Java parser - потужний високошвидкісний XML-аналізатор, написаний на "100%-чисто Java" і тому, природно, крос-платформну; WebSphere - також крос-платформну сервер додатків на Java, що розширює можливості найбільш популярних Web-серверів, таких, як Apache, IIS, Netscape Enterprise, Domino та ін .; XMI Toolkit - засіб перетворення UML-моделей, побудованих за допомогою сучасних CASE-засобів типу Rational Rose, в XML- і DTD-структури; LotusXSL Processor - ПЗ, що дозволяє задавати для XML-документів стильові таблиці і, крім того, перетворювати XML-дані в стандартний HTML для підтримки браузерів, які не вміють розпізнавати мову XML. LotusXSL Processor існує у вигляді набору Java-класів, методи яких можна викликати з будь-яких Java-програм, агентів або сервлетів.

У чому суть цих проектів? У тому, що вони дали можливість зв'язати воєдино існуючі технології (СУБД + Web), створити якусь універсальну модель для будь-якої програмної розробки, що обіцяє небачені темпи збільшення продуктивності праці і вовлекающую в процес проектування інформаційних систем сотні тисяч ділових людей, відмінно усвідомлюють, що саме потрібно буде їм завтра, але поки ще не знають, як це реалізувати сьогодні.

У новій технології можна виділити три рівні:

- рівень додатків, написаних на будь-якому об'єктно-орієнтованої мови програмування (наприклад, Java);

- рівень інтерпретації вмісту XML-об'єктів (XML-Parser);

- рівень інформаційного сховища (так звані persistence engines - об'єктні і реляційні бази даних, файлові системи, Web-сайти). Інформацію, що знаходиться в цих універсальних сховищах, легко перетворити в XML і навпаки, використовуючи об'єктну модель, побудовану на основі Java-класів і отримала назву DOM (Document Object Model).

Отже, на першому рівні професіонали-програмісти створюють програмні модулі, повністю абстраговані від будь-якої конкретики, пов'язаної з даними і з їх уявленнями, т. Е. Зовнішніми інтерфейсами. Все це виноситься на рівень універсального опису метаданих на універсальному метамові - XML. (Питання, пов'язані з генерацією самих описів, поки ще недостатньо опрацьовані, і акцент тут зміщений в сторону інтерпретації вже готового XML-вмісту.) На цьому рівні також можуть існувати дві стратегії: клієнт і сервер-орієнтовані додатки.

Мал. 1. Java-додаток з вбудованою графікою

Клієнт-орієнтовані додатки

На рис.1 зображено найпростіший тип програми, коли інформація зберігається в XML-документах (файлах). В цьому випадку ви створюєте свій власний формат опису і представлення даних в XML. Даний підхід нічим не буде гірше інших (скажімо, зберігання даних в об'єктній або реляційної базі) - адже всі операції над даними, включаючи їх пошук і різні вибірки за заданими критеріями, також будуть доступні через об'єктну модель XML. Класичний приклад, наведений у безлічі посібників з XML, - Адресна книга, яка може розміщуватися не в СУБД, а безпосередньо в XML-файлі (див. Рис. 2).

Мал. 2. Зв'язок моделей XML і Java

Сервер-орієнтовані додатки

На відміну від найпростішого клієнтського додатка, зображеного на рис. 1, де Java-програма відображала дані з XML-файла, використовуючи власні графічні засоби і об'єктну XML-модель даних, сервер-орієнтовані програми виконуються на сервері. На стороні клієнта може бути або звичайний браузер, або мініатюрне програм, які взаємодіють через мережу тільки XML-описами, існуючими у вигляді об'єктів. Самі дані і пов'язані з ними уявлення у вигляді списків, структур, ієрархій, а також опису способу їх відображення можуть бути отримані через мережу з найрізноманітніших джерел (див. Рис. 3). Оскільки XML-документи дозволяють зберігати в собі або описувати структуровані дані, будь-яку інформацію з СУБД можна представити у вигляді XML-файла. Саме цій меті і служить DOM. Мал. 4 ілюструє процес проходження і перетворення об'єктного інформації. Ця модель надає доступ до інформації, що зберігається в документі XML, у вигляді ієрархічної об'єктної моделі. У ній створюється дерево вузлів, що відбиває структуру інформації в XML-документі, і програміст може отримувати доступ до інформації, взаємодіючи з вузлами цього дерева.

Мал. 3. Сервер додатків XML

Мал. 4. Процес проходження і перетворення об'єктного інформації

Як все це можна застосувати на практиці? Природно, що найкраще Java / XML-технологія реалізується в багатоланкових системах, де в якості ланок ланцюга виступають такі суб'єкти:

- Ультра-тонкий клієнт, іноді ще званий XML-агентом, в функції якого входить розбір XML-документа, підключення таблиці стилів і уявлення вмісту документа в тому вигляді, в якому його спочатку задумав розробник. Деякі XML-агенти перетворять XML-документ в HTML-формат. Однак Microsoft Internet Explorer 5, будучи XML-агентом, не потребує такої перетворенні. Поки що існує досить мало XML-агентів, але передбачається, що число їх буде постійно зростати разом зі зростанням популярності XML. (Сучасні технології так бурхливо розвиваються, що технічні книги з їх описом застарівають мало не з моменту їх випуску. Наприклад, у своїй книзі "Доступ до баз даних і техніка роботи в мережі" * 1, випущеної влітку цього року, я ще нічого не встиг сказати про XML.)

_____

* 1. Користуючись нагодою, автор просить вибачення Н. Єлманова і редакції "Комп'ютер-Прес" в зв'язку з тим, що на с. 204 - 207 згаданої книги був мимоволі використаний матеріал, опублікований раніше в цьому журналі (див. № 12/97, с. 108 - 113).

- Сервер додатків, що володіє можливостями взаємодії з найбільш популярними Web-серверами і підтримує різноманітні технології, які обслуговують XML-структуру, - сервлети, компоненти Enterprise JavaBeans.

Ці технології необхідні для обробки і динамічної генерації XML-документів. Без них сервер зможе працювати тільки зі статичними документами. Зазвичай такі розширення реалізуються у вигляді набору додаткових модулів і бібліотек (plug-ins).

- Сервер бази даних. Динамічно генеруються XML-документи можна отримати в результаті запиту до сервера СУБД, такому, як Oracle 8i або DB2. Залежно від типу XML-додатки, СУБД повертає видобувні дані або відразу у вигляді XML-документа, або через структури JDBC (Java Database Connectivity), що перетворюються Сервлетами в XML-структури. В майбутньому, ймовірно, з'явиться достатня кількість комерційно доступних JavaBeans-компонентів, які будуть надавати зручні засоби для роботи з СУБД з використанням XML.

Типова трехзвенная схема роботи численних підключених клієнтів через сервер додатків зображена на рис. 5.

Мал. 5. Використання сервера додатків

Охарактеризуємо коротко деякі технології, які використовуються в XML-інфраструктурі.

- Сервлети - спеціальні серверні компоненти, написані на Java з застосуванням інтерфейсу JSDK і обмінюються по протоколу HTTP інформацією з запустив їх браузером. Сервлети, на відміну від аплетів, набагато більш функціональні і швидкі, тому що виконуються на сервері і використовують більш потужну JVM (Java Virtual Machine).

- JavaBeans ( "зерна") і EJBs (Enterprise Java Beans) - це повторно використовувані компоненти, написані на Java. Вони можуть вбудовуватися в будь-модулі і програмні системи, включаючи графічні засоби програмування і сервери СУБД.

- Сервер додатків може і повинен підтримувати новий потужний засіб для виготовлення динамічних Web-сторінок - Java (див. Рис. 6).

Мал. 6. Використання JSP

Java Server Pages

Розглянемо докладніше, як працює технологія JSP.

Коли Web-сервер отримує від браузера запит на виконання JSP-сторінки (JSP-файл), він переадресує його серверу додатків. Сервер додатків розбирає JSP і генерує Java-код, який виконується як сервлет. Компіляція здійснюється тільки один раз, при першому зверненні до сторінки. JSP-сторінка майже нічим не відрізняється від звичайного HTML-файлу і може містити такі ключові слова:

- <servlet> - для вбудовування сервлетів в JSP;

- директиви <% ...%>, або тег <SCRIPT> - для виконання скриптів на Jscript і VBScript;

- Inline Java code - так звані скріплет, т. Е. Вбудовані в тіло документа Java-оператори;

- <BEAN> - тег для JavaBeans-компонентів, який може здаватися в формі:

<Bean name = "Bean_name" varname = "local_Bean_name" type = "class_or_interface_name" introspect = "yes | no" beanName = "ser_filename" create = "yes | no" scope = "request | session | userprofile">

<Param property_name = "value">

</ Bean>

наприклад:

<! - Оголошення Bean ->

<Bean name = "foobar" type = "FooClass" scope = "request">

<! - Визначення деяких властивостей ->

<Param fooProperty = "fooValue" barProperty = "1">

</ Bean>

<! - Згодом можна використовувати деякі методи цього Bean ->

<P> Ім'я колонки - <% = foobar.getRowName ()%>. </ P>

Таким чином, функціональність Web-серверів розширюється настільки, що використовуються не тільки автоматично генеруються HTML-сторінки, але і вбудовані в них засоби зв'язку і отримання даних з СУБД і XML-структур. JavaBeans, що виконують чорнову роботу, можуть бути файлами типу .class, компонентами, підготовленими для транспортування по мережі (serialized Beans), або динамічно генеруються Сервлетами.

Узагальнюючи сказане, можна стверджувати, що XML є ідеальним способом опису та зберігання будь-яких даних, в тому числі і структурірованнних, витягнутих з реляційних БД. Сімейство технологій XML спирається на об'єктну модель і надає об'єктні інтерфейси для доступу до описаних на XML даними. Ці інтерфейси розроблені для багатьох об'єктно-орієнтованих мов програмування, але їх краща реалізація - для Java.

Нова епоха

Що ж далі? На мій погляд, в найближчому майбутньому більшість розробників позбудуться необхідності використовувати в коді програм прямі SQL-запити і будуть орієнтуватися на стандартні класи і компоненти для роботи з базами даних, реалізовані у вигляді JavaBeans- і ActiveX-модулів. Програми стануть переносяться і налаштованим, а отже, їх буде порівняно легко адаптувати до будь-яких експлуатаційних умов. Каркаси програм будуть проектуватися з особливою ретельністю і в процесі експлуатації майже не зазнають перманентних змін, пов'язаних з коригуваннями структур даних. Програми будуть мати справу не з самими даними, а з їх описами. Роль метамови і метаданих буде постійно підвищуватися, і незабаром c допомогою спеціально створених інструментів до них зможуть підключатися професіонали з різних предметних областей.

Вартість клієнтського робочого місця діятиме на постійній основі знижуватися, тому що основне навантаження впаде на сервер. Цьому сприятиме і перехід до все більш широкого використання мобільних і кишенькових ПК, оснащених пристроями бездротового зв'язку. Можливо, на новому витку спіралі ми знову повернемося до використання мейнфреймів в якості серверів, але вони вже не будуть так жахливо складні і лякаюче.

Класичні тисячодоларові ПК Desktop, зрозуміло, залишаться, але тільки у вигляді комп'ютерів для розробників. Бізнесмену, журналісту, страховому агенту ні Pentium-3, ні Merced, ні тим більше операційна система Windows NT 5.0 зовсім не потрібні. Йому цілком вистачає MS Internet Explorer, який, з'єднуючись по мережах Internet / intranet / extranet з численними ресурсами, вміє тепер майже все.

Незважаючи на те, що Java і XML самі по собі досить складні, інструменти, засновані на них, надзвичайно прості. Користувачеві немає потреби знати внутрішні механізми інформаційного джерела. Він повинен лише вміти користуватися дистанційним пультом. Точно так же, як люди користуються своїми телевізорами, не замислюючись про їх технічному пристрої, в майбутньому завдяки новим, все більш досконалим технологіям можна буде працювати з інформацією, розміщеної по всьому світу, структура якої буде визначатися побажаннями кліента.К автору, співробітнику Іванівського державного енергетичного університету, можна звернутися за адресою: [email protected].

Версія для друку

Тільки зареєстровані користувачі можуть залишати коментарі.

Здавалося б, навіщо винаходити нову мову, якщо старий, настільки добре знайомий, постійно збагачується новими можливостями?
Quot;Чого ми чекаємо від XML?
У чому суть цих проектів?