กลับไปหน้าบทความ

อ่าน 10 นาที

รายชื่อเครื่องมือ JavaScript

เอนจิ้นJavaScript รุ่นแรกๆเป็นตัวแปลรหัสต้นฉบับแต่เอนจิ้นสมัยใหม่ใช้การคอมไพล์แบบทันทีเพื่อปรับปรุงประสิทธิภาพโดยทั่วไปแล้ว เอนจิ้น JavaScript ได้รับการพัฒนาโดย ผู้ผลิต

รายชื่อเครื่องมือ JavaScript

เอนจิ้นJavaScript รุ่นแรกๆเป็นตัวแปลรหัสต้นฉบับแต่เอนจิ้นสมัยใหม่ใช้การคอมไพล์แบบทันทีเพื่อปรับปรุงประสิทธิภาพ[ 1 ]โดยทั่วไปแล้ว เอนจิ้น JavaScript ได้รับการพัฒนาโดย ผู้ผลิต เว็บเบราว์เซอร์และเบราว์เซอร์หลักทุกตัวจะมีเอนจิ้นนี้ ในเบราว์เซอร์ เอนจิ้น JavaScript จะทำงานร่วมกับเอนจิ้นการเรนเดอร์ผ่านDocument Object ModelและWeb IDL bindings [ 2 ]อย่างไรก็ตาม การใช้เอนจิ้น JavaScript ไม่ได้จำกัดอยู่แค่เบราว์เซอร์เท่านั้น ตัวอย่างเช่นเอนจิ้น V8เป็นส่วนประกอบหลักของระบบรันไทม์Node.js [ 3 ]พวกมันยังถูกเรียกว่า เอนจิ้น ECMAScriptตามชื่ออย่างเป็นทางการของข้อกำหนด ด้วยการมาถึงของWebAssembly เอนจิ้นบางตัวสามารถเรียกใช้โค้ดนี้ใน แซนด์บ็อกซ์เดียวกันกับโค้ด JavaScript ทั่วไปได้[ 4 ] [ 3 ]

ประวัติศาสตร์

เอนจิน JavaScript ตัวแรกถูกสร้างขึ้นโดยBrendan Eichในปี 1995 สำหรับเว็บเบราว์เซอร์ Netscape Navigator [ 5 ] มันเป็นตัวแปลภาษา พื้นฐาน สำหรับภาษาที่ Eich คิดค้นขึ้น[ 6 ] (ซึ่งต่อมาได้พัฒนาเป็น เอนจิน SpiderMonkeyซึ่งยังคงใช้โดยเบราว์เซอร์Firefox [ 5 ] )

Googleเปิดตัว เบราว์เซอร์ Chromeในปี 2551 โดยใช้ เอนจิน JavaScript V8ซึ่งในขณะนั้นเร็วกว่าคู่แข่งมาก[ 7 ] [ 8 ] ทำให้เกิดการแข่งขันระหว่างผู้ผลิตเบราว์เซอร์ในการพัฒนาเอนจิน JavaScript ที่เร็วขึ้นเรื่อยๆ[ 9 ] นวัตกรรมสำคัญในยุคนี้ ได้แก่ การเปลี่ยนจาก ตัวแปลภาษาแบบเดินตาม ต้นไม้ พื้นฐาน ไปเป็นตัวแปลภาษาไบต์โค้ดVM แบบ ใช้สแต็กและรีจิสเตอร์การคอมไพล์แบบทันเวลา (JIT) การแคชแบบอินไลน์ (คลาสที่ซ่อนอยู่) และGC แบบแบ่งรุ่นApple เปิดตัวเอนจิ น Nitroที่รองรับ JIT ในเดือนมิถุนายน 2551 สำหรับ เบราว์เซอร์ Safariซึ่งมีประสิทธิภาพดีกว่ารุ่นก่อนหน้าถึง 30% [ 10 ] [ 11 ] Mozillaก็ทำตามในเดือนสิงหาคม 2551 ด้วย TraceMonkey ซึ่งเป็นคอมไพเลอร์ JIT ตัวแรกสำหรับเอนจิน SpiderMonkey ที่เปิดตัวใน Firefox 3.1 [ 12 ] Operaเข้าร่วมการแข่งขันด้านประสิทธิภาพด้วย เอนจิ้น Carakan ที่ใช้ register-bytecode และ JIT ในปี 2009 [ 13 ]และวางจำหน่ายในเดือนเมษายน 2010 [ 14 ] เอนจิ้น Chakra ตัวแรกที่เปิดใช้งาน JIT ของ Microsoft ซึ่งอยู่ระหว่างการพัฒนามาตั้งแต่ปี 2008 [ 15 ]เปิดตัวเป็นส่วนหนึ่งของInternet Explorer 9ในปี 2011 การเขียนใหม่ครั้งใหญ่ปรากฏในMicrosoft Edge Legacyในปี 2015 และเปิดเผยเป็น โอเพนซอร์สในชื่อ ChakraCoreในปี 2016

