[公告] 欢迎来到高级语言虚拟机圈子
RednaxelaFX
2010-01-06
关注各种高级语言虚拟机(high-level language virtual machine,HLL VM)的设计与实现,泛化至各种高级语言的运行时的设计与实现,也会涉及动态编译、GC、动态语言的编译等话题。总之大方向是高级语言的语义的实现方式就对了 >_<
我会开一些帖子作为资料堆积用,例如书籍、论文、教程、文章及相关链接收集。请不要以讨论方式回复这些资料堆积帖,以便于保持资料的“整洁”;不过可以另外开对应的讨论帖放讨论。 也欢迎大家开讨论帖对HLL VM的话题热烈讨论。请大家告诉我你们都对HLL VM的什么方面感兴趣 ^_^ 也可以发娱乐帖,各种稀奇古怪的与HLL VM相关的代码之类的可以放在这个分类下。 需要圈子管理员权限的同学请PM我,有兴趣帮我一起收集和整理HLL VM相关资料那是最好不过了。 讨论范围包括但不限于: ●Java Virtual Machine - Oracle(Sun) HotSpot VM (OpenJDK: GPLv2+CE) -- Da Vinci Machine -- JSR 292 Backport -- UltraViolet™ Virtual Machine - Azul HotSpot VM - IBM J9 - Oracle JRockit - Apache Harmony (Apache License v2) - Jikes RVM (EPLv1) - Kaffe (GPL) - SableVM (LGPLv2.1) - Oracle(Sun) CLDC HotSpot Implementation (GPLv2) - Oracle(Sun) Project Monty virtual machine - PSPKVM (GPL) - Oracle(Sun) Squawk VM (GPLv2) - Oracle(Sun) JavaCard VM - Oracle(Sun) Maxine VM (GPLv2) - Oracle(Sun) Mackinac - Metacircular Research Platform (MRP) (Apache License, EPLv1, GPLv2+CE) - Moxie JVM (Apache License v2) - JamVM (GPL) (Sourceforge Project Page) - JamaicaVM - cacaovm (GPL) - Jelatine JVM (GPLv3) - NanoVM (GPL) - Open Mika (BSD) - Wonka VM - Aegis VM (LGPL) - joeq (GPL) - kissme (GPL) - VMKit (University of Illinois Open Source License) - Jupiter - K virtual machine - NSIcom CrE-ME - LaTTe (BSD) - Esmertec JBed - Symantec JIT - TowerJ DynaFlex - Microsoft Java Virtual Machine / jview - HP Chai VM - Oracle OJVM - Oracle JVM (考据中,不知道这个跟OJVM是什么关系) - Mozilla ElectricalFire (Netscape PL) - MachJ - JanosVM - Xam (GPLv3) - E-bunny - Jeode EVM - shuJIT - Inprise "javacomp" JIT - OpenJIT (BSD) - TYA - Open Runtime Platform (ORP) (Intel Open Source License) - Jaos - AromaVM - Sun Exact VM - Sun JavaInJava - IKVM.NET (custom BSD-like) - TinyVM (MPLv1) - Ovm (简介) (New BSD) - GCJ (GPL) - Excelsior JET - RoboVM (license) - JC Virtual Machine (LGPL) - MiniJavaVM - ArmJVM - Rava (Ruby License) - RUVA (Ruby License) - Japhar - Joker-vm (GPL) - Jato (GPLv2+LE) - Hornet (BSD) - Another Open JavaCard Virtual Machine (GPL) - Sun Spotless JVM - Nemesis JVM - nanokit - Aplix JBlend - Orto JVM - Avian (ISC License) Github链接 - JnJVM - Doppio (MIT License) Java on CoffeeScript - Mysaifu JVM - node-jvm - Fiji http://rtjava.blogspot.com/2011/07/fijivm-real-time-java-vm-overview.html ●Google Dalvik VM (Apache License v2) ●NestedVM (Apache License v2) ●Harissa ●DynamicJava (BSD) 这是个Java实现的Java源码解释器,而不是JVM规范定义的那类JVM ●FIJI ForthIsh Java Interpreter (GPL) ●Eve Virtual Machine ●Parrot VM (Artistic License 2.0) ●Common Language Infrastructure (CLI) - Common Language Runtime (CLR) (.NET Framework) open sourcing! - .NET Compact Framework - .NET Micro Framework (Apache License v2) - Mono (LGPL/GPL/X11) - DotGNU Portable .NET (GPL) - Shared Source Common Language Infrastructure (SSCLI) (Microsoft Shared Source Common Language Infrastructure license) - Open Runtime Platform (ORP) (Intel Open Source License) - StarJIT - ILDJIT (GPL) ●Dynamic Language Runtime (DLR) (Ms-PL) ●Dis Virtual Machine ●Python - Python (CPython) (PSFL) - PyPy (MIT) - Pyston (Apache License v2) - Jython (PSFLv2) - IronPython (Ms-PL) - Unladen Swallow (Apache License v2) - Pynie - Psyco (MIT) - Stackless Python (PSFL) - tinypy (MIT) - python-on-a-chip (p14p) (GPLv2) ●Ruby - Ruby 1.8.x (MRI) (Ruby License) - Ruby 1.9 (YARV) (Ruby License) - Rubinius (BSD) - MacRuby (Ruby License) - JRuby (CPL/GPL/LGPL) - IronRuby (Ms-PL) - MagLev (MIT) - Ruby Enterprise Edition - BlueRuby - The Ludicrous JIT Compiler (BSD) - XRuby (Apache License v2) - Cardinal - Ruby.NET (new BSD) - HotRuby (Ruby License) - tinyrb (Ruby License) - mirc ●JavaScript - Google V8 (new BSD) - Mozilla JägerMonkey/TraceMonkey/Tamarin/SpiderMonkey (MPL 1.1/GPL 2.0/LGPL 2.1) - Apple Nitro (SquirrelFish Extreme)/SquirrelFish/JavaScriptCore (LGPL) - KDE KJS (LGPLv2) - Opera Carakan - DMDScript - Managed JScript - JScript - JScript 9 "Chakra" - Narcissus - BESEN (OwnLicense+AGPLv3) - Jurassic (Ms-PL) - IronJS (Apache License v2) - lv5 - Tachyon - Ejscript (Embedthis Open Source Software License) - Qt v4 - MuscalietJS (mcjs): An Extensible Portable Layered JavaScript Engine ●ActionScript 3 - Adobe AVM2 - Lightspark - JITB ●Groovy (BSD) ●Perl - Perl - Pugs - Rakudo - MoarVM (Rakudo的新VM) - Tycho (by Matthew Wilson) ●PHP - PHP (PHP License v3.01) - HipHop VM (PHP and Zend License) - HippyVM (Github)(MIT License) - Phalanger (SS-PL) - Zend - Quercus ●Smalltalk - Smalltalk - GNU Smalltalk (GPL) - Squeak (SqL) http://www.squeakvm.org/index.html - GemStone/S - Pharo (MIT/Apache Lisence) - Strongtalk (new BSD) - Cog (MIT License) - Jtalk (MIT License) ●Self - Self - Klein Metacircular Virtual Machine Kit ●Newspeak (Apache License v2/SqL/MIT) ●Erlang (MPL) - BEAM - Erjang ●Prolog ●Mercury ●Pure ●BASIC ●COBOL ●Factor (BSD) ●Neko - Neko VM (LGPL) ●Potion (MIT) ●Forth ●Scheme - Ikarus (GPLv3) - WeScheme ●Common Lisp ●HLVM (BSD) ●Ela ●SQLite Virtual Database Engine 被称为“编译型语言”的解释器实现: ●C - Ch ●C++ - Cint 嗯……Haskell、OCaml之类的语言也是有解释器实现的,也算在内。 说来OCaml的解释器是direct-threaded的,这个肯定得拿来说说。在Forth社区以外确实讨论各种threaded技巧的氛围不怎么浓。 还有些有趣的语言也是用解释器实现的。Fortress也有解释器,有机会也要拿来挖掘挖掘。 常用作嵌入式脚本的: ●Lua - Lua (MIT) - LuaJIT (MIT/X) Terra http://terralang.org ●Squirrel (zlib/libpng) ●AngelScript (zlib) ●JewelScript (zlib/libpng) ●Monster Script 一些游戏引擎里的脚本引擎: ●吉里吉里2 - TJS2 (GPLv2) ●吉里吉里3 - Risse ●RealLive - RealLive - rlvm (GPLv3) - xclannad ●AliceSoft - System 3.x - System 4.x ●NScripter - NScripter - ONScripter ●YU-RIS ●Hot Soup Processor (HSP) ●Stuff スクリプトエンジン ●Wintermute Engine (WME) ●Unreal - UnrealScript ●Torque Game Engine - TorqueScript ●Z Machine 有些EL(表达式语言,expression language)的实现也可以拿来讨论: ●MVEL ●janino (New BSD) ●Unified Expression Language (JSR 245) - JUEL - Resin EL ●JSP 2.0 EL - Commons EL ●JEXL ●JEval ●SpEL ●OGNL ●IK Expression ●Aviator ●JSEL 一些模板引擎里其实也有树遍历式的解释器 ●Velocity (Apache License v2) 虽然自身不是HLL VM,但经常被用于HLL VM实现的: ●Low Level Virtual Machine (LLVM) (University of Illinois Open Source License) - llvm-py 年代久远的虚拟机: ●SECD 动态编译的先驱: ●Oberon 还有像Half-Life 2的SourceMod插件里也有JIT…SourcePawn? 看这里 http://www.bailopan.net/blog/?p=73 各种机器像是游戏机的模拟器里自然也有高效的编译器或者说binary translator的实现 ●Dolphin Emulator 一些JIT库: ●Xbyak (BSD) ●asmjit (MIT) ●jitasm (BSD) ●libjit (LGPLv2.1) - libjit-linear-scan-register-allocator (LGPL) 一些GC库: ●Boehm GC ●Qish (LGPL) 生成解释器的工具: ●Vmgen ●Generic Interpreter 下面这个有点离题,但非常强悍: ●Valgrind 虽然被许多人认为是内存访问的检查工具,但实际上是x86-to-x86的动态即时编译器,非常非常强…… |
|
Willam2004
2011-02-08
好多啊~
|
|
endiya
2011-09-26
好多好多都不知道...
|
|
wupuyuan
2013-05-07
发现这个帖子居然人气不旺啊,支持一下,另外这里的资料很全,值得学习。
现在在看Jikes RVM,是IBM的实验用虚拟机,非商用,仅仅实验各类的技术。 我觉得做得比较独特的地方是线程的锁机制。 RVM不是将 Java 线程直接映射到操作系统线程(但是最终还是需要的),而是在“虚拟处理器”上实现 Java 线程的复用。 虚处理器是基于一个操作系统线程实现的。每个虚处理器都记弽一个 CPU 核的标识,处理器的标识保存在一个与用的寄存器中。J9 为每一个 CPU 核创建一个虚处理器的本质是根据硬件 CPU 的核心数维护一组 OS 线程。这么做的优点是在同一个 JVM实例中,需要同步线程争抢的是 JVM 层的“虚处理器”资源,从而避免了操作系统层的资源争夺;相对而言,返举做的缺点就是维护返一组 OS 线程可能会造成浪费,不过对亍服务器级的应用来说可以忽略。但是Java 应用不其它程序之间在操作系统资源层的争夺依然不可避免。 |