It sounds a lot like google protocol buffers, or one of the many java serialization frameworks. This "jam" thing may be better integrated into the urbit architecture, but without any portability/interop with other systems/languages.
Of course there's nothing stopping you from encoding or decoding anyone else's protocols in Urbit. Or vice versa. Actually, using bit functions on bigints is a fairly pleasant way of handling binary protocols.
There's also no particular problem in generating or decoding jammed nouns on non-Urbit systems. It's a binary encoding, but the decoder is a page of code. Perhaps jam:ASN.1 as JSON:SGML. :-)