【问题标题】:How to create my own java library(API)?如何创建自己的 java 库(API)?
【发布时间】:2011-04-06 11:15:00
【问题描述】:

我在 Java 中创建了一个程序,并对其进行了设计,以便我希望它们出现在 main 中的方法(getter 方法),我可以在启动包含这些方法的类后轻松调用它们。

问题是,我需要让这个应用程序(包含 getter 方法)像一个 API,以便我可以让我的应用程序让开发人员在需要时使用我的函数(getter 方法),并且他们只需要添加这个文件(我认为完成后的 API 显示为 .jar 文件)。

我怎样才能使我的代码可以在其他应用程序中重复使用?我认为它类似于 .dll。

非常感谢;)

【问题讨论】:

  • 你想隐藏实现吗?
  • 这些答案都不令人满意——如果有一个带有一些 bash 脚本的骨架项目/存储库,我们可以使用这些脚本来构建和发布 lib,那就太好了

标签: java jar


【解决方案1】:

创建一个 JAR。然后包括 JAR。该 JAR 中的任何类都将可用。如果您要提供 API,请确保保护您的代码。不要向最终用户公开任何不应使用的方法/属性。

编辑:针对您的评论,请确保在打包 JAR 时不包含源代码。只包含类文件。这是你能做到的最好的。

【讨论】:

  • 如何保护我的代码不被窃取??我知道的是,你可以很容易地获得jar文件的源代码......那么,有没有办法让被盗变得困难??
  • 你真的不能。不包括源代码,只包括编译后的代码(正如其他人所说),但这并不能阻止坚定的人使用反编译器等。
  • 您可以使用代码混淆器来保护您的代码不被盗。 en.wikipedia.org/wiki/Obfuscation_(software)
  • @Accipheran 您可以使用混淆器。然而,这样做只会让代码更难理解。混淆不是单向街道。任何有足够动力和/或正确工具的人仍然可以“窃取”您的代码。
  • @ZackMarrapese 可能是这样,但这不在 OP 试图完成的范围之内,所以我认为它值得一提。
【解决方案2】:

要用作 API,您的类应该:

  • 使用唯一的包(最好遵循约定,即您拥有的域的反面作为前缀)。这样可以防止命名冲突
  • 只有那些打算被其他人使用的类和方法publicprotected。这使其更易于使用。
  • 拥有大量的 Javadoc cmets。
  • 以 JAR 文件的形式提供 - 理想情况下,将 JAR 用于二进制分发、源代码和 javadoc 文件。

【讨论】:

    【解决方案3】:

    您需要将应用程序打包为 jar 文件。您可以使用 ant jar 任务来创建 jar 文件,也可以使用 jar 命令。

    对于 ant 任务,请查看link

    要手动创建它,请查看link

    【讨论】:

    • 这两种方法在我看来是连线的......我可以从哪里编写创建 jar 文件的代码??是从命令行吗??因为他们没有指定!如果我使用 Eclipse 生成 jar 文件有问题吗?它给出相同的结果吗?这种方式的安全性是否存在问题(Eclipse)......非常感谢
    • ant 任务是 build.xml 的一部分。但是,您也可以以编程方式调用 ant 任务。第二个链接(手动链接)是通过命令行完成的。您也可以从 Eclipse 生成 jar 文件,但我建议使用 build.xml,因为它有助于使您的应用程序更易于部署。
    • 除了这里列出的方法之外,您当然可以从选择的 Eclipse/IDE 将您的类导出为 JAR,是的。
    • @CoolBeans 第二个链接不起作用
    【解决方案4】:

    确保为所有公共和受保护的类和方法编写和发布 javadocs。

    【讨论】:

    • 是的...我这样做是为了我的方法...对于我和将使用 API 的人来说。Javadocs 很好,但是有没有更好的方法来组织文件以html格式生成。因为,许多文件是与(索引)一起生成的......我希望有一种方法可以组织它并使其专业;)
    • @Q8Y - Javadoc 是专业的。 Sun/Oracle 将它用于 Java 库文档以及大多数第三方库提供程序。我几乎可以在这里命名任何人,但有几个例子是 Spring Framework (static.springsource.org/spring/docs/3.0.x/javadoc-api) 或 Apache Commons (IO - commons.apache.org/io/api-release/index.html)
    • 定义为“更好”。此外,javadoc 是记录 java API 的事实标准。
    【解决方案5】:

    创建 jar:

    jar cf <jar_name> <sources>
    

    【讨论】:

      【解决方案6】:

      您可以通过多种方式公开您的代码。创建一个 jar 并进行分发可能是最简单的,因为其他开发人员只需要包含您的 jar。但是,如果您谈论的是“任何人”访问您的代码,那么 Web 服务可能更有意义,因为您可以在不提供所有必要代码的情况下提供对数据的访问。您提到提供对您的 getter 的访问 - 如果您只是创建一个具有 getter 的类,其他开发人员可以使用它们,但它们将如何填充?如果您的应用程序是自包含的,因为它获取必要的数据并提供 getter,那应该可以工作,但是如果您正在谈论从正在运行的应用程序中提供对数据的访问,那么 Web 服务更有意义,因为您的应用程序可以检索数据并通过可公开访问的方法提供访问权限。

      您很可能还想创建接口,以便开发人员可以针对该接口编写代码,并且您可以更改内部工作方式而不影响它们。任何将被其他人使用的 API 也应该被广泛记录。

      【讨论】:

        【解决方案7】:

        嗯,取决于您的 IDE。我使用 Netbeans,所以我只是点击构建项目,然后中提琴!在我指定的目录中创建一个 jar 文件。现在,这只是为了编译。任何人只需下载您的 .jar 文件,如果在 Netbeans 中,右键单击库,添加 jar/文件夹,然后选择下载的文件。

        【讨论】:

          【解决方案8】:

          你也可以考虑:

          • 包括一些演示如何使用库的示例
          • 使用 Apache Maven 构建您的 jar
          • 将您的 jar 放入公共 maven 存储库中
          • 在发现/修复错误时发布新版本的库
          • 如果你想隐藏你的实现,你可以用混淆来打包你的jar,这样如果有人反编译你的类,代码将难以阅读

          【讨论】:

            猜你喜欢
            • 2012-03-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-07-03
            • 1970-01-01
            相关资源
            最近更新 更多