【问题标题】:What are the Common Practices for Java Development on Linux?Linux 上 Java 开发的常见做法是什么?
【发布时间】:2011-07-16 15:46:09
【问题描述】:

我正在尝试从 Windows 迁移到作为 Java 开发平台的 Linux,虽然迁移通常很轻松,但我希望得到一些反馈,但仍存在一些不确定性。我正在运行 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 容器,这对我来说是有意义的。但是我应该注意哪些其他做法?还有什么可以让我的开发环境更轻松,但可能不那么安全的方法吗?

我发现this question 很相似,但最终级别太高,并且没有详细说明实际开发人员如何设置他们的环境。如果您觉得有其他资源可以回答这些问题,请在此处分享。

感谢您的宝贵时间。

【问题讨论】:

  • 你必须坚持使用 suse 吗?在 Debian / Ubuntu / LinuxMint 中,所有这些下载/安装内容都可以在一个简单的命令行中完成。
  • 我对 openSUSE 的投入并不大,但它是我通过 Mono 对 Linux 的介绍。我认为我的偏好是坚持使用使用 rpm 的发行版,但我很想了解更多关于 Debian 的信息。我不想问“我应该使用哪个 linux 发行版?”因为这些似乎被从未真正做过任何开发的人演变成一场火焰战争。 stackoverflow.com/questions/161697/… 似乎深受其害。
  • 在 Fedora 上也可以这样安装 yum install java-devel

标签: java linux eclipse tomcat jetty


【解决方案1】:

您从哪里安装 JDK?

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

你在哪里安装 Eclipse?

同样,与上述相同的答案也适用于此。但是,如果发行版提供的版本有任何问题,我总是将我的自定义安装放在 /opt/ - /opt/java、/opt/eclipse、/opt/netbeans - 等中。我不在我的主文件夹中安装东西(除非我在其他任何地方都没有权限 - 很少见),因为这意味着其他用户需要访问我的主文件夹才能运行这些东西。我不希望生产(或开发)的东西可以直接访问我的家。

您将 Jetty/Tomcat 放在哪里?

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

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

如果可能,我总是为生产和开发工作设置不同的机器。不同的计算机,但完全相同的设置。唯一可以将代码推送到生产系统的系统是开发组中的系统。如果这种隔离是不可能的,我更喜欢为服务器安装不同的安装,这样当我调整开发配置时,我的主服务器不会崩溃或其他什么。此外,开发设置通常会包括一个 clean_up 脚本,使其为生产做好准备(删除数据库帐户的不必要特权​​、清理等。

随心所欲地进行设置,只要确保为开发和生产目的设置不同的数据库即可。

【讨论】:

    【解决方案2】:

    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>我在 /home 下有一个单独的文件夹 tomcats 我有 ~10不同的Tomcat实例。每个 Tomcat 都用于我的应用程序的不同版本(我们将 Tomcat 与我们的应用程序捆绑在一起)。这是必要的,因为我们的应用程序的一个部署可以具有与另一个不同的 Tomcat 设置(甚至版本)。

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

    【讨论】:

      【解决方案3】:

      用于 openSUSE 的 Sun 版本的 Java 位于非 OSS 磁盘 (go here and scroll down for an ISO) 上,这是一个附加磁盘映像,不是主安装磁盘 ISO 的一部分(或者您可以从 here 提取 RPM)。

      就 eclipse 而言,如果我在系统级别进行安装,我倾向于将它放在 /opt 中。您可能想阅读this article,了解如何最好地处理插件。

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

      【讨论】:

      • YaST 对于一般更新可能值得一提。
      【解决方案4】:

      1) 我们在使用 OpenJDK 时遇到了几个问题(bug 等),所以我们总是使用 sun jdk。

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

      4) 生产和开发环境应尽可能接近相同。这消除了由不同配置等引起的大量错误。

      【讨论】:

      • 1) 谢谢,我会考虑迁移到 sun/oracle JDK。我的印象是 openJDK 是 Sun 的 Linux JDK。你是直接安装二进制文件还是依赖包管理器? 2) 有道理,我犹豫要不要走这条路,因为感觉就像在 Windows 思维方式中将 Office 安装到我的文档。
      • 我使用的是 sunkjdk,但在 ubuntu/kubuntu10 中找不到 oracle jdk?至少通过包管理器。
      • 嗯,Linux 不必时不时地重新安装。您的磁盘分区方式取决于您。
      • “Linux 需要不时重新安装” - 请问您是基于什么理由发表这种说法的?现在,如果一个人在没有太多照顾的情况下玩耍,那么它就完全不同了。 IMO 最好在 /usr/local/ 或 /opt 中安装东西,因为如果您出于任何原因重新安装,很有可能由于底层依赖关系,您也必须重新安装/重新编译您的自定义软件。
      【解决方案5】:

      与您使用的 windows 环境相比,使用 linux 的手要少得多。如果我是你,我会切换发行版到 RedHat 或 Ubuntu,我曾经使用 SUSE,自从切换后就再也没有回头。

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

      【讨论】:

        【解决方案6】:

        我创建一个 /usr/local/java 目录并在其中解压缩 JDK、Eclipse、Maven、Ant、Groovy 和 Grails,然后创建指向 /usr/local/bin 的符号链接。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-03-24
          • 2010-10-16
          • 2011-11-13
          • 2020-05-07
          • 2010-12-01
          相关资源
          最近更新 更多