ต่อมาได้มีการพัฒนาประสิทธิภาพเพิ่มเติมในเอนจิ้น JavaScript หลักๆ ด้วยการนำสถาปัตยกรรม JIT แบบหลายระดับมาใช้ คอมไพเลอร์ JIT ที่มีความก้าวหน้ามากขึ้นเรื่อยๆ จะถูกใช้เพื่อเพิ่มประสิทธิภาพจุดสำคัญในโค้ดของผู้ใช้ โดยแต่ละระดับถัดไปจะส่งมอบโค้ดเนทีฟที่มีประสิทธิภาพมากขึ้นเรื่อยๆ โดยแลกกับเวลาในการคอมไพล์ที่ช้าลง Chrome เป็นเบราว์เซอร์แรกที่นำมาใช้ใน V8 ในปี 2010 ด้วยการแนะนำ Crankshaft ซึ่งเป็นคอมไพเลอร์ JIT แบบ 2 ระดับ[ 16 ]ในปี 2023 สถาปัตยกรรมของ V8 ได้พัฒนาเป็น 4 ระดับ ได้แก่ Ignition – ตัวแปลไบต์โค้ดแบบใช้รีจิสเตอร์, Sparkplug – คอมไพเลอร์ JIT ที่รวดเร็วและไม่เพิ่มประสิทธิภาพ, Maglev และ TurboFan – คอมไพเลอร์ JIT ที่ช้ากว่าและเพิ่มประสิทธิภาพ[ 17 ] JavaScriptCore ในปัจจุบันมีสถาปัตยกรรม 4 ระดับที่คล้ายกัน[ 18 ]ในขณะที่ SpiderMonkey และ ChakraCore ของ Firefox มี 3 ระดับ (ตัวแปลและ JIT แบบ 2 ระดับ) [ 19 ] [ 20 ]อย่างไรก็ตาม ความซับซ้อนที่เพิ่มขึ้นเรื่อยๆ ของคอมไพเลอร์ JIT นี้ได้รับการวิพากษ์วิจารณ์ว่าเป็นแหล่งที่มาของบั๊กในเบราว์เซอร์จำนวนมาก ทำให้ผู้ผลิตเบราว์เซอร์บางรายปิดใช้งาน JIT โดยสิ้นเชิง เช่น "โหมดความปลอดภัยขั้นสุดยอด" ของ Microsoft Edgeที่เปิดตัวในปี 2021 และมีรายงานว่ามีผลกระทบต่อประสิทธิภาพเพียงเล็กน้อยสำหรับการท่องเว็บในชีวิตประจำวัน[ 21 ]

อิทธิพลของ V8 ขยายออกไปนอกเบราว์เซอร์ด้วยการเปิดตัวNode.jsในปี 2009 และตัวจัดการแพ็กเกจnpmในปี 2010 เมื่อความนิยมของทั้งสองอย่างเพิ่มขึ้นอย่างมาก V8 จึงกลายเป็นกลไกหลักที่ขับเคลื่อนโค้ด JavaScript ฝั่งเซิร์ฟเวอร์จำนวนมหาศาล[ 22 ] [ 23 ]ในปี 2013 เฟรมเวิร์ก Electronปรากฏขึ้น ซึ่งช่วยให้นักพัฒนาสามารถสร้างแอปพลิเคชันเดสก์ท็อปด้วยเทคโนโลยีเว็บได้เช่นกัน โดยใช้Chromiumร่วมกับ V8 และNode.jsอยู่เบื้องหลัง[ 24 ]

ด้วยการใช้ประโยชน์จากการปรับปรุงประสิทธิภาพในเอนจิ้น JavaScript คอมไพเลอร์ Emscripten C/C++-to-JavaScript จึงปรากฏขึ้นในปี 2010-2011 และอนุญาตให้รันโค้ด C/C++ ที่ซับซ้อนที่มีอยู่ เช่นเอนจิ้นเกมและแม้แต่เครื่องเสมือน ทั้งหมด ได้โดยตรงในเบราว์เซอร์asm.jsซึ่งเป็นส่วนย่อยระดับต่ำของ JavaScript ที่สามารถปรับแต่งได้อย่างมากสำหรับคอมไพเลอร์ดังกล่าว ปรากฏขึ้นในปี 2013 โดยFirefoxเป็นเบราว์เซอร์แรกที่นำการปรับแต่งเฉพาะสำหรับ asm.js มาใช้ด้วยโมดูล OdinMonkey [ 25 ]ในที่สุด asm.js และNaCl (เทคโนโลยีคู่แข่งของ Google) ก็พัฒนาเป็น มาตรฐาน WebAssemblyในปี 2017 โดยเอนจิ้นหลักทั้งหมดเพิ่มการสนับสนุนสำหรับมาตรฐานนี้[ 4 ]

