Rhino的名字来源于O'Reilly关于JavaScript的书封面上的动物。

Rhino项目于1997年秋天在Netscape启动。当时,Netscape计划生产一个完全用Java编写的Navigator版本,因此它需要一个用Java编写的JavaScript的实现。当Netscape停止开发所谓的“Javagator”时,Rhino不知何故逃脱了斧头(有传言称高管们“忘记”了它的存在)。有一段时间,几家大公司(包括Sun)授权Rhino在他们的产品中使用,并向Netscape支付费用,允许Rhino的工作继续进行。现在Rhino是Mozilla开源存储库的一部分。

最初,Rhino编译所有JavaScript代码以在生成的类文件中Java字节码。这产生了最好的性能(当在JIT上运行时,通常会击败JavaScript的C实现),但有两个错误。首先,编译时间很长,因为生成Java字节码和加载生成的类是一个重量级的过程。此外,由于大多数JVM并没有真正收集未使用的类或由于加载类文件而被插入的字符串,因此实现实际上泄露了内存。

因此在1998年秋天,Rhino添加了一种解释模式。类文件生成代码被移动到一个可选的、动态加载的包中。编译速度更快,当脚本不再使用时,它们可以像任何其他Java对象一样被收集。

Rhino于1998年4月发布到mozilla.org。最初Rhino类文件生成被推迟发布。然而,Rhino的被许可人现在同意将所有Rhino发布到开源,包括类文件生成。自开源发布以来,Rhino发现了多种用途,并且越来越多的人为代码做出了贡献。