Following up on the Scala/.Net experiments, I took the interfaces for hashes and cyphers from my Java port; and replaced them in the Java world with a set of Scala traits, like:
trait MDA { def update(data:Array[byte], offset:int, length:int): unit def update(data:byte) : unit def digest() : Array[byte] }
and it builds happily (though NetBeans 6.5 nightly complains it can't find the interface definition from the library in the code view).
Over to Visual Studio, with a suitable script to build the equivalent .dll -- and the implementing classes in J# fail to build because the Array[byte]
maps to ubyte[]
while a J# byte[]
is an sbyte[]
, and so the J# compilation fails to match the signature of the Scala.Net trait -- and there's no Java ubyte
type I can force everything to. And as byte arrays -- or at least bytes -- are the fundamental building block for streams, it looks like all the Java code has to get the elbow.