ช่องว่างหกปีระหว่างECMAScript 5 (2009) และES6 (2015) ถือเป็นจุดเปลี่ยนสำคัญในการพัฒนาเอ็นจิ้น JavaScript ในขณะที่ ES5 เป็นภาษาที่มีขนาดกะทัดรัดและมีการใช้งานพื้นฐานที่ตรงไปตรงมา ES6 ได้นำเสนอพื้นฐานของ JavaScript สมัยใหม่ ซึ่งมีความซับซ้อนเพิ่มขึ้นอย่างมาก รวมถึงวงจรการออกเวอร์ชันข้อกำหนดใหม่เป็นประจำทุกปี สิ่งนี้ทำให้การมุ่งเน้นไม่เพียงแต่การเพิ่มประสิทธิภาพการทำงานเท่านั้น แต่ยังรวมถึงการรักษาความทันต่อมาตรฐานที่พัฒนาอย่างรวดเร็ว (ทั้งของ ECMAScript และระบบนิเวศเว็บที่กว้างขึ้น) และนำไปสู่การรวมตัวกันของเอ็นจิ้นที่มีทรัพยากรเพียงพอที่จะทำเช่นนั้น โครงการขนาดเล็กจำนวนมากไม่ได้นำข้อกำหนด ES6 มาใช้อย่างเต็มที่ และ ทั้ง OperaและMicrosoftต่างก็หยุดพัฒนาเอ็นจิ้นของตนและนำ V8 มาใช้ในปี 2013 และ 2021 ตาม ลำดับ [ 26 ] [ 27 ]เอ็นจิ้น Nashorn ถูกถอดออกจาก OpenJDK เนื่องจากความกังวลที่คล้ายกันเกี่ยวกับการพัฒนาอย่างรวดเร็วของ ECMAScript [ 28 ]

รายการ

