Показаны сообщения с ярлыком javascript. Показать все сообщения
Показаны сообщения с ярлыком javascript. Показать все сообщения

среда, 30 марта 2011 г.

Серверный JavaSсriрt: движки


Здравствуйте.

Сегодня поделюсь информацией про использование JavaScript (JS) на серверной стороне. Многие считают, что использовать JS не только для клиентской части, но и на серверной стороне это хорошо и даже приятно.

Опустим рассказ о плюсах и минусах использования JS на серверной стороне и зададимся другим вопросом. Другой вопрос — Каким образом возможно осуществить использование серверного JS?
Сегодня есть четыре основных движка, которые используются на серверах.


Rhino — движок от компании Mozilla, написанный на Java и поддерживающий последнюю 1.7 версию стандарта JS, который к тому же дополняет язык собственными расширениями и объектами. Основным преимуществом движка является работа поверх стандартной JVM, а значит, его можно использовать в любой среде, где работает Java. Другими словами, можно применять современные веб-серверы типа jetty, но при этом писать на любимом JS. Кстати, Rhino применяют на облачном хостинге от Google! А вот с производительностью сложнее. Она зависит, с одной стороны, от движка и применяемых там технологий, вроде JIT-компиляции, и от работы самой Java-машины. Кстати, многие тестеры, которые говорят, что Rhino очень медленный, забывают, что движок имеет два режима работы: интерпретации, когда скрипт каждый раз преобразуется в Java байт-код (аналогично PHP), и компиляции, когда такое преобразование происходит только раз, а потом многократно исполняется. Первый режим выгоден, когда ты отлаживаешь код, который меняется каждую минуту, второй больше подходит для рабочей версии проекта, работающей под нагрузкой.



SpiderMonkey — еще один движок от Mozilla, на этот раз на C. Кстати, это вообще первый в мире движок JS, написанный еще в Netscape — сегодня он открыт и используется в таких популярных продуктах как Firefox, Adobe Acrobat и даже в одном из эмуляторов серверов онлайн-игры Ultima Online. Далее разработчики сильно модифицировали его, добавив компиляцию JS напрямую в ассемблерный код, и переименовали в TraceMonkey — именно этот движок используется в ветке 3.6 Firefox’а. В основном SpiderMonkey используют в ПО, которое написано на С/С++ и нуждается в скриптовом языке. Из известных продуктов: Comet-сервер APE, noSQL БД CouchDB, серверная платформа Jaxer и модуль к Apache mod_js.


Futhark

Futhark — это движок от Opera, который базируется на движке Presto. Кроме браузера, Futhark используется в их инновационном сервисе Unite (типа встроенный сервер в каждом браузере), а также на их серверах, обслуживающих мобильный браузер Opera Mini. Жаль, что движок закрыт, и его пока нигде за пределами самой Opera не применяют.
Opera Carakan - еще один движок от Opera. Краткое описание движка.


V8 — движок от Google, который используется в Chrome и является основой будущей Chrome OS. Сегодня это самый крутой, быстрый и мощный движок, в котором JS-код напрямую преобразуется в ассемблер целевого процессора, что позволяет обойти по скорости все остальные движки. Кроме этого гугловцы используют множество ухищрений для оптимизации, хранят в памяти скомпилированный код, оптимизируют его на лету (например, удаляют блоки кода, которые по решению компилятора вообще не могут быть задействованы, и т.п.). На базе этого движка построена самая популярная и быстроразвивающаяся серверная платформа — Node.JS


На этом краткий обзор закончен. Если есть чего добавить, пишите, буду рад.
Всем удачи.

понедельник, 31 января 2011 г.

JQuery plug-in DataTables


Очень интересный плагин на основе javascript библиотеки jQuery.
Что он позволяет делать:
Без особых трудностей (это конечно зависит от опыта) превратить обычную таблицу HTML в продвинутую интерактивную таблицу.
Дополнительные плагины, которые также присутствуют на сайте. Позволяют изменением в одном парраметре добавить пейджинг, сортировку, количество отображаемых данных и многое другое. Поддерживает несколько источников для получения данных. Например: взаимодействие с сервером происходит с использованием Ajax. Формат обмена данными: JSON. Парсер уже встроен, что иногда вызывает проблемы, так как вся вложенность будет автоматически представлена строкой в ячейки массива. Ну это так, я плачусь =)
Это только малость всех возможностей...

Из плюсов также стоит отметить, что на сайте представлена, если не отличная, то довольно хорошая, даже скажу дружественная документация.

Ссылка на DataTables

Всем желаю удачи.

понедельник, 10 января 2011 г.

Мелочь из JavaScript

Как корректно использовать точку с запятой в JavaScript-е?
Читаем Всё, что надо знать о точке с запятой

Рабочий момент: рефокторинг в виде отформатировать текст знаком всем =)
А что будет, если внешне изменение не значительное, а его суть коварна.
Будет два варианта: 1. вернуть назад и не трогать ничего (с газом, без газа - попил водички...) =)
2. узнать, обучить и стать специалистом =). В помощь спецификация
Второе круче.
Поэтому, запомним кое-что про ограниченные порождения:
Практический совет для программистов ECMAScript:
  • постфиксные операторы "++" и "--" должны быть на одной строке со своим операндом;
  • выражение в операторах return или throw должно начинаться на одной строке с токеном return или throw;
  • идентификатор в операторе break или continue должен быть на одной строке с токеном break или continue.
Примеры:

i
++   это будет как  i; ++j
j
Так нельзя:
return
          {i:i, j:j}
Так можно:
       return {
           i:i, j:j}
    return (
           {i:i, j:j})
    return {i:i
           ,j:j}
 
На последок:
continue innerloop // верно
 
continue
    innerloop;     // неверно
// ThrowStatement : throw [no LineTerminator here] Expression ;
throw                                          // ошибка разбора
  new MyComplexError(a, b, c, more, args);
// В отличии от return, break, continue, 
// выражение после throw обязательно, 
// поэтому вышеприведённое неотпарсится вообще.
throw new MyComplexError(a, b, c, more, args); // верно
throw new MyComplexError(
    a, b, c, more, args);                      // тоже верно
// любой вариант с throw и new на одной строке верен.