首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java项目的流浪者:应该在VM上编译还是在主机上编译?

Java项目的流浪者:应该在VM上编译还是在主机上编译?
EN

Stack Overflow用户
提问于 2013-07-13 07:21:51
回答 2查看 22.1K关注 0票数 95

这里有一个问题:当将Vagrant用于Java项目(或任何与此相关的编译语言项目)时,应该在VM中编译还是在主机上编译?另外,您希望IDE和所有开发工具也从VM内部运行,还是在主机上运行?

Java IDE和编译/部署过程与Vagrant VM的工作方式似乎完全相同( not very well defined )。一般来说,我的印象是代码是在主机上编辑的,并在VM上运行,这对于非编译语言非常有效。Other answers on Stackoverflow暗示,由于额外的编译步骤,Vagrant对编译语言的用处较小,但我仍然想看看还能做些什么。

有些事情我已经想过了:

为什么要在虚拟机上编译

  • 如果在主机上编译,则java是安装
  • 的又一个软件如果在主机上编译,则必须手动使主机上的java版本与VM
  • 上的版本保持最新主机上相应的java版本可能不可用(例如,在Mac上)

为什么在虚拟机上安装IDE

  • 环境与集成开发环境之间的紧密集成,可以使用快捷方式为java应用程序运行application
  • can连接调试器,而无需远程调试(单步运行/调试)

为什么要在主机上编译

  • 更快的编译时间
  • 希望使虚拟机尽可能接近生产环境

为什么在主机上安装IDE

  • 这是在主机上编辑代码并在虚拟机上运行代码的随意约定
  • 更好的UI性能(X转发和VNC很慢)

您的想法是:我应该从虚拟机还是主机内部运行IDE?我应该从虚拟机内部还是主机内部进行编译?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-26 17:41:42

经过深思熟虑和试验,我决定在哪里使用Vagrant,以及它如何与Java开发工作流集成。

对于JavaEE /部署的应用程序,配置web服务器和数据库服务器绝对是“足够”复杂的事情,足以保证使用Vagrant。有了两个服务器和无数的配置方法,配置很容易从一个开发人员到另一个开发人员不同步,从而导致“在我的机器上工作”综合症。对于这类软件,最好是在主机上编辑和编译代码,并部署到模拟您的生产环境的Vagrant VM。web服务器的部署文件夹甚至可以符号链接到主机上的编译目标,从而无需手动重新部署。所以Vagrant可能是你开发生命周期的一个重要部分,但是从主机上编码/编译/部署并使用Java在VM上运行的周期时间会比我们看到的PHP/Ruby/Node/等在主机上代码并在VM上运行的周期要长。

对于独立的Java应用程序(如库或桌面应用程序),情况略有不同。在这种情况下,最有意义的做法是在主机上编辑、编译和运行,完全避免使用Vagrant。如果您正在使用一个大型的Java IDE (Eclipse、Netbeans、IntelliJ...),那么您已经在机器上安装了Java。在这一点上,与使用Vagrant的开销相比,这几乎没有什么好处,只是在开发过程中增加了一层额外的复杂性。这是因为当您能够使用IDE编辑Java时,您无论如何都能够在主机上运行所有内容。一个问题是,项目所需的Java版本可能与主机上运行的IDE的版本不匹配。总的来说(希望如此)这不是什么大问题;在写这篇文章的时候,JDK6已经结束了生命周期,JDK8还没有发布(猜猜这给我们留下了什么)。但是,如果您确实需要运行多个版本,您应该能够根据需要在主机上设置JAVA_HOME。虽然这确实引入了额外的复杂性,但它比仅仅为了使用不同版本的Java来处理项目而维护Vagrant运行时的复杂性要低。

有趣的问题是如何处理无容器的web应用程序。web服务器(在这种情况下是在应用程序内部)是否应该像我们对外部web服务器所做的那样在VM内部运行?或者像我们对独立应用程序所做的那样在主机上运行?对于无容器web应用程序,不需要担心外部web服务器,但仍然可能有一个数据库。在这种情况下,我们可以采取混合方法。运行无容器web应用程序本质上与运行独立应用程序相同,因此在主机上编译和运行代码将是有效的。但是,对于涉及到的数据库,仍然存在足够的复杂性和配置,因此将数据库服务器放在其自己的Vagrant VM上是有意义的。

希望这能为对Vagrant感兴趣的Java开发人员提供一些关于如何使用它的上下文。

票数 62
EN

Stack Overflow用户

发布于 2016-02-08 17:21:24

去年我对这个话题很感兴趣:)

我的解决方案是让一台可配置标志的流浪者机器。例如,该标志之一启用桌面gui,因为一些开发者更喜欢在主机上编码,而其他开发者更喜欢在其中具有桌面和IDE的更集成的环境。

面对桌面运行缓慢,你应该安装一个非常有用的流浪插件(是的……vagrant拥有极大地改善开发环境的插件)以这种方式: vagrant plugin install vagrant-vbguest这个插件将在每个来宾上安装virtual box guest make,以使其在使用virtualbox接口时可用。然后,要启用gui,请以这种方式编辑Vagrantfile:

config.vm.provider "virtualbox“do |vb| vb.gui = true end

为了提高共享文件夹的性能,我建议使用rsync: config.vm.synced_folder "./git","/home/vagrant/git",键入:"rsync",rsync__exclude:".git/“,这样源代码就可以在主机上编辑,然后再同步到来宾系统。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17625421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档