เครื่องยนต์ ใบอนุญาต มาตรฐานจิทวาสม์เขียนเป็น คำอธิบาย
วี8BSD-3-Clauseอีเอสเน็กซ์ ใช่ ใช่ ซี++JavaScript เป็นเอนจิน JavaScript ของGoogle Chromeและ เบราว์เซอร์ที่ใช้ Chromium / Blinkเช่นMicrosoft Edgeนอกจากนี้ยังใช้ในรันไทม์Node.jsและDeno , เฟรมเวิร์ก Electronและโครงการอื่นๆ อีกมากมาย ปัจจุบันมี ตัวแปล ไบต์โค้ดแบบใช้รีจิสเตอร์ (Ignition) และคอมไพเลอร์ JIT สามระดับ (Sparkplug, Maglev และ Turbofan)
สไปเดอร์มังกี้เอ็มพีแอล-2.0อีเอสเน็กซ์ ใช่ ใช่ ซี++เอ็นจิ้น JavaScript ของMozilla Firefoxและแอปพลิเคชัน Mozilla Gecko อื่นๆ ปัจจุบันเอ็นจิ้นนี้ประกอบด้วยตัวแปลภาษา JIT แบบ 2 ระดับสำหรับ JavaScript (Baseline Compiler และ WarpMonkey) และ JIT แบบ 2 ระดับแยกต่างหากสำหรับ WebAssembly [ 19 ]ก่อนหน้านี้ เอ็นจิ้นนี้ประกอบด้วยส่วนประกอบต่างๆ เช่น คอมไพเลอร์ TraceMonkey (JIT JavaScript ตัวแรก), JägerMonkey, IonMonkey และโมดูลเพิ่มประสิทธิภาพ OdinMonkey ซึ่งโดดเด่นในด้านการบุกเบิกasm.js [ 25 ]
JavaScriptCoreLGPL-2.0บางส่วนอยู่ภายใต้BSDอีเอสเน็กซ์ ใช่ ใช่ ซี++เอนจิน JavaScript ของเบราว์เซอร์SafariและWebKit นอกจากนี้ยังใช้ในรันไทม์ Bunด้วย เริ่มต้นในปี 2001 โดยแยกมาจาก เอนจิน KJSในปี 2008 เอนจินนี้ได้รับการเขียนใหม่เพื่อใช้ตัวแปลไบต์โค้ดแบบใช้รีจิสเตอร์แบบเธรดโดยตรง ซึ่งมีชื่อรหัสว่า SquirrelFish ไม่นานหลังจากนั้น SquirrelFish Extreme (Nitro ในแง่การตลาดของ Apple) [ 29 ]ก็ได้รับการเผยแพร่ ซึ่งทำความเร็วได้มากกว่า 2 เท่าโดยใช้การแคชแบบอินไลน์โพลีมอร์ ฟิก และเธรดบริบท[ 30 ]ซึ่งเป็นรูปแบบพื้นฐานของJIT [ 31 ] ส่วนประกอบเหล่านี้ต่อมากลายเป็นตัวแปลไบต์โค้ด LLint และ Baseline JIT [ 32 ]ในปี 2011 คอมไพเลอร์ที่ปรับแต่งประสิทธิภาพตัวแรกถูกเพิ่มเข้ามา นั่นคือ DFG ("Data Flow Graph") JIT [ 32 ] [ 33 ]ในปี 2014 ได้มีการเพิ่มคอมไพเลอร์ขั้นสูง ที่ใช้ LLVMซึ่งเรียกว่า Fourth Tier LLVM (FTL) JIT [ 34 ]ในปี 2016 FTL ได้รับการเขียนใหม่เพื่อใช้แบ็กเอนด์ B3 ที่สร้างขึ้นใหม่แทน LLVM [ 35 ] [ 18 ]
ChakraCoreเอ็มไอทีอีเอส2019 ใช่ ใช่ ซี++เอ็นจิ้น JavaScriptของMicrosoft Edge Legacy [ 36 ] เปิดเผยซอร์สโค้ดภายใต้ชื่อ ChakraCore ในปี 2016 Microsoft ยุติการบำรุงรักษาในปี 2021 และปล่อยให้ชุมชนดูแลต่อ แต่ก็ไม่ได้รับความสนใจมากนักตั้งแต่นั้นมา มีคุณสมบัติเป็นตัวแปลไบต์โค้ดแบบใช้รีจิสเตอร์และคอมไพเลอร์ JIT สองระดับ[ 20 ]
ลิบเจเอสเงื่อนไข BSD-2อีเอสเน็กซ์ เลขที่ ใช่ ซี++เอ็นจิ้น JavaScript ของเบราว์เซอร์SerenityOSและLadybird [ 37 ]ในตอนแรกเป็นตัวแปล AST-walking พื้นฐาน ต่อมาได้รับการอัปเกรดเป็นตัวแปล VM bytecode แบบใช้รีจิสเตอร์[ 38 ] [ 39 ] [ 40 ] [ 41 ]รองรับ WebAssembly ผ่านไลบรารี LibWasm
แรดเอ็มพีแอล-2.0ES2023 (บางส่วน) ผ่านทาง  JVMเลขที่ ชวาเอ็นจิ้น JavaScript จากMozillaสำหรับแพลตฟอร์ม Javaการพัฒนาเริ่มต้นที่ Netscape ในปี 1997 เดิมทีมันคอมไพล์ JavaScript เป็นไบต์โค้ด JVMแต่การใช้งานนั้นไม่มีประสิทธิภาพและส่วนใหญ่ใช้ในโหมดตัวแปลภาษา[ 42 ]รวมอยู่ในJDK 6 (2006) ในชื่อ javax.script ใน JDK 8 (2014) มันถูกแทนที่ด้วยเอ็นจิ้น Nashorn ที่เร็วกว่า[ 43 ]ถึงกระนั้น โครงการก็ยังคงพัฒนาต่อไปและได้นำการสนับสนุนสำหรับมาตรฐานใหม่ๆ หลายส่วนมา ใช้ [ 44 ]ใช้ในรันไทม์ RingoJS
นาชอร์นจีพีแอล-2.0ES6 (บางส่วน) ผ่านทาง  JVMเลขที่ ชวาเอ็นจิ้น JavaScript จากOracleที่ใช้ในJDK 8–14 [ 45 ]สร้าง ไบต์โค้ด JVM ที่มีประสิทธิภาพ มากกว่า Rhino โดยใช้ประโยชน์จาก คำสั่ง invokedynamic ใหม่ ที่แนะนำใน JDK 7 [ 46 ]ถูกยกเลิกใน JDK 11 (2018) เนื่องจากปัญหาในการบำรุงรักษาอันเนื่องมาจากการพัฒนาอย่างรวดเร็วของมาตรฐาน ECMAScript [ 28 ]และถูกลบออกใน JDK 15 (2020) [ 47 ]การพัฒนายังคงดำเนินต่อไปจนถึงปัจจุบันในรูปแบบไลบรารีแบบสแตนด์อโลน[ 48 ]
กราอัลเจเอสGFTC, UPL-1.0อีเอสเน็กซ์ ผ่านทางGraalVMใช่ ชวาเอ็นจิ้น JavaScript ของGraalVMสำหรับ แพลตฟอร์ม JVMใช้งานด้วย Truffle ซึ่งเป็นเฟรมเวิร์กภาษาใหม่สำหรับการสร้างโค้ดประสิทธิภาพสูงจากตัวแปลภาษาโดยอัตโนมัติ โดยอิงจากแนวคิดของ การประเมิน ตัวแปลภาษาบางส่วน (การฉายภาพ Futamura) [ 49 ] [ 50 ]โดยทั่วไปเร็วกว่าทั้ง Rhino และ Nashorn มาก และมีประสิทธิภาพเทียบเท่ากับเอ็นจิ้นเบราว์เซอร์หลัก[ 51 ]รองรับ WebAssembly ผ่านโมดูล GraalWasm
เฮอร์เมส เอ็มไอทีES2023 (บางส่วน) เลขที่ เลขที่ ซี++พัฒนาโดยFacebookสำหรับแอปมือถือReact Native [ 52 ]แต่สามารถใช้งานได้โดยอิสระจาก React Native เช่นกัน คอมไพล์ JavaScript เป็นไบต์โค้ดที่ปรับให้เหมาะสมล่วงหน้าเพื่อปรับปรุงเวลาเริ่มต้นแอป[ 53 ] [ 54 ] [ 41 ]โครงการ Static Hermes มีเป้าหมายที่จะเพิ่มการกำหนดประเภทแบบคงที่และการคอมไพล์ JavaScript เป็นโค้ดเนทีฟ ซึ่งทั้งสองอย่างนี้ยังอยู่ในขั้นตอนการทดลอง และการปรับปรุงต่างๆ ให้กับ VM ซึ่งต่อมาได้เผยแพร่เป็น Hermes V1 ใน React Native 0.82 [ 55 ]
ดัคเทป เอ็มไอทีES6 (บางส่วน) เลขที่ เลขที่ ซีเอ็นจิ้น ES5 ขนาดเล็ก ฝังได้ง่าย พร้อมคุณสมบัติบางอย่างจาก ES6 และรุ่นต่อมา[ 56 ] [ 57 ] [ 58 ] [ 59 ]ใช้โดยเบราว์เซอร์ NetSurf
เอ็กซ์เอสLGPL-3.0+ , Apache-2.0อีเอส2025 เลขที่ เลขที่ ซีเอ็นจิ้น JavaScript สำหรับไมโครคอนโทรลเลอร์ที่มีทรัพยากรจำกัด สอดคล้องกับ ECMAScript เวอร์ชันล่าสุด[ 60 ] [ 61 ] [ 59 ] [ 41 ] [ 62 ]เดิมทีพัฒนาโดยKinomaและเปิดเป็นโอเพนซอร์สครั้งแรกในปี 2015 ในฐานะส่วนประกอบสำคัญของเฟรมเวิร์ก KinomaJS IoT ปัจจุบันได้รับการดูแลโดย Moddable ในฐานะส่วนหนึ่งของ Moddable SDK [ 63 ]
มูเจเอส ไอเอสซีอีเอส5 เลขที่ เลขที่ ซีไลบรารีตัวแปล ECMAScript น้ำหนักเบา ออกแบบมาเพื่อฝังในซอฟต์แวร์อื่นเพื่อขยายความสามารถในการเขียนสคริปต์ เดิมพัฒนาขึ้นสำหรับMuPDF [ 64 ] [ 57 ]
ควิกเจเอส เอ็มไอทีอีเอส2025 เลขที่ เลขที่ ซีเอ็นจิ้น ECMAScript น้ำหนักเบาโดยFabrice Bellardและ Charlie Gordon ซึ่งปัจจุบันรองรับ ES2023 เกือบสมบูรณ์[ 65 ] [ 57 ] [ 53 ] [ 66 ] [ 41 ]ใช้ตัวแปล VM ไบต์โค้ดแบบ stack และคอมไพเลอร์แบบ single-pass ที่แปลงเป็นไบต์โค้ดโดยตรงโดยไม่ต้องมี AST สามารถคอมไพล์ .js เป็นไบต์โค้ดล่วงหน้าและสร้างไฟล์ปฏิบัติการไบนารีที่ไม่มีการพึ่งพาภายนอก ใช้ใน WinterJS และรันไทม์ LLRT ของAmazon , CouchDB , nginx (เป็นทางเลือกแทน njs), yt- dlp
V4 (QJSEngine)LGPL , GPL , Qtอีเอส2016 ใช่ เลขที่ ซี++เอ็นจิ้น JavaScript ของ เฟรมเวิร์ก QML ของ Qt ซึ่งขับเคลื่อน UI ของแอปพลิเคชัน Qt สมัยใหม่Qt QuickและKDE Plasma [ 67 ] [ 68 ] [ 69 ] [ 70 ] ปรากฏครั้งแรกใน Qt 5.0 (2012) ในฐานะตัวห่อสำหรับ V8 [ 71 ]ต่อมาถูกแทนที่ด้วยเอ็นจิ้น "V4" น้ำหนักเบาที่พัฒนาขึ้นเองของ Qt ใน Qt 5.2 (2013) [ 72 ] [ 73 ]สอดคล้องกับ ES7/ES2016 [ 74 ]และเปิดใช้งาน JIT โดยใช้โค้ด macroassembler ที่ยืมมาจาก JavaScriptCore [ 75 ] [ 76 ]ใช้สำหรับ QML เท่านั้น ไม่ได้ใช้สำหรับโมดูลเอ็นจิ้นเบราว์เซอร์แบบฝัง: โมดูล QtWebKit ใช้ JavaScriptCore ต่อมาถูกแทนที่ด้วย QtWebEngine ที่ใช้ Blink /V8
เอสปรุยโนเอ็มพีแอล-2.0ES5 (กลุ่มย่อย) เลขที่ เลขที่ ซีตัวแปลภาษาขนาดเล็กมากสำหรับไมโครคอนโทรลเลอร์โดย เฉพาะ [ 58 ]สามารถทำงานได้ใน RAM น้อยกว่า 8 kB โดยการดำเนินการจากซอร์สโค้ด (แทนที่จะเป็นไบต์โค้ด )
เจอร์รี่สคริปต์อะปาเช่-2.0อีเอส2022 เลขที่ เลขที่ ซีเอ็นจิ้น JavaScript น้ำหนักเบาพิเศษจากSamsungสำหรับไมโครคอนโทรลเลอร์ที่มี RAM น้อยกว่า 64 KB [ 57 ] [ 59 ]รองรับ ES5 และมาตรฐานส่วนใหญ่ในปัจจุบันจนถึง ES2022
หอยทาก แอลจีพีแอล-2.1อีเอสเน็กซ์ เลขที่ ใช่ ซี++เอ็นจิ้น JavaScript น้ำหนักเบาตัวใหม่จากSamsungสำหรับสภาพแวดล้อมที่มีทรัพยากรจำกัด โดยมุ่งเป้าไปที่อุปกรณ์ระดับกลาง เช่น โทรศัพท์และทีวี อยู่ระหว่างการพัฒนาอย่างต่อเนื่อง รองรับมาตรฐาน ECMAScript ล่าสุดอย่างเต็มที่ ยกเว้นคุณสมบัติเล็กน้อยบางประการ และ WebAssembly [ 77 ] [ 57 ] [ 78 ]ใช้ตัวแปล VM แบบรีจิสเตอร์
ออตโต้ เอ็มไอทีอีเอส5 เลขที่ เลขที่ ไปเอ็นจิ้น JavaScript ที่เขียนด้วยภาษา Go บริสุทธิ์ รองรับ ES5 แต่ใช้เอ็นจิ้น regex ที่ไม่สอดคล้องกับมาตรฐานของ Go
โกจา เอ็มไอทีES2023 (บางส่วน) เลขที่ เลขที่ ไปเอ็นจิ้น JavaScript ในภาษา Go บริสุทธิ์ ได้รับแรงบันดาลใจจาก otto โดยใช้งาน ES5 อย่างสมบูรณ์และบางส่วนของมาตรฐานใหม่กว่า ใช้โดยการใช้งาน Go อย่างเป็นทางการของEthereum (Geth) [ 79 ]
งูเหลือม MIT , ไม่ได้รับอนุญาตอีเอสเน็กซ์ เลขที่ เลขที่ สนิมเอ็นจิ้น JavaScript ที่เขียนด้วย Rust [ 80 ] [ 81 ]
คีเซล เอ็มไอทีอีเอสเน็กซ์ เลขที่ เลขที่ ซิกเอ็นจิ้น JavaScript โดย Linus Groh ที่เขียนด้วยภาษาZig [ 82 ] [ 83 ] [ 84 ] [ 85 ]
เครื่องยนต์ 262 เอ็มไอทีอีเอสเน็กซ์ เลขที่ เลขที่ ไทป์สคริปต์เอ็นจิ้น JavaScript ที่เขียนด้วย TypeScript สำหรับการพัฒนาและการสำรวจ โดยมีจุดประสงค์หลักเพื่อใช้เป็นตัวอย่างอ้างอิงของภาษา[ 41 ]

