-1

我想在java中使用base64,经过google,我发现很多库都提供了自己的base64 util,例如hadoop,apache codec,apache dbutil。而java没有,sun.misc中只有一个base64 util,它是sun(oracle)的供应商相关api。

为什么有这么多选择?

4

3 回答 3

3

使用 sun.* 总是一个坏主意,因为如果在任何其他 jvm 上运行您的代码将会中断(有 ibm 和其他没有任何 sun.* 类的 jvm)。

大多数自行开发的库都这样做是因为他们不想产生依赖关系,并且因为 base64 编码并不难做到。

只需选择一个外部库(最好是最小的,依赖最少的)并使用它。我个人会采用apache commons codec,因为 base64 是库的主要目的之一,而不是去其他一些旨在做完全不同的事情并且恰好有 base64 的库

于 2013-07-23T03:07:57.630 回答
0

那么我应该选择哪一个呢?

最适合您要求的一种。(或者您的代码已经依赖的库提供的库。)除此之外,这主要是(主观)偏好问题。

但不要使用“sun.misc”,因为它可以更改或撤销,恕不另行通知。

为什么有这么多选择?

没有人负责协调进入 3rd 方库的内容。在没有协调员的情况下,存在重复工作和冗余实施的空间。这就是这里发生的事情。

如果 Sun 认为适合创建一个公共 base64 API ......很多年前......我们很可能都在使用它。但他们没有。

但这并不重要。

于 2013-07-23T03:24:29.810 回答
0

为什么会有这么多 Base64 实现?

主要是因为 base64 实现不难编写,并且可以轻松避免代码中的额外依赖。也就是说,如果您已经在使用可以进行 base64 编码的库,那么使用库版本是有意义的。

我很幸运使用Google Guava库进行 base 64 编码。它们不仅简洁、快速和广泛使用,而且还经过了很好的测试。做base64编码和解码的API简洁易读:

BaseEncoding.base64().encode("foo");

强烈推荐!

于 2013-07-23T03:39:16.663 回答