GraalJS เป็นเอ็นจิ้น JavaScript ที่ใช้งานใน Java บน GraalVM เป็นรันไทม์ที่สอดคล้องกับ ECMAScript เพื่อรันแอปพลิเคชัน JavaScript และ Node.js และรวมคุณประโยชน์ทั้งหมดจากสแตก GraalVM รวมถึงความสามารถในการทำงานร่วมกันกับ Java GraalJS เป็นโครงการโอเพ่นซอร์ส
เป้าหมายของ GraalJS คือ:
ในเวอร์ชัน 23.1.0 GraalJS พร้อมใช้งานในรูปแบบ Maven artifact นอกจากนี้เรายังมีการกระจายรันไทม์ JavaScript และ Node.js แบบสแตนด์อโลนอีกด้วย
ขอบคุณ GraalJS คุณสามารถฝัง JavaScript ลงในแอปพลิเคชัน Java ได้อย่างง่ายดาย สามารถดาวน์โหลดสิ่งประดิษฐ์ที่จำเป็นทั้งหมดได้โดยตรงจาก Maven Central
อาร์ติแฟกต์ทั้งหมดที่เกี่ยวข้องกับตัวฝังสามารถพบได้ในกลุ่มการพึ่งพา Maven org.graalvm.polyglot
ด้านล่างนี้คือการตั้งค่าการพึ่งพา Maven ขั้นต่ำที่คุณสามารถคัดลอกลงใน pom.xml ของคุณได้:
< dependency >
< groupId >org.graalvm.polyglot groupId >
< artifactId >polyglot artifactId >
< version >${graaljs.version} version >
dependency >
< dependency >
< groupId >org.graalvm.polyglot groupId >
< artifactId >js artifactId >
< version >${graaljs.version} version >
< type >pom type >
dependency >
สิ่งนี้ทำให้ GraalJS สร้างขึ้นบน Oracle GraalVM และได้รับอนุญาตภายใต้ข้อกำหนดและเงื่อนไขของ GraalVM Free (GFTC) ใช้ js-community
หากคุณต้องการใช้ GraalJS ที่สร้างขึ้นบน GraalVM Community Edition
หากต้องการเข้าถึงสิ่งประดิษฐ์ที่แยกได้หลายภาษา (GFTC เท่านั้น) ให้ใช้ส่วนต่อท้าย -isolate
แทน (เช่น js-isolate
)
ดูการสาธิตการฝังหลายภาษาบน GitHub สำหรับตัวอย่างที่สามารถรันได้ทั้งหมด
คุณสามารถใช้ GraalJS กับ GraalVM JDK, Oracle JDK หรือ OpenJDK หากคุณต้องการรันบน JVM หุ้น ลองดูที่ Run GraalJS บน Stock JDK โปรดทราบว่าในโหมดนี้ฟีเจอร์และการเพิ่มประสิทธิภาพมากมายของ GraalVM จะไม่พร้อมใช้งาน เนื่องจากข้อจำกัดเหล่านั้น การรันบน JVM แบบสต็อกจึงไม่ใช่ฟีเจอร์ที่รองรับ โปรดใช้ GraalVM แทน
การแจกแจงแบบสแตนด์อโลนมีการเผยแพร่บน GitHub มีตัวเลือกรันไทม์สองภาษาให้เลือก:
เพื่อแยกความแตกต่างระหว่างสิ่งเหล่านั้น ไฟล์สแตนด์อโลนที่มาพร้อมกับ JVM จะมี -jvm
อยู่ในชื่อ นอกจากนี้ เวอร์ชัน GraalVM Community Edition ยังมี -community
ในชื่อ เช่น graaljs-community-
มีการกำหนดค่าที่แตกต่างกันสี่แบบสำหรับแต่ละส่วนประกอบและแพลตฟอร์มรวมกัน:
รันไทม์ | ใบอนุญาต | เก็บถาวร Infix |
---|---|---|
พื้นเมือง | กฟท | ไม่มี |
เจวีเอ็ม | กฟท | -jvm |
พื้นเมือง | ยูพีแอล | -community |
เจวีเอ็ม | ยูพีแอล | -community-jvm |
หากต้องการติดตั้ง GraalJS จากสแตนด์อโลน ให้ดาวน์โหลดและแตกไฟล์เก็บถาวรจากหน้า GitHub Releases หลังจากการติดตั้ง js
หรือ node
ที่สามารถเรียกใช้งานได้ในไดเร็กทอรีย่อย bin
สามารถใช้เพื่อรันไฟล์ JavaScript หรือโมดูล Node ตามลำดับ หากไม่มีไฟล์ระบุไว้ในบรรทัดคำสั่ง เชลล์แบบโต้ตอบ (REPL) จะถูกสร้างขึ้น
หมายเหตุ: หากคุณใช้ macOS ให้ลบแอตทริบิวต์กักกันออกจากไฟล์เก็บถาวรก่อน:
shell sudo xattr -r -d com.apple.quarantine
.tar.gz
GraalJS สามารถเรียกใช้แอปพลิเคชัน Node.js ที่ไม่ได้แก้ไขได้ รันไทม์ Node.js ของ GraalVM อิงตาม Node.js เวอร์ชันล่าสุด และรันกลไก GraalJS แทน Google V8 มีความเข้ากันได้สูงกับแพ็คเกจ NPM ที่มีอยู่ ซึ่งรวมถึงแพ็คเกจ NPM ที่มีการนำไปใช้งานแบบเนทีฟ โปรดทราบว่าโมดูล NPM บางตัวอาจจำเป็นต้องคอมไพล์ใหม่จากแหล่งที่มาด้วย GraalJS (หากมาพร้อมกับไบนารีที่คอมไพล์สำหรับ Node.js ที่ใช้ V8)
Node.js มีจำหน่ายในรูปแบบการแจกจ่ายแบบสแตนด์อโลนแยกต่างหาก ดูวิธีเริ่มต้นใช้งาน Node.js
มีเอกสารประกอบผู้ใช้อย่างละเอียดอยู่บนเว็บไซต์ นอกจากนี้ยังมีเอกสารประกอบในพื้นที่เก็บข้อมูลนี้ภายใต้เอกสารสำหรับผู้ใช้และผู้มีส่วนร่วม สำหรับการสนับสนุน โปรดดูคำแนะนำเกี่ยวกับวิธีสร้าง GraalJS จากซอร์สโค้ด
GraalJS เข้ากันได้กับข้อกำหนด ECMAScript 2024 คุณสมบัติใหม่ ข้อเสนอ ECMAScript ใหม่ ซึ่งมีกำหนดจะเปิดตัวในรุ่นต่อๆ ไป มีการเพิ่มบ่อยครั้งและสามารถเข้าถึงได้หลังตัวเลือก ดู CHANGELOG.md สำหรับข้อเสนอที่นำมาใช้แล้ว
นอกจากนี้ยังรองรับส่วนขยายยอดนิยมของเอ็นจิ้นอื่นอีกด้วย ดูความเข้ากันได้ของ GraalJS
เอ็นจิ้น JavaScript หลักคือแอปพลิเคชัน Java และเข้ากันได้กับทุกระบบปฏิบัติการที่มี JVM ที่เข้ากันได้ ดูเรียกใช้ GraalJS บน Stock JDK เราให้บริการการแจกแจงแบบไบนารีและรองรับ GraalJS อย่างเต็มรูปแบบบน Linux (x64, AArch64), macOS (x64, AArch64) และ Windows (x64) ในปัจจุบัน
ดู graalvm.org/community เพื่อดูวิธีติดต่อกับชุมชนการพัฒนา ช่อง graaljs บน graalvm.slack.com เป็นวิธีที่ดีในการติดต่อกับทีมที่อยู่เบื้องหลัง GraalJS รายงานปัญหาเฉพาะของ GraalJS ที่พื้นที่เก็บข้อมูล oracle/graaljs GitHub
ซอร์สโค้ด GraalJS และการแจกจ่ายชุมชนมีให้ใช้งานภายใต้ Universal Permissive License (UPL) เวอร์ชัน 1.0
อาร์ติแฟกต์ที่ไม่ใช่ของชุมชนมีให้ภายใต้ข้อกำหนดและเงื่อนไขของ GraalVM ฟรี (GFTC) รวมถึงสิทธิ์การใช้งานสำหรับเวอร์ชันผู้ใช้นำร่อง