Pull to refresh

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

Reading time 3 min
Views 1.6K
Немного ранее я уже рассказывал о разработке компании 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 как среду для быстрого прототипирования и проверки новых идей, потом воплощая их уже на рабочей платформе. Выбор, как всегда, за вами!

P.S. Оригинал публикации в моем блоге.
Tags:
Hubs:
+24
Comments 45
Comments Comments 45

Articles