Главная > AJAX, Mozilla Firefox, Open Source, web2.0, Разное > Спешим сообщить! Jaxer — The Ajax Server от команды разработчиков Aptana Studio IDE

Спешим сообщить! Jaxer — The Ajax Server от команды разработчиков Aptana Studio IDE

25 января 2008

jaxerlogo.jpgПриветствуем наших читателей. Спешим вам сообщить очередную новость, которая по значимости и интересности для нас перекрыла все остальные заготовленные темы (уж извините). Я всегда восхищался разработчиками Apatana IDE - по сути, этот стартап является классическим проектов, возникшем из потребности иметь удовлетворяющий нуждам инструмент, и превратившийся в известный и мощный инструментарий, имеющий уже и профессиональную коммерческую версию. Но сейчас не об этом. Недавно, буквально пару дней назад, разработчики сделали следующий шаг на пути, не побоюсь, к захвату рынка создания веб-приложений с использованием AJAX (при этом технологическая платформа не имеет значения, ребята из Apatana Inc. имеют поддержку и RubyOnRails, и PHP, двух самых востребованных серверных платформ для веб-стартапов). Новым продуктом стал Jaxer - первый в мире полностью AJAX веб-сервер (по заявлению разработчиков, хотя это не так далеко от истины). Сейчас мы лишь вкратце познакомимся с продуктом, а в дальнейшем я надеюсь, будут более развёрнутые статьи (я уже экспериментирую с сервером).

Jaxer предназначен для разработки и прототипирования различных AJAX веб-приложений, как в составе Aptana Studio (в версию 1.1 он интегрирован), так и в качестве самостоятельного приложения. Он позволяет работать с JavaScript, HTML, DOM и CSS как на стороне клиента, так и сервера (поддерживается стандарт JavaScript 1.8), даже "расшаривать" части кода между клиентской и серверной частью. Jaxer также предоставляет ряд встроенных объектов, например, доступ к базам данных, SMTP, система лога и другие, в данном функционале мне кажется, это что-то аналогично Java серверам приложений, так как это уже не чистый веб-сервер, который просто обрабатывает HTTP запросы. Для этого разработан специальный Jaxer Framework, который и предоставляет API для доступа к расширенным возможностям сервера. В составе пакета есть несколько приложений, реально и наглядно демонстрирующих возможности сервера - это и чат, и система логирования, и почтовая система и работа с RSS потоками.

Не слeдует думать, что все писалось с нуля, совсем нет. К примеру, часть, отвечающая за серверный JavaScript, основана на движке Gecko от Mozilla (на нем основан, в частности, браузер Mozilla Firefox), на стороне сервера можно использовать встроенный фреймворк jQuery. И клиентский и серверный JavaScript код имеет, при помощи API сервера, доступ к базам данных (встроенной SQLite и внешней MySQL), файловой системе, сетевым инструментам и другим функциям.

jaxer_test.jpg

Такой сервер позволяет использовать несколько другой идеологический подход к архитектуре веб-приложений: страница сначала исполняется на стороне сервера, потом результат передаётся в браузер, там также выполняется, и потом следует асинхронный запрос на новые данные и так далее. Причём, это не разный код (на сервере и клиенте), а один и тот же.

Сам Jaxer построен на основе открытых технологий - веб-сервер Apache, движок JavaScript Gecko, база данных SQLite, jQuery и JLib. Сервер также тесно интегрирован с средой разработки Aptana Studio, что позволяет разрабатывать и тестировать все в одной среде.

Пока, конечно, продукт очень концептуальный, несмотря на множество функциональности и серьёзность подхода, не совсем ясна, к примеру, работа с серверными языками и интеграция с другими приложениями на РНР или других языках (а судя по примерам на сайте, взаимодействие идёт через обычные HTTP вызовы). Открыт также вопрос о возможности реализации на этом сервере реальных рабочих приложений - то есть масштабируемость и защищённость. Но сама по себе идея AJAX-cервера интересная и заслуживает внимания, а опытность разработчиков из Aptana не подлежит сомнению. Продукт очень многогранный и требует всестороннего исследования и тестирования чтобы сделать какие-то заключительные выводы, поэтому мы сейчас ограничиваемся только более-менее объективным описанием, почерпнутым из публичных материалов на сайте. А сам Jaxer все же стоит загрузить и попробовать каждому профессиональному веб-разработчику.

page_flow_diagram.png

