vagrant对java / javaee开发人员有用吗?

时间:2013-02-15 22:41:06

标签: java virtual-machine vagrant

使用java / javaee时,通常的开发环境设置是在本地拥有一切(jdk安装,数据库,appserver等)。我知道ruby / js世界中有很多人使用虚拟机进行开发(主要是使用vagrant)。

我想知道是否有一种有效的方法来为java / javaee设置类似的env。 我怀疑我可以在这样的虚拟机上轻松地将数据库服务器和应用服务器与jdk版本一起安装,但是常规开发呢?我还需要在本地安装jdk,对吧? (我需要我的IDE才能正常工作)我需要maven来构建我的项目,所以我需要完整的maven本地回购。然后我需要在虚拟机的应用服务器上部署我的应用程序。

我在这里看不到真正的优势(两台机器上仍然有环境片段)。 你对此有什么经验并可以与我分享吗?

2 个答案:

答案 0 :(得分:21)

Vagrant基本上是一个用于设置VirtualBox虚拟机的工具。它为表格提供了快速配置VM的能力以及将配置配方传递给其他人的能力。

这在Ruby / JS社区中非常有用,因为它们没有编译步骤。我们使用它的方式是代码保留在我的本地机器上,所有运行时都在VM上完成。如果我在本地计算机上进行更改,则VM上正在运行的程序会立即获取更改,并且运行时将被修改,就像代码仅在VM上一样。我甚至不需要在我的计算机上安装Ruby / JS。

在Java / .Net世界中,您有一个编译步骤,因此您说您需要Java以及您需要在计算机上编译的所有jar。这减少了设置的一些有用性。

另一方面,您通常拥有与您合作的数据库,消息队列,容器等,在团队中,拍摄电子邮件并说您的数据库更新到此版本并加载新示例可能会很痛苦数据。在Vagrant中,只有一个人需要进行更新,然后他们可以告诉您获取新VM,而您不必自己进行任何升级步骤。

因此它在编译语言中仍然有用,但它没有脚本语言那么有用。

答案 1 :(得分:3)

从答案的角度来看,目前还不完全清楚你在寻找什么。

IMO虚拟机的价值不在于开发环境,而在于运行时环境。诸如消息/排队,服务器,数据库,云服务器(例如,Swift)等等。

这与语言无关。例如,我们有虚拟机(不是基于Vagrant的),包括Hadoop / HDFS / HBase,Swift,RabbitMQ和各种容器。

我们可能部署到这些机器,但开发工具在本地运行。 IMO没有理由在虚拟机上进行开发,虽然没有理由你无法,特别是如果你对Vim / Emacs /等感到满意的话。

我知道有一个用于Vagrant的Tomcat容器,虽然我没有使用它。