เครื่องยนต์ประวัติศาสตร์

เอนจิ้นเหล่านี้เลิกผลิตไปแล้ว และส่วนใหญ่จึงน่าสนใจในแง่ของประวัติศาสตร์ บางส่วนอาจยังคงใช้งานอยู่ในปัจจุบันเพื่อวัตถุประสงค์ด้านความเข้ากันได้กับระบบเก่า (โดยเฉพาะเอนจิ้นเก่าของ Microsoft ที่ยังคงมาพร้อมกับWindows )

เครื่องยนต์ ใบอนุญาต มาตรฐานจิทเขียนเป็น คำอธิบาย
มอคค่ากรรมสิทธิ์JS1.1 (≈ES1) เลขที่ ซี++เอ็นจิ้น JavaScript ตัวแรก ต้นแบบโดยBrendan Eichในช่วงเวลา 10 วันในเดือนพฤษภาคม พ.ศ. 2538 และวางจำหน่ายในเดือนกันยายน พ.ศ. 2538 ในNetscape Navigator 2.0b1 [ 86 ] เนื่องจากการหยุดพัฒนาฟีเจอร์ในเดือนสิงหาคม พ.ศ. 2538 จึงไม่สมบูรณ์เมื่อเทียบกับการออกแบบภาษาที่วางแผนไว้ เวอร์ชัน 1.1 ได้รับการเผยแพร่พร้อมกับ Navigator 3.0 ในปี พ.ศ. 2539 ซึ่งเป็นการพัฒนาภาษาในขั้นต้นเสร็จสมบูรณ์ และเป็นพื้นฐานสำหรับ มาตรฐาน ECMAScript ฉบับแรก ในปี พ.ศ. 2540 เอ็นจิ้นนี้มีตัวแยกวิเคราะห์แบบเรียกซ้ำ ที่สร้าง ไบต์โค้ดโดยตรงเครื่องเสมือนแบบใช้สแต็ก ใช้การนับการอ้างอิงแทนGCและแสดงค่าพื้นฐานเป็นยูเนียนแบบแยกแยะแทนที่จะเป็นพอยเตอร์แบบแท็ก ซอร์สโค้ดซึ่งเป็นส่วนหนึ่งของ Navigator 3.0.2 สามารถดูได้จากInternet Archive [ 87 ]สำหรับ Navigator 4.0 เอ็นจิ้นได้รับการเขียนใหม่ทั้งหมดและเปลี่ยนชื่อเป็น SpiderMonkey [ 88 ]
เคเจเอสLGPL-2.0+อีเอส5 เลขที่ ซี++เอ็นจิ้นที่ใช้ในKonqueror เดิม และเป็นส่วนประกอบหนึ่งของKHTMLเป็นรุ่นก่อนหน้าของ JavaScriptCore ซึ่งแยกตัวออกมาในปี 2001 และมีความแตกต่างกันอย่างมากตั้งแต่นั้นมา เดิมทีเป็นตัวแปลแบบ AST-walking ได้รับการอัปเกรดเป็นตัวแปลแบบไบต์โค้ด (FrostByte) ในปี 2008 [ 89 ]การพัฒนาส่วนใหญ่หยุดลงเมื่อ Konqueror เปลี่ยนจาก KHTML เป็น QtWebKit (JavaScriptCore) ก่อน แล้วจึงเป็น QtWebEngine (V8) ในที่สุด KDE Plasma 6ก็ได้ลบเอ็นจิ้น KJS/KHTML ออกไปทั้งหมด[ 90 ]
เจสคริปต์กรรมสิทธิ์อีเอส3 เลขที่ C++ [ 91 ]เอ็นจิ้น JavaScript ของInternet Explorerเวอร์ชัน 3.0 - 8.0 เป็นส่วนประกอบหนึ่งของเอ็นจิ้นเบราว์เซอร์MSHTML (Trident)
เจสคริปต์ .NETกรรมสิทธิ์อีเอส4 ผ่านทาง  CLRเอ็นจิ้น JavaScript สำหรับ.NET Framework 1.0 - 4.x ที่พัฒนาโดยMicrosoftใช้ในASP.NETโดยอิงตามCommon Language RuntimeและCOM Interopเดิมทีเปิดตัวในชื่อ JScript .NET ในปี 2000 [ 92 ]โดยมีเวอร์ชันต่อมาเรียกว่า JScript 7.0, JScript 8.0 [ 93 ]และสุดท้ายคือ JScript 10.0 ใน .NET Framework 4.0 [ 94 ]อย่างไรก็ตาม มันไม่เกี่ยวข้องกับทั้งเอ็นจิ้น JScript (หรือที่รู้จักกันในชื่อ JScript 1.0 - 5.8) และ JScript9 [ 93 ]มันรองรับ ES3 คุณสมบัติหลายอย่างที่เสนอสำหรับ ES4 [ 88 ]รวมถึงภาษาเฉพาะที่เกี่ยวข้องกับ .NET อีกมากมาย[ 95 ] [ 96 ]ถูกยกเลิกจาก.NET Coreและแพลตฟอร์ม . NET สมัยใหม่
จักระ (JScript9)กรรมสิทธิ์อีเอส5 ใช่ ซี++เอ็นจิ้น JavaScript ของInternet Explorer 9.0 - 11.0 เปิดตัวครั้งแรกในงานMIX 10เมื่อ ปี 2553 [ 97 ]ยังคงมีอยู่ใน Windows 11 ในชื่อ JScript9Legacy.dll ซึ่งเป็นตัวทดแทนที่เข้ากันได้กับเอ็นจิ้น JScript ดั้งเดิม (jscript.dll) [ 98 ] [ 99 ]
ลิเนียร์ เอ, ลิเนียร์ บี, ฟูทาร์คกรรมสิทธิ์อีเอส3 เลขที่ ซี++ชุดของเอนจิ้น JavaScript รุ่นแรกๆ ของ เบราว์เซอร์ Operaเอนจิ้นที่ไม่มีชื่อใน Opera 3 (1997–2000) Linear A ใน Opera 4–6 (2000–2002) Linear B ใน Opera 7–9.27 (2002–2007) – รองรับ ECMAScript อย่างสมบูรณ์ Futhark ใน Opera 9.50-10.20 (2007–2010) [ 100 ]
คารากันกรรมสิทธิ์อีเอส5 ใช่ ซี++เอ็นจิ้น JavaScript ของOpera 10.50 - 12.x (2010–2013) [ 13 ] [ 101 ]มีคุณสมบัติไบต์โค้ดแบบใช้รีจิสเตอร์และ JIT [ 13 ]การเปิดตัวเวอร์ชันหลักถัดไป Opera 15 ได้เปลี่ยนจาก Presto ไปใช้ เอ็นจิ้นเบราว์เซอร์ WebKit / Blinkพร้อมกับเอ็นจิ้น JavaScript V8 [ 26 ]
คิวทสคริปต์LGPL , GPL , Qtอีเอส5 เลขที่ ซี++เดิมทีพัฒนาโดย Trolltech ซึ่งปัจจุบันเป็นของThe Qt Companyปรากฏครั้งแรกในQt 4.3 ถูกยกเลิกการใช้งานใน Qt 5.5 โดยเปลี่ยนไปใช้QML V4 แทน และถูกยกเลิกอย่างถาวรใน Qt 6.5 มีพื้นฐานมาจากเอนจิน JavaScriptCore และมีส่วนขยาย ECMAScript เฉพาะของ Qt อยู่บ้าง เช่น การเชื่อมต่อสัญญาณและสล็อตแบบ QObject
เอพิเมเทอุส MPL-1.1 GPL-2.0+ LGPL-2.1+อีเอส4 เลขที่ ซี++การใช้งาน "JavaScript 2.0" แบบทดลองของNetscape ตาม ข้อเสนอES4 [ 88 ] [ 102 ]
มะขามเอ็มพีแอล-2.0อีเอส4 ใช่ ซี++ใช้เอนจิน ActionScriptและ ECMAScript ในAdobe Flash Player 9และนำมาตรฐาน ES4 มาใช้
นาร์ซิสซัส MPL-1.1+ GPL-2.0+ LGPL-2.1+อีเอส5 เลขที่ โค้ด JavaScriptเอนจิน JavaScript ที่นำมาใช้ใน JavaScript ( ตัวประเมินแบบเมตาเซอร์คิวลาร์ ) โดยBrendan Eichผู้สร้าง JavaScript ใช้สำหรับการทดลองคุณสมบัติภาษาใหม่สำหรับความพยายามของ ES6 [ 88 ]
ลิงก์จีพีแอล-2.0+เลขที่ เลขที่ ซีเบราว์เซอร์ ลิงก์มีการใช้งาน JavaScript พื้นฐานจนถึงเวอร์ชัน 2.1pre28 ถูกลบออกในเวอร์ชัน 2.1pre29 เนื่องจาก "มีข้อบกพร่องมาก" [ 103 ]
วอยเอเจอร์จีพีแอล-3.0 อีเอส3 เลขที่ ซีVoyagerซึ่งเป็นเว็บเบราว์เซอร์อีกตัวสำหรับAmigaในช่วงปลายทศวรรษ 1990 ถึงต้นทศวรรษ 2000 มีเอนจิน JavaScript เป็นของตัวเอง
สคริปต์อีส กรรมสิทธิ์ES3 [ 104 ]เลขที่ ซี++เอ็นจิ้นที่เป็นกรรมสิทธิ์แบบเก่าที่ได้รับการปรับปรุงครั้งสุดท้ายในปี 2546 โดดเด่นเฉพาะการใช้งานในกล้องโทรทรรศน์อวกาศเจมส์ เวบบ์[ 105 ]

