องค์ประกอบสำคัญในการนี้คือการแยกของการรวบรวมจากขั้นตอนการดำเนินการ ด้วยวิธีนี้คุณสามารถเขียนคอมไพเลอร์อื่น ๆ เพื่อรวบรวมภาษาอื่น ๆ ไปยัง bytecode
Bytecode นั้นทำหน้าที่คล้ายกับรหัสเครื่องของ CPU - คุณมีการดำเนินการเล็ก ๆ น้อย ๆ ที่จำเป็นสำหรับการรันโปรแกรม - คุณสามารถรับตัวแปรทำคณิตศาสตร์กับมันมีการทำงานแบบมีเงื่อนไข ฯลฯ
Java ยังไม่พิเศษ ใน Java การมีอยู่ของหลายภาษานั้นไม่ได้เป็นเป้าหมายในการออกแบบเหมือน VM อื่น ๆ สำหรับ.Net CIL ของ Microsoftความสามารถในการรันหลายภาษา (C #, VB.Net, ... ) เป็นองค์ประกอบการออกแบบที่สำคัญเช่นกันParrotVMจากโครงการ Perl6 มุ่งเป้าไปที่ VM ทั่วไป
เพื่อความสนุกฉันได้สร้างหลักฐานว่าแม้แต่ Zend Engine ของ PHP ก็สามารถทำได้
และที่จริงแล้วนี่ไม่ใช่สิ่งใหม่ - แม้แต่บนฮาร์ดแวร์จริงที่คุณสามารถรันหลายภาษาได้เช่น C หรือ Fortran
ความแตกต่างระหว่างการแยกและการประมวลผลนี้คือล่าม clssic เช่นพื้นฐานบางรูปแบบ, เชลล์สคริปต์, ฯลฯ พวกเขามักจะทำงานในวิธีที่พวกเขาเรียกใช้รหัสในบรรทัดทีละมากขึ้นหรือน้อยลงโดยไม่ต้องนำมันในรูปแบบทันที ในระหว่าง.