Java是否有类似VirtualEnv的工具?
有没有类似于Python中virtualenv的东西,适用于Java或其他JVM语言?
8 个回答
5
是的(可以查看 http://www.jenv.be/),就像很多其他编程语言一样,比如 Ruby、Python、Go、R、Php 等等。
7
像Ant、Maven和Gradle这样的构建工具,跟Python里的pip
或easy_install
最相似。
在Java中,类似于虚拟环境(virtualenv)的概念是通过类路径(classpath)来实现的。所以其实在Java里并不真的需要虚拟环境。
49
根据我的理解,virtualenv可以让你有独立的库安装路径,实际上就是让你拥有多个“虚拟”的Python安装环境。
Java没有“系统范围安装”的库这个概念:它总是会在类路径中查找要加载的库。因为类路径可以(而且需要!)为每个应用程序单独定义,所以每个应用程序可以选择自己想要加载的库和版本。
如果你深入一点,假设有一个应用程序需要同时使用同一个库的两个不同版本,你也可以通过一些类路径的小技巧来实现。虽然这可能会变得复杂,但确实是可行的(OSGi就是一个支持这种情况的例子,甚至Tomcat在有两个独立的Web应用时也会这样做)。
我在virtualenv的描述中看到了一些关于安全性的提及:Java内置了一个相当全面的安全系统。在服务器应用中,这个安全系统通常会被关闭,因为这样配置起来更简单,但你可以很容易地设置Java应用程序被允许做什么。
(*) 几乎是这样,确实有一些扩展或扩展库,但它们使用得不多,甚至那些也可以很容易地从任意目录加载。