为什么有这么多不同的base64实现?

时间:2013-07-23 03:01:52

标签: java base64

我想在java中使用base64,在google之后,我发现有这么多的库提供了自己的base64 util,例如hadoop,apache编解码器,apache dbutil。并且java没有,只有一个base64 util驻留在sun.misc中,它是与sun(oracle)的供应商相关的api。

为什么选择这么多?

3 个答案:

答案 0 :(得分:3)

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

大多数推出自己的库都是这样做的,因为他们不想产生依赖关系,因为base64编码不是很难做到的。

选择一个外部库(理想情况下是最小的,具有最少的依赖项)并使用它。我个人采取apache commons codec,因为base64是图书馆的主要目的之一,而不是去其他一些想要做一些完全不同的事情的图书馆,而恰好有了base64

答案 1 :(得分:0)

  

那么我应该选择哪一个?

最符合您要求的那个。 (或者你的代码所依赖的库所提供的那个。)除此之外,它主要是(主观)偏好的问题。

但不要使用“sun.misc”,因为它可以在没有任何通知的情况下更改或撤销。

  

为什么选择这么多?

没有人可以协调第三方图书馆的工作。在没有协调员的情况下,可以进行重复工作和冗余实施。这就是这里发生的事情。

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

但这并不重要。

答案 2 :(得分:0)

  

为什么有这么多Base64实现?

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

我对基本64位编码的Google Guava库运气很好。它们不仅简洁,快速且广泛使用,而且还经过了很好的测试。用于执行base64编码和解码的API简洁易读:

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

强烈推荐!