23

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

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

我在这里看不到真正的优势(两台机器上仍然有一些环境)。你有这方面的经验可以和我分享吗?

4

2 回答 2

22

Vagrant 基本上是一个设置 VirtualBox 虚拟机的工具。它带来了快速配置 VM 的能力以及将配置方案传递给其他人的能力。

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

在 Java/.Net 世界中,你有一个编译步骤,所以你说你需要 Java 和你需要在你的机器上编译的所有 jars。这减少了设置的一些有用性。

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

所以它在编译语言中仍然有用,但不如在脚本语言中有用。

于 2013-02-15T23:22:22.830 回答
2

就答案而言,您具体要寻找什么并不完全清楚。

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

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

我们可能会部署到这些机器上,但开发工具是在本地运行的。IMO 几乎没有理由在虚拟机上进行开发,尽管你没有理由不能这样做,特别是如果你对 Vim/Emacs/etc 感到满意的话。

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

于 2013-02-15T22:57:57.053 回答