Review/comment needed for the new public java.util.Base64 class

Weijun Wang weijun.wang at oracle.com
Thu Oct 11 01:51:25 UTC 2012


Several questions:

1. In encode0(byte[] src, byte[] dst)

  281                 if (linepos == linemax && (atom != 0 || sp < sl)) {

Maybe atom != 0 is not necessary?

2. Is it necessary to explicitly mention in the spec that there is no 
CrLf at the end of a MIME encoded string?

3. The test confirms decoding can correctly reverse the encoding but it 
says nothing about the correctness of the encoding. Maybe we can just 
use "10.  Test Vectors" of RFC 4648?

Thanks
Max

On 10/11/2012 01:54 AM, Xueming Shen wrote:
>
> A standard/public API for Base64 encoding and decoding has been long
> overdue. JDK8  has a JEP [1] for this particular request.
>
> Here is the draft proposal to add a public Base64 utility class for JDK8.
>
> http://cr.openjdk.java.net/~sherman/4235519/webrev
>
> This class basically provides 4 variants of Base64 encoding scheme,
>
> (1) the default RFC 4648, which uses standard mapping, no line breaks,
> (2) the URL-safe RFE 4648, no line breaks, use "-" and "_" to replace
> "+" and
>      "/" for the mapping
> (3) the default MIME style, as in RFC 2045 (and its earlier versions),
> which uses
>      "standard" base64 mapping, a 76 characters per line limit and uses
> crlf pair
>       \r\n for line break.
> (4) an extend-able MIME base64, with the char-per-line and the line
> separator(s)
>       specified by developer.
>
> The encoder/decoder now provides encoding and decoding for byte[], String,
> ByteBuffer and a pair of "EncoderInputStream" and "DecoderOutputStrream",
> which we believe/hope should satisfy most of the common use cases.
> Additional
> method(s) can be added if strongly desired.
>
> We tried couple slightly different styles of design for such this
> "simple" utility
> class [2].  We kinda concluded that the version proposed probably provides
> the best balance among readability, usability and extensibility.
>
> Please help review and comment on the API and implementation.
>
> Thanks!
> -Sherman
>
> [1] http://openjdk.java.net/jeps/135
> [2] http://cr.openjdk.java.net/~sherman/base64/



More information about the core-libs-dev mailing list