Vagrant对Java/JavaEE开发者有用吗?

23

在使用Java/JavaEE进行开发时,通常的开发环境设置是在本地拥有所有必需的组件(如JDK安装、数据库、应用服务器等)。我知道很多Ruby/JS领域的人会使用虚拟机进行开发(主要是使用Vagrant)。

我想知道是否有一种有效的方式来设置类似于Java/JavaEE的开发环境。我怀疑我可以在这样的虚拟机上轻松安装数据库服务器和应用服务器以及相应版本的JDK,但是对于常规开发,怎么做呢?我仍然需要在本地安装JDK,对吗?(我的IDE需要正常工作)我需要Maven来构建我的项目,因此我需要完整的Maven本地存储库。然后,我需要将我的应用程序部署到虚拟机的应用服务器上。

我看不到任何真正的优势(仍然在两台机器上拥有环境的部分)。你有这方面的经验可以跟我分享吗?


1
你可以编辑这个问题,让它变得可以重新打开,对吧?我正在研究在vagrant上使用Java,知道你的意思并且自己也有同样的问题。我仍然认为这很有用。 - Jason
2个回答

22

Vagrant基本上是用于设置VirtualBox虚拟机的工具。它能快速地提供一个虚拟机和将配置方案传递给其他人。

这在Ruby/JS社区中非常有用,因为他们没有编译步骤。我们使用的方式是代码保存在我的本地计算机上,而所有运行时都在VM上完成。如果我在本地电脑上进行更改,则VM上正在运行的程序立即捕捉到变化,运行时被修改就像只有代码存在于VM一样。我甚至不需要在计算机上安装Ruby/JS。

在Java/.Net世界中,你需要一个编译步骤,因此你需要在你的机器上安装Java和所有所需的jar包。这减少了该设置的某些有用性。

另一方面,通常你会使用数据库、消息队列、容器等,并且在团队中将其更新可能很麻烦。在Vagrant中,只需要一个人进行更新,然后他们可以告诉你获取新的VM,你不需要自己执行任何升级步骤。

因此,在编译语言中仍然有用,但比脚本语言中有用性较低。


2

在回答方面,你需要具体说明你所寻找的内容。

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

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

我们可能会将其部署到这些机器上,但开发工具是在本地运行的。我认为没有什么理由在虚拟机上进行开发,尽管如果您熟悉Vim/Emacs等编辑器,也可以这样做。

我知道有一个Tomcat容器适用于Vagrant,尽管我没有使用过。


我不是专家,但听起来你好像不知道 Vagrant 是什么。它不适用于生产环境:它完全是关于开发环境的。 - DavidS
@DavidS,听起来你误解了我的意思。我说的和其他答案一样,只是用了更少的词语:这不是关于开发(尤其是Java),而是关于应用程序所期望的运行时环境:消息传递、数据库、大数据、应用服务器等等。 - Dave Newton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接