据我了解,virtualenv使您能够拥有单独的库安装路径,从而有效地分离“虚拟” Python安装。
Java没有“系统范围内已安装”库(*)的概念:它总是在类路径中搜索要加载的库。由于可以为每个应用程序定义类路径(并且需要将其定义!),因此每个应用程序都可以选择要加载的库和版本。
如果您更深入地了解一个单一的应用程序,而该应用程序某种程度上需要同时使用同一库的两个不同版本,那么您甚至可以通过一些类路径技巧来做到这一点。它可能会变得复杂,但是绝对有可能(OSGi是支持此示例的一个示例,即使具有两个单独Web应用程序的Tomcat都可以做到这一点)。
我在virtualenv描述中看到了一些关于安全性的引用:Java内置了一个相当完善的安全性系统。在服务器应用程序中,它经常被关闭,因为这样配置起来更容易,但是您可以轻松地配置Java应用程序的确切含义。允许这样做。
(*)几乎有扩展或扩展库,但是它们使用不多,甚至可以很容易地从任意目录中加载它们。