![](https://habrastorage.org/getpro/habr/olpictures/a51/dea/ea8/a51deaea8c07709673835b3532e0edf1.jpg)
Открытый проект 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.
![](https://habrastorage.org/getpro/habr/olpictures/c7a/34c/799/c7a34c79954f8a810f15169716e8b761.png)
К сожалению, подробного описания платформы нет, хотя документации для разработчика достаточно много, поэтому я пытался разобраться в общей архитектуре по обрывкам описания в примерах, исследовал сам дистрибутив и другими путями. Возможно что-то я упустил, о чем-то не рассказал так подробно, как стоило бы — но это не так важно и не суть этого материала. В чем-то платформа Helma уступает Jaxer — например, в удобстве развёртывания, в интеграции с другими серверами, но есть и достаточно много уникальных моментов, делающих это решение интересным для разработки приложений. Из коробки доступно много интересных возможностей, больше, чем в конкурирующих средах, а наличие встроенных мощных средств отладки позволяет использовать Helma как среду для быстрого прототипирования и проверки новых идей, потом воплощая их уже на рабочей платформе. Выбор, как всегда, за вами!
P.S. Оригинал публикации в моем блоге.