Linux上Java开发的常见实践是什么?

时间:2011-03-16 14:35:46

标签: java linux eclipse tomcat jetty

我正在尝试从Windows迁移到Linux作为Java开发平台,尽管转换通常非常轻松,但我还是有一些不确定因素,我希望得到一些反馈。我正在运行openSUSE 11.4,但我很乐意听到其他发行版的功能。

  1. 你从哪里安装你的JDK?这个令人惊讶的不像大多数人那样切割和干燥。 OpenJDk 6可在openSUSE存储库中使用,并且非常易于安装。但它现在更新21,现在Oracle版本处于更新24.我习惯于在Windows中发出一点警告,通知我我的Java需要更新,但这似乎不是Linux的常态。 Java开发人员是否在其包管理器中放弃了JDK并直接安装二进制文件?或者还有另一种方式吗?
  2. 你在哪里安装Eclipse?在网上似乎有一个普遍的协议,只需下载二进制文件并将其解压缩到某个地方就可以最好地安装Eclipse,但是通常的地方我会提取类似的程序Eclipse还是Ant?我看过/ usr / local和/ opt在线投票,但没有明确答案。
  3. 你把你的Jetty / Tomcat放在哪里?类似于eclipse问题,大多数Linux Java开发人员把Jetty / Tomcat /其他容器放在哪里。
  4. 设置开发与生产的方式有什么区别至少看来我不想以root身份运行我的servlet容器,这对我来说很有意义。但是我应该注意哪些其他做法?还有什么能让我的开发环境更容易,但可能不那么安全吗?
  5. 我发现this question类似但最终过于高级,并没有详细了解实际开发人员如何设置他们的环境。如果您有其他资源可以回答这些问题,请在此处分享。

    感谢您的时间。

6 个答案:

答案 0 :(得分:7)

Q> 您从哪里安装JDK?
A> 我从不打扰来自Sun / Oracle以外的其他JDK,主要是因为我们的产品仅经过认证可与Sun / Oracle JRE配合使用。在我的桌面上,我运行Kubuntu,但我从不使用apt-get,但总是手动下载它们。原因:

  • 发行版维护人员很少急于升级软件包,因为他们主要关心的是使依赖应用程序(如OpenOffice)工作。如果JDK从1.6.0_20更改为1.6.0_21,他们根本不在乎。我可能会这样做,因为较新的补丁可能有一个重要的错误修正或我只是想尝试我的应用程序仍然通过所有单元测试。
  • 保留旧的JDK版本可能是一场噩梦。我们仍然支持我们产品的旧版本,如果我升级到更新的Kubuntu,我不能保证一些古老的JDK仍然可以作为一个包提供。
  • 我不确定某些发行版甚至支持在同一台机器上存在多个JDK。

我的偏好是将所有JDK / JRE保留在/opt中并对最新的或最需要的那个进行符号链接。我根本不明白为什么手动安装JDK是个问题。

我还将PATH设置为最新的JDK / JRE。

同样的事情(和类似的论点)适用于AntMaven

Q> 您在哪里安装Eclipse?
A> 我使用IntelliJ,但同样适用。我将IDE存储在我的主文件夹中。这允许我拥有它的不同版本,更新它们而不需要sudo等。我也可以在/opt安装它但我想我在下载和测试最新的IntelliJ IDEA时有这个习惯每周都有EAP,因此我可以快速删除旧版本,并且不会污染/opt。最后,其他程序可能需要Ant / Maven / JDK,但只有我使用IntelliJ因此采用不同的方法。

Q> 你把Jetty / Tomcat放在哪里? A> 我在tomcats下有一个单独的文件夹/home,我有~10个不同的Tomcat实例。每个Tomcats都用于我的应用程序的不同版本(我们将Tomcat与我们的应用程序捆绑在一起)。这是必要的,因为我们的应用程序的一个部署可以具有不同的Tomcat设置(甚至版本)。