Хотя, если серьёзно вдуматься в архитектуру jaxer-а, получается очень даже интересно. По сути это даже не сервер, это очень навороченный препроцессор, который располагается между браузером и CGI-обработчиком на стороне сервера. Он, с одной стороны, обеспечивает взаимодействие с серверной платформой (на РНР, RoR или другой), а с другой замещает весь остальной стек, дополнительно обрабатывая сформированную сервером страницу, и беря на себя большую часть взаимодействий с клиентом, передавая серверу только те запросы, которые требуют серьёзной обработки (а так как препроцессор этот может напрямую взаимодействовать как с файловой системой, так и базами данных и даже другими сервисами, то это разгружает частично сервер, так как часть тривиальной работы берет на себя Jaxer Framework). Вот если сюда добавить ещё кластеризацию и мощный уровень управления и мониторинга именно сервера приложения (РНР или другого, что-то аналогичное Zend Platform), тогда у нас получится полностью законченная трёхуровневая AJAX серверная платформа. Но ведь ничего не мешает сделать это самому - ведь Jaxer это только серверный фреймворк и модуль к серверу Apache 2 (mod_jaxer), поэтому выделить из дистрибутива и перенести это на уже работающий сторонний сервер не составит большого труда.

А вот вывода, как такового, сегодня не будет. Продукт очень новый и совершенно неоднозначный, во многом сложный именно своей концептуальностью, хотя все положенное в основу не является новостью для веб-разработчика. Он может стать отличной платформой для разработки и тестирования новых сервисов, а также, при некоторых усилиях, может расширить возможности уже существующих и работающих AJAX веб-приложений, хотя к этому нужно подходить очень осторожно, реально понимая выгоду от такого решения. Ну а мы будем дальше экспериментировать и расскажем в дальнейшем о результатах наших исследований. Но то, что поэкспериментировать и разобрать эту разработку "по косточкам" следует любому веб-разработчику, хоть бы просто для профессионального роста, это не подлежит сомнению и я настоятельно рекомендую.

Несколько ссылок:

  1. Алик
    29 января 2008 в 01:20 | #1

    Спасибо, очень интересно!

    Заметил опечатку не «движок JavaScript Ge_s_ko», а «движок JavaScript Ge_c_ko».

  2. 29 января 2008 в 01:36 | #2

    Алик — спасибо, действительно опечатка, исправил.

  3. LokiDi L0ck
    21 февраля 2008 в 21:38 | #3

    Проект интересный.
    Решил потестировать, после чего задался вопросом «а зачем оно надо?».
    Js на сервере выполняет то, что с таким же успехом может сделать java, ruby, php (при этом xhr запросов будет гораздо меньше, в сравнении с вызовом серверных js функций).

    Если есть время и желание, можете отписать — какие же плюсы есть у jaxer’а, какие его возможности стоят того, чтобы им пользоваться (я лично пока не нашёл)?

  4. 21 февраля 2008 в 23:19 | #4

    ну частично вы сами ответили. а зачем руби, если есть РНР? а зачем Java, если есть Perl?
    Это бесшовная технология когда нет сильного разделения по языкам/технологиям между клиент/серверной частью. для отладки и быстрого прототипирования. это просто еще одна технология 🙂

    по крайней мере у нее плюс — изначально некая среда, для РНР есть только коммерческая зенд платформ 🙂

  5. LokiDi L0ck
    22 февраля 2008 в 00:57 | #5

    >а зачем руби, если есть РНР?
    >а зачем Java, если есть Perl?

    Мой вопрос был немного в другом контексте, нежели в надобности разнообразия языков =)

    Но согласен, плюс только разве что в однородности среды разработки. Я и сам не раз думал, как было бы хорошо писать серверную часть на js.

    Всё это на самом деле очень похвально, однако на данный момент минусы проекта бросаются в глаза сильнее нежели его достоинства.

  6. 22 февраля 2008 в 09:22 | #6

    а какие там такие особые минусы? Кстати, он интегрирован в апатана студио. и думаю, раз основан на апаче, то внедрить туда поддержку РНР не так и сложно, а значит можно развёртывать любые приложения.

  7. Александр
    28 октября 2009 в 09:47 | #7

    А кто подскажет, кроме MySQL и SQLite можно ли подключаться к другим базам? Например Oracle или Informix? Через JDBC или ODBC — что там поддерживается. Весь инет перерыл, исходники скачал Jaxer-а, есть что-то похожее на namespace Jaxer.DB.ADO — для досутпа к остальным базам, но надо пощупать бы на примере.

  8. Plest
    22 декабря 2009 в 14:23 | #8

    @Алик
    И не Gesko, и не Gecko. SpiderMonkey там используется (http://jaxer.org/guide/). В статье http://ru.wikipedia.org/wiki/JavaScript пытаюсь навести систематизацию в платформах, позволяющих использовать js на сервере.

  9. DOSSS
    30 сентября 2011 в 07:38 | #9

    Документация унылая((

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