Updated Delta+BOHE Impl in Java

James M Snell <jasnell@gmail.com> Tue, 09 April 2013 17:27 UTC

Return-Path: <ietf-http-wg-request@listhub.w3.org>
X-Original-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Delivered-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Received: from localhost (localhost []) by ietfa.amsl.com (Postfix) with ESMTP id C872321F85CE for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Tue, 9 Apr 2013 10:27:11 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -9.999
X-Spam-Status: No, score=-9.999 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, J_CHICKENPOX_54=0.6, RCVD_IN_DNSWL_HI=-8]
Received: from mail.ietf.org ([]) by localhost (ietfa.amsl.com []) (amavisd-new, port 10024) with ESMTP id nKe9fnZuw7uF for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Tue, 9 Apr 2013 10:27:11 -0700 (PDT)
Received: from frink.w3.org (frink.w3.org []) by ietfa.amsl.com (Postfix) with ESMTP id E267C21F859C for <httpbisa-archive-bis2Juki@lists.ietf.org>; Tue, 9 Apr 2013 10:27:07 -0700 (PDT)
Received: from lists by frink.w3.org with local (Exim 4.72) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1UPcIb-0007we-V2 for ietf-http-wg-dist@listhub.w3.org; Tue, 09 Apr 2013 17:25:37 +0000
Resent-Date: Tue, 09 Apr 2013 17:25:37 +0000
Resent-Message-Id: <E1UPcIb-0007we-V2@frink.w3.org>
Received: from maggie.w3.org ([]) by frink.w3.org with esmtp (Exim 4.72) (envelope-from <jasnell@gmail.com>) id 1UPcIV-0007up-Hr for ietf-http-wg@listhub.w3.org; Tue, 09 Apr 2013 17:25:31 +0000
Received: from mail-oa0-f47.google.com ([]) by maggie.w3.org with esmtps (TLS1.0:RSA_ARCFOUR_SHA1:16) (Exim 4.72) (envelope-from <jasnell@gmail.com>) id 1UPcIU-0000nG-GQ for ietf-http-wg@w3.org; Tue, 09 Apr 2013 17:25:31 +0000
Received: by mail-oa0-f47.google.com with SMTP id o17so7610644oag.6 for <ietf-http-wg@w3.org>; Tue, 09 Apr 2013 10:25:04 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:mime-version:from:date:message-id:subject:to :content-type; bh=9eVRoCwe0qKKsltZ4C/Fi7Ah+lkwi12Ua701xwaltsQ=; b=VTxt06rhIMWhK5HjnAHKRxCufFBCnwtNKdDa4TrCfM6O2lha0h2cA2V6jZkKOvvARt HzxtSJhm7QjYcxYtmoqL34dg0uOf/gM8PlRxCgWRVwrCLn090TpoLS8VUq00HNkNv62h qpq8E1g6ixAqH7hxrueraVBIF1TkfqiX2Y9PRBGWnVdafr+oqP3LgU5AVUUnCWZdSKk3 1/xKcwsXCe9BioRj7UjkmHeBWjNLjk6SpZkH/F3Ylch81i8DhHhcIB+dlz/3Tp9P5hqo qYGssZkexRqStXthRI+yiSCW3VgrxvlWzTWWBa3mx737+P2rMrkUrKbvjwTkQ5yJIOKs sQbA==
X-Received: by with SMTP id n10mr16038120oew.63.1365528304404; Tue, 09 Apr 2013 10:25:04 -0700 (PDT)
MIME-Version: 1.0
Received: by with HTTP; Tue, 9 Apr 2013 10:24:44 -0700 (PDT)
From: James M Snell <jasnell@gmail.com>
Date: Tue, 9 Apr 2013 10:24:44 -0700
Message-ID: <CABP7RbfE3+Zp0_=XkxuDQyLkoQMJP=qKisak-pXiLVcKi_f-+g@mail.gmail.com>
To: "ietf-http-wg@w3.org" <ietf-http-wg@w3.org>
Content-Type: text/plain; charset=UTF-8
Received-SPF: pass client-ip=; envelope-from=jasnell@gmail.com; helo=mail-oa0-f47.google.com
X-W3C-Hub-Spam-Status: No, score=-3.5
X-W3C-Hub-Spam-Report: AWL=-2.695, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001
X-W3C-Scan-Sig: maggie.w3.org 1UPcIU-0000nG-GQ b1ff752cdadcdb95b68a7979ef065380
X-Original-To: ietf-http-wg@w3.org
Subject: Updated Delta+BOHE Impl in Java
Archived-At: <http://www.w3.org/mid/CABP7RbfE3+Zp0_=XkxuDQyLkoQMJP=qKisak-pXiLVcKi_f-+g@mail.gmail.com>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/17208
X-Loop: ietf-http-wg@w3.org
Resent-Sender: ietf-http-wg-request@w3.org
Precedence: list
List-Id: <ietf-http-wg.w3.org>
List-Help: <http://www.w3.org/Mail/>
List-Post: <mailto:ietf-http-wg@w3.org>
List-Unsubscribe: <mailto:ietf-http-wg-request@w3.org?subject=unsubscribe>

I have updated my experimental Delta+Bohe java implementation to match
the current draft of the specification and Roberto's current delta
iteration. I still have to patch this in to the compression-test stuff
but the code is functional.


Requires maven to build. Dependencies are light. Still needs a ton of
work and I have not even started working on performance optimizations.
It's a pretty straight forward port of everything Roberto has done in
the python impl.

The one bit this does add is multi-type header values. The types
supported are String, Number, Datetime and Binary. Strings can be
either UTF-8 or ISO-8859-1. If they are ISO-8859-1, they can be
Huffman coded using Roberto's static code. I am using an different
static dictionary of predefined header values tho.

General takeaways ..

1. The implementation is not that difficult to do and seems to perform
reasonably well.
2. The additional types are very useful and add minimal additional
complexity to the implementation.
3. I'm generally not convinced that we really need the huffman coding.
Yes, it saves a handful of bytes here and there but it does add
additional complexity. I can live with it tho. If we keep it and we
decide to allow for UTF8 header values, then we need to come up with a
static huffman coding that includes the extended UTF8 character
4. Performance seems reasonable overall.

I'm going to be working on implementing HeaderDiff next. Hopefully
I'll have the time to have that done by this Friday.

- James