Главная > Java - язык и технологии, Open Source, Разное > Helma — и снова серверный JavaScript.

Helma — и снова серверный JavaScript.

25 июня 2008

Приветствуем наших  читателей. В последнее время столько новостей накопилось, смотря на которые я говорю себе - вот про это стоит написать в блоге, что порой не хватает не только рук и времени, но и сил придумать текст. Поэтому я просто открываю в браузере все темы и выжидаю порой несколько дней - те темы, которые актуальны и через такой промежуток времени, действительно заслуживают вашего внимания. Сегодня делая выбор между новой версией ezComponents (при всей моей любви к нему), моим небольшим исследованием компонента поиска в Zend Framework и обновлениями Adobe AIR я выбрал совершенно другую тему - о всех темах выше уже успели написать другие авторы, хотя про поисковый компонент вы ещё прочитаете чуть позже, а сегодня читателей блога ждёт эксклюзивный материал про малоизвестную но интересную технологию и платформу.

Немного ранее я уже рассказывал о разработке компании Aptana - серверной платформы Jaxer, которая позволяет развёртывать приложения на JavaScript на стороне сервера, и объединять таким образом код клиентской и серверной стороны. Конечно, есть много спорностей в таком подходе, как и вообще применимости такого языка как JavaScript для разработки полноценных веб-приложений на сервере, но это не останавливает разработчиков - несмотря на ограничения, вполне можно разрабатывать интереснейшие приложения. Но вот уникальна ли эта платформа? Теперь нет.

Открытый проект Helma - написанная на Java платформа для исполнения серверных приложений на JavaScript. Сейчас поддерживается версия 1.7, однако с развитием движка Rhino, который отвечает во всех проектах подобного рода за интерпретацию JS, будем ожидать, что и вторая версия будет поддерживаться. Платформа обладает и встроенным веб-сервером, в качестве которого используется Jetty, и даже собственная объектно-ориентированная база данных (на основе XML), которая прозрачно интегрирована в платформу и позволяет сохранять и кешировать объекты между сессиями. Также есть встроенные средства отладки приложений, при этом все доступно через веб-интерфейс.

Сами приложения для Helma это удивительная смесь статических файлов, HTML-а, основного кода на JavaScript и других служебных файлов, раскиданных по определённой схеме в десятке служебных директорий. Подход достаточно нетривиален и старается смешивать некоторые возможности из Java и .NET, однако на первый взгляд это все запутано, поэтому придётся разбираться с структурой файлов и их форматом, что достаточно непросто. В этом есть существенный минус платформы, если её сравнивать с Aptana Jaxer.

Но есть и позитивные отличия. К примеру, в Helma есть собственный фреймворк (да, точно такой же подход и в решении от Aptana), который при помощи модуля Helma Object Publisher позволяет отображать интерфейсы подключаемых Java компонент в приложения на JavaScript. Это позволит при некоторых усилиях использовать множество уже готовых серверных компонент на Java, а это значительно расширяет возможности приложений. И, в отличие от того же решения от Aptana, нам изначально доступны некоторые компоненты, которые очень полезны для разработки серьёзных решений - поисковый модуль Apache Lucene, модули для работы с базами данных, протоколами SSH, FTP, HTTP, модуль для работы с почтой, рисование графиков и диаграмм, работа с файлами и изображениями и несколько других. В принципе, интеграция и других модулей не должна быть очень сложной, поэтому Helm-у можно даже рассматривать как прокси-провайдер для связи Java-пакетов с приложениями на других языках, возможно даже эту часть можно подключить к Aptana, соединив преимущества обоих платформ.

В состав платформы входит и полноценная среда для отладки приложений без использования дополнительных приложений - все операции (точки остановки, просмотр стека, пошаговая отладка) проводятся прямо в браузере. В дополнение к отладчику есть и инспектор для HopObjects (это основные объекты платформы, доступные в приложении, часть из них являются абстракцией к интерфейсам самой платформы, часть - те самые Java - компоненты, что доступны в JavaScript через Helma Object Publisher), а также небольшая, но достаточно развитая оболочка для работы с SQL-базами данных, которые подключаются через JDBC.

К сожалению, подробного описания платформы нет, хотя документации для разработчика достаточно много, поэтому я пытался разобраться в общей архитектуре по обрывкам описания в примерах, исследовал сам дистрибутив и другими путями. Возможно что-то я упустил, о чем-то не рассказал так подробно, как стоило бы - но это не так важно и не суть этого материала. В чем-то платформа Helma уступает Jaxer - например, в удобстве развёртывания, в интеграции с другими серверами, но есть и достаточно много уникальных моментов, делающих это решение интересным для разработки приложений. Из коробки доступно много интересных возможностей, больше, чем в конкурирующих средах, а наличие встроенных мощных средств отладки позволяет использовать Helma как среду для быстрого прототипирования и проверки новых идей, потом воплощая их уже на рабочей платформе. Выбор, как всегда, за вами!

Комментирование отключено.