The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выпуск серверной JavaScript-платформы Node.js 5.0

30.10.2015 13:28

Состоялся релиз Node.js 5.0, новой стабильной ветки платформы для выполнения высокопроизводительных сетевых приложений на языке JavaScript. Ветка 5.0 включает порцию новых возможностей и будет развиваться параллельно c веткой Node.js 4.x, которая отнесена к категории стабильных LTS-выпусков с длительным сроком поддержки (30 месяцев). Время поддержки Node.js 5.x составит 8 месяцев. В дальнейшем, в апреле 2016 года планируется выпустить Node.js 6.0, который получит статус LTS.

Выпуск Node.js 5.0 рекомендуется тем, кто желает оперативно получить доступ к новой функциональности, имеет возможность безболезненно провести обновление и готов разбираться с возможными негативными последствиями из-за нарушений обратной совместимости. LTS-ветки предлагаются для сложных промышленных внедрений, крупных предприятий и тех, для кого стабильность имеет первоочередное значение.

Из новшеств Node.js 5.0 можно отметить переход на новый выпуск движка V8 4.6.85.25, что требует пересборки установленных сторонних дополнений. Пакетный менеджер npm обновлён до выпуска 3.3.6. Внесены нарушающие совместимость изменения в объекты buffer (удалены типы кодировок 'raw' и 'raws') и console (изменён формат вывода console.time), прекращена поддержка вызовов require.paths, util.p(), util.inherits() и require.registerExtension(), ужесточены требования к именам методов и заголовков HTTP, прекращена поддержка модуля _linklist. В модуль tls добавлена поддержка ALPN, минимальный размер ключа DH для tls.connect() увеличен до 1024 бит. Добавлена возможность передачи файловых дескрипторов в вызовы fs.readFile*(), fs.writeFile*() и fs.appendFile*().

Платформа Node.js может быть использована как для серверного сопровождения работы Web-приложений, так и для создания обычных клиентских и серверных сетевых программ. Для расширения функциональности приложений для Node.js подготовлена большая коллекция модулей, в которой можно найти модули с реализацией серверов и клиентов HTTP, SMTP, XMPP, DNS, FTP, IMAP, POP3, модули для интеграции с различными web-фреймворками, обработчики WebSocket и Ajax, коннекторы к СУБД (MySQL, PostgreSQL, SQLite, MongoDB), шаблонизаторы, CSS-движки, реализации криптоалгоритмов и систем авторизации (OAuth), XML-парсеры.

Для обеспечения обработки большого числа параллельных запросов Node.js задействует асинхронную модель запуска кода, основанную на обработке событий в неблокирующем режиме и определении callback-обработчиков. В качестве способов мультиплексирования соединений поддерживаются такие методы, как epoll, kqueue, /dev/poll и select. Для мультиплексирования соединений используется библиотека libuv, которая является надстройкой над libev в системах Unix и над IOCP в Windows. Для создания пула потоков (thread pool) задействована библиотека libeio, для выполнения DNS-запросов в неблокирующем режиме интегрирован c-ares. Все системные вызовы, вызывающие блокирование, выполняются внутри пула потоков и затем, как и обработчики сигналов, передают результат своей работы обратно через неименованный канал (pipe). Выполнение JavaScript-кода обеспечивается через задействование разработанного компанией Google движка V8.

