JavaScript → Почему Google V8 пока не подходит для встраивания в сервера
Игорь Сысоев доступными словами объясняет проблемы встраивания Google V8 в сервер Nginx.
JavaScript → nodeJS и nonblocking I/O
Добрый вечер уважаемые читатели,
На хабре последнее время проскакивало несколько упоминаний о node, быстрой платформе для создания вэб приложений на javascript, обладающей довольно уникальной на сегодняшний день особенностью, неблокирующим I/O (вводом/выводом).
Для начала о nodeJS:
1) В качестве языка используется Javascript
2) Для выполнения Javascript используется движок V8 от Google, который работает довольно быстро благодаря компиляции в машинный код перед выполнением.
3) Для реализации неблокирующего I/O используются libev и libeio, (libev показывает более хорошие результаты по сравнению с libevent)
4) Для реализации подключения библиотек выбран синтаксис commonJS
5) Есть возможность писать модули ещё и на C/C++, при этом подключаются они точно так-же как и js модули, это позволит Вам, к примеру, любое узкое место в вашем приложении переписать на C++ без каких либо трудностей.
В процессе изучения данного момента, что в итоге привело к написанию этой статьи я успел довольно неплохо поиграться с этой особоенностью. И могу сказать, что неблокирующий ввод/вывод очень и очень позитивно сказывается на производительности и устойчивости к нагрузкам.
Разработка → Использование V8, заключение
Использование V8, заключение
Часть 3 находится здесь: habrahabr.ru/blogs/development/72765/
Часть 2 находится здесь: habrahabr.ru/blogs/development/72592/
Часть 1 находится здесь: habrahabr.ru/blogs/development/72474/
Часть 3 находится здесь: habrahabr.ru/blogs/development/72765/
Часть 2 находится здесь: habrahabr.ru/blogs/development/72592/
Часть 1 находится здесь: habrahabr.ru/blogs/development/72474/
Разработка → Использование V8, часть 3
Использование V8, часть 3
Часть 3. Многопоточность, расширения и оформление кода
Часть 2 находится здесь: habrahabr.ru/blogs/development/72592/
Часть 1 находится здесь: habrahabr.ru/blogs/development/72474/
Часть 3. Многопоточность, расширения и оформление кода
Часть 2 находится здесь: habrahabr.ru/blogs/development/72592/
Часть 1 находится здесь: habrahabr.ru/blogs/development/72474/
Разработка → Использование V8, часть 2
Использование V8
Часть 2. Темплейты объектов, уведомления при уничтожении и пр.
Часть 1 здесь: krovosos.habrahabr.ru/blog/72474/
Часть 2. Темплейты объектов, уведомления при уничтожении и пр.
Часть 1 здесь: krovosos.habrahabr.ru/blog/72474/
JavaScript → Server-side JS (v8+Node)
Недавно видел на хабре спор по поводу того, что нам не нужны никакие скриптовые языки, кроме javascript. Утверждение, конечно, спорное, но меня заинтересовала возможность применения javascript на сервере.
Блог им. Rebus → ngxv8
На прошлой неделе мне показали довольно любопытный проект, который, к сожалению, находится на самой ранней стадии. Его цель — интеграция javascript-движка V8 в веб-сервер nginx. Звучит необычно, правда?.. :)
На самом деле я вижу в этой идее довольно много плюсов, главные из них:
— V8, предположительно, намного быстрее, чем уже существующий интегрированный Perl;
— Javascript знает куча народу, и писать на нём будут;
— Javascript совершенно естественен в части асинхронного IO — интерфейс XMLHTTPRequest представляют себе все, и в nginx можно было бы сделать что-то подобное для работы с вводом-выводом;
— Javascript — современный, стандартизованный и развивающийся язык, с поддержкой от Google (да и других корпораций) он имеет шансы жить долго и счастливо, в отличие от Perl;
Основных два минуса этой затеи — общая неприспособленность Nginx для того, чтобы быть сервером приложений (по-крайней мере, для более-менее больших приложений), а также некоторая необычность самой идеи яваскрипта на server-side.
Тем не менее, я полагаю, что V8 на серверной стороне ждёт довольно интересное будущее, хотя, может быть и не в виде модуля для nginx. Судя по тестам, он превосходит большинство серверных языков, используемых в настоящий момент, по производительности, и имеет очень неплохую поддержку (и не только от Google). Если будет время, с удовольствием поучаствую в этой затее. :)
ЗЫ Адрес проекта на Google Code.
На самом деле я вижу в этой идее довольно много плюсов, главные из них:
— V8, предположительно, намного быстрее, чем уже существующий интегрированный Perl;
— Javascript знает куча народу, и писать на нём будут;
— Javascript совершенно естественен в части асинхронного IO — интерфейс XMLHTTPRequest представляют себе все, и в nginx можно было бы сделать что-то подобное для работы с вводом-выводом;
— Javascript — современный, стандартизованный и развивающийся язык, с поддержкой от Google (да и других корпораций) он имеет шансы жить долго и счастливо, в отличие от Perl;
Основных два минуса этой затеи — общая неприспособленность Nginx для того, чтобы быть сервером приложений (по-крайней мере, для более-менее больших приложений), а также некоторая необычность самой идеи яваскрипта на server-side.
Тем не менее, я полагаю, что V8 на серверной стороне ждёт довольно интересное будущее, хотя, может быть и не в виде модуля для nginx. Судя по тестам, он превосходит большинство серверных языков, используемых в настоящий момент, по производительности, и имеет очень неплохую поддержку (и не только от Google). Если будет время, с удовольствием поучаствую в этой затее. :)
ЗЫ Адрес проекта на Google Code.
JavaScript → ServerSideJS: теперь проще просто. Встречайте v8cgi!
v8cgi — обертка для JS-движка v8 от гугла. Меня попросили его поставить на сервер и он меня приятно удивил непредсказуемо малой прожорливостью и удобством эксплуатации.
Огненный лис → Тестирование производительности JS в Mozilla Firefox 3.5 (Windows) + тест Peacekeeper
Дополнение к этому топику.
Список протестированных браузеров:
1. Mozilla Firefox 3.0.11
2. Mozilla Firefox 3.5
3. Opera 9.64
4. Opera 10.00 Beta
5. Google Chrome 3.0.190.4
6. Safari 4
Все браузеры загружены с соответствующих официальных сайтов (название браузера — ссылка на источник загрузки).
Условия тестирования:
По аналогии с тестированием под Linux, на время тестирования все сторонние приложения были выгружены. Для Firefox 3.0.11 и 3.5 были созданы новые профили и включен TraceMonkey для интерфейса. Opera 9.64 и 10.00 Beta запускались также «начистую» со стандартными настройками. Аналогично обстояли дела и с Google Chrome 3, а также Safari 4.
Конфигурация компьютера:
M/B: ASUS M2N-E
CPU: AMD Athlon 64 x2 5200+
RAM: 4 GB
ОС: Windows 7 Release Candidate Build 7100
Итак, результаты тестирования без комментариев.
Список протестированных браузеров:
1. Mozilla Firefox 3.0.11
2. Mozilla Firefox 3.5
3. Opera 9.64
4. Opera 10.00 Beta
5. Google Chrome 3.0.190.4
6. Safari 4
Все браузеры загружены с соответствующих официальных сайтов (название браузера — ссылка на источник загрузки).
Условия тестирования:
По аналогии с тестированием под Linux, на время тестирования все сторонние приложения были выгружены. Для Firefox 3.0.11 и 3.5 были созданы новые профили и включен TraceMonkey для интерфейса. Opera 9.64 и 10.00 Beta запускались также «начистую» со стандартными настройками. Аналогично обстояли дела и с Google Chrome 3, а также Safari 4.
Конфигурация компьютера:
M/B: ASUS M2N-E
CPU: AMD Athlon 64 x2 5200+
RAM: 4 GB
ОС: Windows 7 Release Candidate Build 7100
Итак, результаты тестирования без комментариев.
Google Chrome → Ларс Бак о будущем Google Chrome
Ларс Бак (Lars Bak), ведущий разработчик движка v8 в браузере Google Chrome, рассказывает о причинах, которые побудили его компанию начать разработку браузера два с половиной года назад, а также о планах на будущее. Переведём некоторые интересные отрывки из этого интервью.
Вам не кажется, что производительность Chrome в обработке скриптов и ваши инновации заставили разработчиков других браузеров тоже обратить внимание на это?
Нужно понимать, что существование одного быстрого браузера, когда все остальные медленные — это не хорошо, потому что приложения в любом случае приходится оптимизировать под самый медленный из популярных браузеров. Поэтому мы хотим, чтобы все браузеры были быстрыми.
Вы думаете, вам удалось создать браузер, который немножко ближе к тому, чтобы гарантировать нормальную работу веб-приложений в будущем?
Думаю, я могу так сказать. Я имею в виду, что мы начали работу не на пустом месте. Я двадцать лет работал над виртуальными машинами на таких языках как Java, так что Chrome, определённо, стоит на плечах этих систем.
Было много разговоров об отсутствии поддержки сторонних расширений, она скоро появится?
Мы работаем над этим. Как мы уже писали в блоге, поддержка появится в этом году и это будет в точности то, что вы хотите. Я уверен, что образуется здоровый рынок таких расширений.
Вам не кажется, что производительность Chrome в обработке скриптов и ваши инновации заставили разработчиков других браузеров тоже обратить внимание на это?
Нужно понимать, что существование одного быстрого браузера, когда все остальные медленные — это не хорошо, потому что приложения в любом случае приходится оптимизировать под самый медленный из популярных браузеров. Поэтому мы хотим, чтобы все браузеры были быстрыми.
Вы думаете, вам удалось создать браузер, который немножко ближе к тому, чтобы гарантировать нормальную работу веб-приложений в будущем?
Думаю, я могу так сказать. Я имею в виду, что мы начали работу не на пустом месте. Я двадцать лет работал над виртуальными машинами на таких языках как Java, так что Chrome, определённо, стоит на плечах этих систем.
Было много разговоров об отсутствии поддержки сторонних расширений, она скоро появится?
Мы работаем над этим. Как мы уже писали в блоге, поддержка появится в этом году и это будет в точности то, что вы хотите. Я уверен, что образуется здоровый рынок таких расширений.