Q> 设置开发方式与生产方式之间存在哪些差异? A> 这在很大程度上取决于您的应用。例如,我们需要一些分区具有较低的访问延迟但具有较小的空间(例如Lucene索引的千兆字节)VS其他分区可能具有较高的延迟但需要更多空间(例如,内容存储库的太字节数)。但是,我们设计了我们的应用程序,以便所有这些不同的方面可以驻留在可配置的不同分区上。某些分区需要有特殊限制(例如文件上载),因此不会溢出其他分区。对于这个问题,没有简单的一对一解答,但显然大多数这些问题对于开发环境来说并不重要。

答案 1 :(得分:3)

  

您从哪里安装JDK?

我自己使用Arch Linux,我们在存储库本身有oracle jdk / jre。因此,如果它有oracle jdk / jre,请使用你的发行版存储库从oracle本身获取它。

  

你在哪里安装Eclipse?

同样,上述相同的答案也适用于此。但是,如果发行版提供的版本有任何问题,我总是把我的自定义安装放在/ opt / - / opt / java,/ opt / eclipse,/ opt / netbeans等等。我不在我的主文件夹中安装东西(除非在我没有其他任何地方的许可的情况下 - 罕见),因为这意味着其他用户需要访问我的主文件夹来运行这些东西。我不希望生产(或开发那种)直接进入我家的东西。

  

你把Jetty / Tomcat放在哪里?

同样的答案也适用于此。只有在我安装了多个版本的情况下,我才会创建一个/ opt / experimental /并安装在那里,以便我知道我的生产正在运行哪一个以及在不再需要时我可以删除哪一个。

  

有什么不同之处   在您设置开发的方式之间   与生产相比?

如果可能的话,我总是为生产和开发工作设置不同的机器。不同的计算机,但完全相同的设置。可以将代码推送到生产系统的唯一系统是开发组中的系统。如果不能进行这种隔离,我宁愿为服务器安装不同的服务器,这样当我调整开发配置时,我的主服务器不会崩溃或出现问题。此外,开发设置通常还包括一个clean_up脚本,可以为生产做好准备(为db帐户删除不必要的权限,清理等等。

有任何设置,只需确保您有不同的数据库设置用于开发和生产目的。

答案 2 :(得分:2)

用于openSUSE的Sun版Java是在非磁盘(go here and scroll down for an ISO)上,这是一个额外的磁盘映像,不是主安装磁盘ISO的一部分(或者您可以从{{3}中提取RPM })。

就eclipse而言,如果我在系统级安装,我倾向于将其放入/ opt。您可能希望阅读有关如何最好地处理插件的here

(不要让他们引导你离开openSUSE,它是KDE IMO最好的发行版。)

答案 3 :(得分:1)

使用linux并不是那么容易拿着你正在使用的windows环境。如果我是你,我会将发行版转换为RedHat或Ubuntu,我用它来使用SUSE,因为我切换后再也不回头了。

您可以将JDK / Eclipse / Tomcat二进制文件放在几个不同的位置。如果你是唯一一个使用它们的人,我建议你把它们放在你家的目录里。对于Eclipse / Tomcat的东西,您可以将它们放在本地bin中,然后将该本地bin添加到.bashrc中的PATH中。您还可以在bash中将JDK的位置设置为JAVA_HOME env变量。如果您需要任何更具体的设置帮助,请告诉我。

答案 4 :(得分:1)

1)我们在OpenJDK(bug等)方面遇到了一些问题,所以我们总是使用sun jdk。

2/3)在Linux中生活的好习惯是,始终在您的主文件夹下安装自定义软件。 Linux需要不时重新安装,但是您的主文件夹中的所有内容都位于单独的磁盘分区中,因此它仍然存在。我总是安装/解压缩自定义软件,如eclipse到/ home / myuser / opt,所以我的eclipse住在〜/ opt / eclipse。我还将eclipse-binary符号链接到我的/ home / myuser / bin文件夹以便于访问。当我升级或更改任何软件时,我只需重新连接符号链接。

4)生产和开发环境应尽可能接近相同。由于不同的配置等导致的错误负载。

答案 5 :(得分:0)

我创建一个/ usr / local / java目录并解压缩JDK(s),Eclipse,Maven,Ant,Groovy和Grails,然后创建符号链接到/ usr / local / bin。