По своей сути Node.js похож на фреймворки Perl AnyEvent, Ruby Event Machine, Python Twisted и реализацию событий в Tcl, но цикл обработки событий (event loop) в Node.js скрыт от разработчика и напоминает обработку событий в web-приложении, работающем в браузере. При написании приложений для node.js необходимо учитывать специфику событийно-ориентированного программирования, например, вместо выполнения "var result = db.query("select..");" с ожиданием завершения работы и последующей обработкой результатов, в Node.js использует принцип асинхронного выполнения, т.е. код трансформируется в "db.query("select..", function (result) {обработка результата});", при котором управление мгновенно перейдёт к дальнейшему коду, а результат запроса будет обработан по мере поступления данных. Ни одна функция в Node.js не должна напрямую выполнять операции ввода/вывода - для получения данных с диска, от другого процесса или из сети требуется установка callback-обработчика.



  1. Главная ссылка к новости (https://nodejs.org/en/blog/rel...)
  2. OpenNews: Выпуск JavaScript-платформы Node.js 4.2.0 LTS
  3. OpenNews: JavaScript-платформа Node 4.0.0 ознаменовала слияние проектов Node.js и io.js
  4. OpenNews: Выпуск JavaScript-платформы io.js 3.0
  5. OpenNews: Node.js и io.js объединились под покровительством организации Linux Foundation
  6. OpenNews: Выпуск серверной JavaScript-платформы Node.js 0.12
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/43221-nodejs
Ключевые слова: nodejs, javascript
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (21) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, Casm (??), 14:46, 30/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > прекращена поддержка вызовов fs.readFile(), fs.read()

    В change log не нашёл такого  - https://github.com/nodejs/node/blob/v5.0.0/CHANGELOG.md

    Да и в документации метод
    остался - https://nodejs.org/api/fs.html#fs_fs_readfile_file_options_callback

     
  • 1.3, Аноним (-), 14:47, 30/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    ⅔ новости — пояснение, что такое нодежээс. Как будто автору за количество символов платят.
     
     
  • 2.4, Аноним (-), 15:31, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Мой друг так и не понял, зачем же нужен этот node.js?
     
     
  • 3.5, Аноним (-), 15:59, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Зачем ты тревожишь своих умственно отсталых друзей всякими глупостями?
     
  • 3.7, th3m3 (ok), 19:35, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    node.js - нужен для того, что бы везде использовать JS в вебе. На клиенте и на сервере.
    Да, больше ненужны все разработки на php, ruby, python и т.д.
    Теперь хватит JS для всего.
     
     
  • 4.8, Аноним (-), 23:25, 30/10/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    не понятно, ты просто нуб или троль обычкновенный? :)
     
     
  • 5.11, th3m3 (ok), 11:48, 31/10/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Давай, расскажи мне, что php рулит)
     
     
  • 6.18, Ананимаз (?), 11:56, 03/11/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Дык ООП даже уровня похапе в JS еще не завезли. О чем говорить-то?
     
  • 5.12, th3m3 (ok), 11:52, 31/10/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Уже IBM сделала платформу NodeJS стандартом корпоративной разработки. Но Анонимусы будут и дальше бугуртить от JS.
     
  • 3.20, Аноним (-), 22:46, 06/11/2015 [^] [^^] [^^^] [ответить]  
  • +/
    ну у меня на работе вполне нормально работает проект на ноджсе который на 4 серверах обрабатывает по 10 тысяч http запросов в секунду со всякими обращениями к базам и логикой
     
     
  • 4.22, Owlet (?), 17:38, 12/11/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Я примерно то же на питоне видел, и что?
     

  • 1.6, MPEG LA (ok), 17:18, 30/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    >подготовлена большая коллекция модулей,

    This page is deprecated.

     
  • 1.9, dr (??), 02:26, 31/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Добро пожаловать в callback-ад 5.0 ;)
     
     
  • 2.13, Аноним (-), 12:10, 31/10/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Используйте промисы и будет вам счастье.
     
     
  • 3.14, Аноним (-), 16:03, 31/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    тогда уж async/await. Промисы сами по себе не избавляют от коллбеков.
     
     
  • 4.15, Аноним (-), 23:40, 31/10/2015 [^] [^^] [^^^] [ответить]  
  • +/
    async/await (кстати, это сахар к промисам) пока еще не включили в апстрим V8 и, соответственно, Node.js
     

  • 1.10, анонимоус7657 (?), 11:34, 31/10/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Кто-нибудь знаком тут Tcl? Прокементируйте пожалуйста, разве все что связанно с событиями не умеет Tcl?
     
     
  • 2.16, й (?), 16:48, 02/11/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > разве все что связанно с событиями не умеет Tcl?

    1. в tcl есть event loop. вот только найти живой многопоточный сервер на tcl -- задача не из лёгких.

    2. к tcl есть биндинги из других языков (да хоть из той же node.js).

     
  • 2.17, й (?), 16:54, 02/11/2015 [^] [^^] [^^^] [ответить]  
  • +/
    а вообще, если вы спрашивали, имеет ли смысл учить tcl как современный язык для многопоточных приложений -- наверное, не имеет. erlang и то более актуален.
     

  • 1.19, Аноним (19), 00:24, 04/11/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    NodeJS - потрясающе надежная и производительная система. Один сервер с nodejs легко обрабатывает сотню тысяч коннектов и более. Для сравнения, для j2ee две тысячи соединений это уже многовато.
     
     
  • 2.21, й (?), 14:30, 08/11/2015 [^] [^^] [^^^] [ответить]  
  • +/
    я не знаю, где вы такие j2ee берёте. да и вообще толстый комментарий
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру