2010-08-31 28 views
46

我在Java中创建了一个程序,并且我设计了这个程序,以便我希望它们出现在主体中的方法(getter方法),在启动拥有这些方法的类后,我可以轻松调用它们。如何创建我自己的Java库(API)?

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

我该怎么做才能让我的代码可以与其他应用程序重用?这与.dll类似,我想。

非常感谢;)

+1

是否要隐藏实现? – stacker 2010-08-31 19:42:41

回答

42

创建一个JAR。然后包括JAR。该JAR中的任何类都将可用。只要确保你在发布API时保护你的代码。不要将任何方法/属性暴露给不应该使用的最终用户。

编辑:为了回应您的评论,请确保在打包JAR时不包含源代码。只包含类文件。这是你能做的最好的事情。

+1

如何保护我的代码不被窃取?我知道的是,你可以很容易地获得jar文件的源代码......那么,是否有办法让它很难被盗? – Q8Y 2010-08-31 20:34:22

+3

你不可能真的。不要包含源代码,只是编译的代码(正如其他人所说的),但这并不能阻止确定的人使用反编译器等。 – Ben 2010-09-01 12:50:00

+1

您可以使用代码混淆器来保护您的代码不被盗取。 http://en.wikipedia.org/wiki/Obfuscation_(software) – 2013-01-05 06:26:42

10

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

对于蚂蚁任务看看这个link

要创建它,请手动查看此link

+0

这两个方法看起来与我有线......从哪里可以编写用于创建jar文件的代码?它是从命令行?因为他们没有指定! 如果我使用Eclipse生成jar文件,是否有问题?它会给出相同的结果吗?用这种方法是否存在安全问题(Eclipse)... 非常感谢 – Q8Y 2010-08-31 20:41:51

+0

ant任务是build.xml的一部分。但是,您也可以通过编程方式调用ant任务。第二个链接(手动)通过命令行完成。您也可以从eclipse生成jar文件,但我会建议使用build.xml,因为它可以帮助您的应用程序更易于部署。 – CoolBeans 2010-08-31 21:01:47

+0

除了这里概述的方法之外,您当然也可以从选择的Eclipse/IDE中将您的类导出为JAR。 – Ben 2010-09-01 12:50:43

6

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

+0

Yah ...我为我的方法做了这些...对于我而言,那个人会使用API​​ .. Javadocs很好,但是有更好的方式来组织以html格式生成的文件。因为,许多文件与(索引)一起生成...我希望有一种方法来组织它,并使其专业;) – Q8Y 2010-08-31 20:46:59

+0

@ Q8Y - Javadoc是专业的。 Sun/Oracle将它用于Java库文档以及大多数第三方库提供程序。我几乎可以在这里命名任何人,但有几个例子是Spring Framework(http://static.springsource.org/spring/docs/3.0.x/javadoc-api/)或Apache Commons(IO-http:/ /commons.apache.org/io/api-release/index.html) – 2010-08-31 21:08:00

+0

定义为“更好”。另外javadoc是记录java API的实际标准。 – 2010-09-02 05:23:03

15

要可用作一个API,你的类应该:

  • 使用唯一的包(最好遵循惯例,即一个域名的反向您所拥有的前缀)。这可以防止命名冲突
  • 只有那些打算供他人使用的类和方法publicprotected。这使它更易于使用。
  • 有广泛的Javadoc评论。
  • 可作为JAR文件提供 - 理想情况下为二进制分发,源代码和javadoc文件分开JAR。
4

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

您很可能还想创建接口,因此开发人员可以根据接口编写代码,并且可以更改内部工作而不会影响它们。其他人使用的任何API都应该被广泛记录。

5

要创建的jar:

jar cf <jar_name> <sources> 
1

好,取决于你的IDE。我使用Netbeans,所以我只是打建立项目,中提琴!在我指定的目录中创建一个jar文件。现在,这只是编译。所有人需要做的就是下载你的.jar文件,如果在Netbeans中,右键单击库,添加jar /文件夹,然后选择下载的文件。

0

你也可以考虑:

  • 包含一些示例,演示如何使用图书馆
  • 使用Apache Maven构建你的罐子
  • 把你的罐子在公共Maven仓库
  • 发表一个当你发现/修复错误时你的库的新版本
  • 如果你想隐藏你的实现,你可以用混淆包装你的jar,这样如果有人反编译你的类,鳕鱼e将难以阅读