V8 (рушій JavaScript): відмінності між версіями

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку
[перевірена версія][неперевірена версія]
Вилучено вміст Додано вміст
Sidoruk-SV (обговорення | внесок)
Немає опису редагування
стиль. Це то випадок, коли доцільне написати статтю заново :( Тупий переклад перекладу :(
Рядок 19: Рядок 19:
}}
}}


'''V8''' — [[рушій JavaScript]] з [[відкрите програмне забезпечення|відкритим]] [[сирцевий код|сирцевим кодом]]. Розроблено данським відділенням компанії [[Google]], розповсюджується за [[ліцензія BSD|ліцензією BSD]]
'''V8''' — [[рушій JavaScript]] з [[відкрите програмне забезпечення|відкритим]] [[сирцевий код|сирцевим кодом]]. Розроблений данським відділенням компанії [[Google]] та розповсюджується за [[ліцензія BSD|ліцензією BSD]].


== Огляд ==
== Огляд ==
Розробка JavaScript-рушія ''V8// почалася у данському відділенні Google в місті [[Орхус]]. Провідним розробником став Ларс Бак (Lars Bak).


Розробка JavaScript-рушія V8 почалася у данському відділенні Google в місті [[Орхус]]. Провідним розробником став Ларс Бак (Lars Bak). Основними проблемами, які довелося вирішувати розробникам рушія, стали швидкодія і масштабованість<ref name=Lars>[http://googlerussiablog.blogspot.com/2009/12/google_24.html Ларс Бак в Санкт-Петербурге]{{ref-ru}}</ref>. Перша лабораторна версія рушія з'явилася 3 липня 2008<ref>[https://code.google.com/p/v8/source/detail?r=2 V8 JavaScript Engine initial export]</ref>, а вже 2 вересня було офіційно представлена ​​версія 0.2.5, яка увійшла в перший публічний реліз [[Chromium]]<ref>[http://googlecode.blogspot.com/2008/09/google-chrome-chromium-and-v8-launch.html Запуск V8, Chromium и Google Chrome]{{ref-en}}</ref>.
Основними проблемами, які розв'язували розробники були швидкодія та масштабованість<ref name=Lars>[http://googlerussiablog.blogspot.com/2009/12/google_24.html Ларс Бак в Санкт-Петербурге]{{ref-ru}}</ref>. Перша лабораторна версія рушія з'явилася 3 липня 2008<ref>[https://code.google.com/p/v8/source/detail?r=2 V8 JavaScript Engine initial export]</ref>, а вже 2 вересня було офіційно представлена ​​версія 0.2.5, яка увійшла в перший публічний реліз [[Chromium]]<ref>[http://googlecode.blogspot.com/2008/09/google-chrome-chromium-and-v8-launch.html Запуск V8, Chromium и Google Chrome]{{ref-en}}</ref>.


Ларс Бак вважав<ref>[http://blog.chromium.org/2008/09/google-chromes-need-for-speed_02.html Огляд можливостей]{{ref-en}}</ref>, що наріжними каменями V8 є:
Ларс Бак вважав<ref>[http://blog.chromium.org/2008/09/google-chromes-need-for-speed_02.html Огляд можливостей]{{ref-en}}</ref>, що ''V8'' має особливості:
* [[Компілятор|Компіляція]] [[сирцевий код|сирцевого коду]] [[JavaScript]] безпосередньо у власний [[машинний код]], минаючи стадію проміжного [[байт-код]]у
* [[Компілятор|Компіляція]] [[сирцевий код|сирцевого коду]] [[JavaScript]] безпосередньо у власний [[машинний код]], минаючи стадію проміжного [[байт-код]]у.
* Ефективна система управління пам'яттю, яка веде до швидкого об'єктного виділення і маленьких пауз на [[прибирання сміття]]<ref>[https://developers.google.com/v8/design#garb_coll Ефективне збирання «сміття»]{{ref-en}}</ref>
* Ефективна система керування пам'яттю, яка дозволяє швидко резервувати місця для об'єкту та зменшити очікування на [[прибирання сміття]]<ref>[https://developers.google.com/v8/design#garb_coll Ефективне збирання «сміття»]{{ref-en}}</ref>
** V8 зупиняє виконання коду під час виконання прибирання сміття
** V8 зупиняє виконання коду під час виконання прибирання сміття.
** V8 може точно визначати, де містяться в пам'яті [[Об'єкт (програмування)|об'єкти]] й [[вказівники|посилання], що дозволяє уникнути витоку пам'яті при помилковій ідентифікації об'єктів як посилань.
** Зменшує вплив призупинення програми при прибиранні сміття
* Введення прихованих класів й вбудованих кешів, які прискорюють доступ до властивостей та виклики функцій.
** V8 може точно визначати, де містяться в пам'яті [[Об'єкт (програмування)|об'єкти]] і [[вказівник], що дозволяє уникнути витоку пам'яті при помилковій ідентифікації об'єктів як вказівників
* Введення прихованих класів і вбудованих кешів, які прискорюють доступ до властивостей, і виклики функції


V8 виконує JavaScript-сценарії в особливих «контекстах», які по суті є окремими [[віртуальна машина|віртуальними машинами]]. Правда в одному процесі може працювати тільки одна віртуальна машина, незважаючи на можливість використання декількох [[нить|нитей]]<ref name=sysoev>[http://sysoev.ru/prog/v8.html Огляд можливостей рушія V8 на серверах] {{ref-ru}}</ref>. У Chromium це обходиться мультипроцесовою архітектурою, підвищується також стабільність і безпека через реалізацію механізму «пісочниці»<ref>[http://dev.chromium.org/developers/design-documents/multi-process-architecture Огляд мультипроцесорної архітектури]{{ref-en}}</ref>. Таким чином, незважаючи на динамічну природу JavaScript, розробникам вдалося застосувати методи, характерні для реалізації класичних [[об'єктно-орієнтоване програмування|об'єктно-орієнтованих]] [[мова програмування|мов]], такі як [[Компілятор|компіляція]] коду [[JIT|«на льоту»]], внутрішнє кешування, точний процес прибирання сміття, снепшотинг при створенні контекстів<ref name=Lars /><ref name=sysoev />.
''V8'' виконує JavaScript-сценарії в особливих «контекстах», які по суті є окремими [[віртуальна машина|віртуальними машинами]]. Але в одному процесі може працювати тільки одна віртуальна машина, незважаючи на можливість використання декількох [[нить|потоків]]<ref name=sysoev>[http://sysoev.ru/prog/v8.html Огляд можливостей рушія V8 на серверах] {{ref-ru}}</ref>. У Chromium це обходиться мультипроцесовою архітектурою, підвищується також стабільність і безпека через реалізацію механізму «пісочниці»<ref>[http://dev.chromium.org/developers/design-documents/multi-process-architecture Огляд мультипроцесорної архітектури]{{ref-en}}</ref>.


Рушій V8 відрізняється від інших рушіїв ([[JScript]], [[SpiderMonkey]], [[JavaScriptCore]], [[Nitro]]) високою швидкодією та продуктивністю<ref>[https://developers.google.com/v8/design Design Elements]{{ref-en}}</ref><ref>[http://news.cnet.com/8301-17939_109-10030888-2.html Speed test: Google Chrome beats Firefox, IE, Safari]{{ref-en}}</ref><ref>[https://www.google.com/intl/ru/chrome/browser/features.html#speed Быстрый запуск веб-приложений]{{ref-ru}}</ref><ref>[http://www.webmonkey.com/2010/09/mozilla-asks-are-we-fast-yet/ Mozilla порівнює продуктивність рушіїв] {{ref-en}}</ref><ref>Перевірити продуктивність рушія JavaScript, що використовується браузером, можна запустивши тести [https://v8.googlecode.com/svn/data/benchmarks/v6/run.html V8 Benchmark Suite], [http://www.webkit.org/perf/sunspider-0.9.1/sunspider-0.9.1/driver.html SunSpider], [http://krakenbenchmark.mozilla.org/ Kraken]</ref>.
Рушій ''V8'' відрізняється від інших рушіїв ([[JScript]], [[SpiderMonkey]], [[JavaScriptCore]], [[Nitro]]) високою швидкодією та продуктивністю<ref>[https://developers.google.com/v8/design Design Elements]{{ref-en}}</ref><ref>[http://news.cnet.com/8301-17939_109-10030888-2.html Speed test: Google Chrome beats Firefox, IE, Safari]{{ref-en}}</ref><ref>[https://www.google.com/intl/ru/chrome/browser/features.html#speed Быстрый запуск веб-приложений]{{ref-ru}}</ref><ref>[http://www.webmonkey.com/2010/09/mozilla-asks-are-we-fast-yet/ Mozilla порівнює продуктивність рушіїв] {{ref-en}}</ref><ref>
Перевірити продуктивність рушія JavaScript, що використовується браузером, можна запустивши тести [https://v8.googlecode.com/svn/data/benchmarks/v6/run.html V8 Benchmark Suite], [http://www.webkit.org/perf/sunspider-0.9.1/sunspider-0.9.1/driver.html SunSpider], [http://krakenbenchmark.mozilla.org/ Kraken]</ref>.


== Продукти, що використовують V8 ==
== Продукти, що використовують V8 ==
Рушій ''V8'' використовується в:
V8 дозволяє використання і у браузерах (як то у [[Chrome]] та [[Chromium]]), так і як окремий високо-продуктивний рушій, котрий може інтегруватися у незалежні проекти, в тому числі серверні реалізації JavaScript у [[Node.js]],<ref>{{cite web|url=http://mashable.com/2011/03/10/node-js/|title=Why Everyone Is Talking About Node|author=Jolie O'Dell|date=March 10, 2011|publisher=Mashable}}</ref> або клієнтські JavaScript в .NET/Mono, що спирається на V8.NET.
* браузерах ([[Chrome]] та [[Chromium]]);
* в складі серверних платформ [[Node.js]]<ref>{{cite web|url=http://mashable.com/2011/03/10/node-js/|title=Why Everyone Is Talking About Node|author=Jolie O'Dell|date=March 10, 2011|publisher=Mashable}}</ref>;
* в складі десктоп-програм, наприклад, на платформі .NET/Mono.


=== Браузери ===
=== Браузери ===
Рядок 49: Рядок 54:
* [[Рамблер Ніхром]] - веб-браузер від [[Рамблер]] з сервісами компанії<ref>[http://nichrome.rambler.ru/ Рамблер.Нихром — браузер на базе Chromium]</ref>
* [[Рамблер Ніхром]] - веб-браузер від [[Рамблер]] з сервісами компанії<ref>[http://nichrome.rambler.ru/ Рамблер.Нихром — браузер на базе Chromium]</ref>
* [[Flock]] - веб-браузер, націлений на роботу з соціальними мережами<ref name=autogenerated1>[http://beta.flock.com/powered_by_chromium Flock меняет основу]{{ref-en}}</ref>
* [[Flock]] - веб-браузер, націлений на роботу з соціальними мережами<ref name=autogenerated1>[http://beta.flock.com/powered_by_chromium Flock меняет основу]{{ref-en}}</ref>
* [[Яндекс.Браузер]] - веб-браузер від [[Яндекс]] з сервісами компанії<ref>[http://browser.yandex.ru/ Яндекс.Интернет — браузер на базе Chromium]</ref><ref>[http://soft.yandex.ru/ Яндекс Хром входит в каталог рекомендуемых программ Яндекса]</ref>
* [[Maxthon]] - веб-браузер з вбудованим блокатором реклами, що використовує два рушії рендеринга: WebKit і Trident<ref>[http://finance.yahoo.com/news/Maxthon-30-Dual-Display-prnews-1482484669.html;_ylt=AvZRUtT7djovO187LoYlUrSscq9_;_ylu=X3oDMTFkZ3NqZTFtBHBvcwM1BHNlYwNuZXdzSHViQXJ0aWNsZUxpc3QEc2xrA21heHRob24zMGR1YQ--?x=0 Реліз Maxthon 3 з рушієм Google V8].{{ref-en}}</ref>
* [[Maxthon]] - веб-браузер з вбудованим блокатором реклами, що використовує два рушії рендеринга: WebKit і Trident<ref>[http://finance.yahoo.com/news/Maxthon-30-Dual-Display-prnews-1482484669.html;_ylt=AvZRUtT7djovO187LoYlUrSscq9_;_ylu=X3oDMTFkZ3NqZTFtBHBvcwM1BHNlYwNuZXdzSHViQXJ0aWNsZUxpc3QEc2xrA21heHRob24zMGR1YQ--?x=0 Реліз Maxthon 3 з рушієм Google V8].{{ref-en}}</ref>
* Браузер Android - мобільний браузер, що входить до Android OS<ref>[http://www.gadgetsnreviews.com/here-gets-launched-the-android-2-2-froyo-update-for-nexus-one-‘officially’-by-google/2397.html Включення рушія V8 у мобільний браузер Froyo]{{ref-en}}</ref>
* Браузер Android - мобільний браузер, що входить до Android OS<ref>[http://www.gadgetsnreviews.com/here-gets-launched-the-android-2-2-froyo-update-for-nexus-one-‘officially’-by-google/2397.html Включення рушія V8 у мобільний браузер Froyo]{{ref-en}}</ref>
Рядок 56: Рядок 60:


=== Операційні системи ===
=== Операційні системи ===
* [[Android]] - [[операційна система]] від Google, призначена для комунікаторів, нетбуків і планшетів. Використовується в браузері, починаючи з Froyo
* [[Android]] - [[операційна система]] від Google, призначена для комунікаторів, нетбуків і планшетів. Використовується в браузері, починаючи з Froyo
* [[Open webOS]] - операційна система від [[Hewlett-Packard]] для комунікаторів, нетбуків і планшетів. Рушій V8 використовується в браузері
* [[Open webOS]] - операційна система від [[Hewlett-Packard]] для комунікаторів, нетбуків і планшетів. Рушій V8 використовується в браузері
* [[Google Chrome OS]] - операційна система від Google на базі проекту Chromium, орієнтована на хмарні сервіси. V8 є важливим компонентом ОС
* [[Google Chrome OS]] - операційна система від Google на базі проекту Chromium, орієнтована на хмарні сервіси. V8 є важливим компонентом ОС



Версія за 20:46, 1 серпня 2018

V8 JavaScript Engine
Типрушій JavaScript
РозробникиThe Chromium Project
Перший випуск2 вересня 2008; 15 років тому (2008-09-02)
Стабільний випуск5.8[1][2] (19 квітня 2017; 7 років тому (2017-04-19))
ПлатформаIA-32, x86-64, ARM[3], MIPS[4]
Операційна системаБагатоплатформний
Мова програмуванняC++,[5] JavaScript[5]
Стан розробкиактивний
ЛіцензіяBSD[6]
Репозиторійchromium.googlesource.com/v8/v8
Вебсайтdevelopers.google.com/v8

V8рушій JavaScript з відкритим сирцевим кодом. Розроблений данським відділенням компанії Google та розповсюджується за ліцензією BSD.

Огляд

Розробка JavaScript-рушія V8// почалася у данському відділенні Google в місті Орхус. Провідним розробником став Ларс Бак (Lars Bak).

Основними проблемами, які розв'язували розробники були швидкодія та масштабованість[7]. Перша лабораторна версія рушія з'явилася 3 липня 2008[8], а вже 2 вересня було офіційно представлена ​​версія 0.2.5, яка увійшла в перший публічний реліз Chromium[9].

Ларс Бак вважав[10], що V8 має особливості:

  • Компіляція сирцевого коду JavaScript безпосередньо у власний машинний код, минаючи стадію проміжного байт-коду.
  • Ефективна система керування пам'яттю, яка дозволяє швидко резервувати місця для об'єкту та зменшити очікування на прибирання сміття[11]
    • V8 зупиняє виконання коду під час виконання прибирання сміття.
    • V8 може точно визначати, де містяться в пам'яті об'єкти й [[вказівники|посилання], що дозволяє уникнути витоку пам'яті при помилковій ідентифікації об'єктів як посилань.
  • Введення прихованих класів й вбудованих кешів, які прискорюють доступ до властивостей та виклики функцій.

V8 виконує JavaScript-сценарії в особливих «контекстах», які по суті є окремими віртуальними машинами. Але в одному процесі може працювати тільки одна віртуальна машина, незважаючи на можливість використання декількох потоків[12]. У Chromium це обходиться мультипроцесовою архітектурою, підвищується також стабільність і безпека через реалізацію механізму «пісочниці»[13].

Рушій V8 відрізняється від інших рушіїв (JScript, SpiderMonkey, JavaScriptCore, Nitro) високою швидкодією та продуктивністю[14][15][16][17][18].

Продукти, що використовують V8

Рушій V8 використовується в:

  • браузерах (Chrome та Chromium);
  • в складі серверних платформ Node.js[19];
  • в складі десктоп-програм, наприклад, на платформі .NET/Mono.

Браузери

  • Chromium - веб-браузер з відкритим кодом, на основі якого створюються низка браузерів
  • Google Chrome - веб-браузер від Google
  • Opera від версії 13
  • CoolNovo - веб-браузер від Maple Studios, що розширює можливості Chromium
  • SRWare Iron - веб-браузер від компанії SRWare, випущені через те, що Google Chrome відправляє компанії Google відомості про користувача
  • Comodo Dragon - веб-браузер від Comodo з додатковими функціями, що підвищують безпеку та конфіденційність
  • Рамблер Ніхром - веб-браузер від Рамблер з сервісами компанії[20]
  • Flock - веб-браузер, націлений на роботу з соціальними мережами[21]
  • Maxthon - веб-браузер з вбудованим блокатором реклами, що використовує два рушії рендеринга: WebKit і Trident[22]
  • Браузер Android - мобільний браузер, що входить до Android OS[23]
  • Opera для Android[24]
  • Vivaldi - веб-оглядач від групи колишніх працівників компанії Opera Software

Операційні системи

  • Android - операційна система від Google, призначена для комунікаторів, нетбуків і планшетів. Використовується в браузері, починаючи з Froyo
  • Open webOS - операційна система від Hewlett-Packard для комунікаторів, нетбуків і планшетів. Рушій V8 використовується в браузері
  • Google Chrome OS - операційна система від Google на базі проекту Chromium, орієнтована на хмарні сервіси. V8 є важливим компонентом ОС

Серверні платформи

Виноски

  1. V8 Release 5.8. V8 Project.
  2. Stable Channel Update for Desktop. Google Chrome Team.
  3. https://developers.google.com/v8/intro
  4. Офіційна підтримка з версії 3.8.2
  5. а б V8 JavaScript Engine. Google Code.
  6. v8/LICENSE.v8 at master. Github.
  7. Ларс Бак в Санкт-Петербурге(рос.)
  8. V8 JavaScript Engine initial export
  9. Запуск V8, Chromium и Google Chrome(англ.)
  10. Огляд можливостей(англ.)
  11. Ефективне збирання «сміття»(англ.)
  12. Огляд можливостей рушія V8 на серверах (рос.)
  13. Огляд мультипроцесорної архітектури(англ.)
  14. Design Elements(англ.)
  15. Speed test: Google Chrome beats Firefox, IE, Safari(англ.)
  16. Быстрый запуск веб-приложений(рос.)
  17. Mozilla порівнює продуктивність рушіїв (англ.)
  18. Перевірити продуктивність рушія JavaScript, що використовується браузером, можна запустивши тести V8 Benchmark Suite, SunSpider, Kraken
  19. Jolie O'Dell (10 березня 2011). Why Everyone Is Talking About Node. Mashable.
  20. Рамблер.Нихром — браузер на базе Chromium
  21. Flock меняет основу(англ.)
  22. Реліз Maxthon 3 з рушієм Google V8.(англ.)
  23. Включення рушія V8 у мобільний браузер Froyo(англ.)
  24. Первый стабильный выпуск основанного на WebKit браузера Opera для Android // opennet.ru 21.05.2013

Посилання