ดูเพิ่มเติม

ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=List_of_JavaScript_engines&oldid=1354775803 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ รายชื่อเครื่องมือ JavaScript

เอนจิ้นJavaScript รุ่นแรกๆเป็นตัวแปลรหัสต้นฉบับแต่เอนจิ้นสมัยใหม่ใช้การคอมไพล์แบบทันทีเพื่อปรับปรุงประสิทธิภาพโดยทั่วไปแล้ว เอนจิ้น JavaScript ได้รับการพัฒนาโดย ผู้ผลิต

ประวัติศาสตร์

เอนจิน JavaScript ตัวแรกถูกสร้างขึ้นโดย Brendan Eich ในปี 1995 สำหรับ เว็บเบ ราว์เซอร์ Netscape Navigator [ 5 ] มัน เป็น ตัวแปลภาษา พื้นฐาน สำหรับภาษาที่ Eich คิดค้นขึ้น [ 6 ] (ซึ่งต่อมาได้พัฒนาเป็น เอนจิน SpiderMonkey ซึ่งยังคงใช้โดยเบราว์เซอร์ Firefox [ 5 ]...

รายการ

เครื่องยนต์ ใบอนุญาต มาตรฐาน จิท วาสม์ เขียนเป็น คำอธิบาย วี8 BSD-3-Clause อีเอสเน็กซ์ ใช่ ใช่ ซี++ JavaScript เป็นเอนจิน JavaScript ของ Google Chrome และ เบราว์เซอร์ที่ใช้ Chromium / Blink เช่น Microsoft Edge นอกจากนี้ยังใช้ใน รันไทม์ Node.

เครื่องยนต์ประวัติศาสตร์

เอนจิ้นเหล่านี้เลิกผลิตไปแล้ว และส่วนใหญ่จึงน่าสนใจในแง่ของประวัติศาสตร์ บางส่วนอาจยังคงใช้งานอยู่ในปัจจุบันเพื่อวัตถุประสงค์ด้านความเข้ากันได้กับระบบเก่า (โดยเฉพาะเอนจิ้นเก่าของ Microsoft ที่ยังคงมาพร้อมกับ Windows )