Unsigned Primitives

Why doesn’t Java have unsigned primitives? I can never wrap my head around this. How hard would it be to implement unsigned arithmetic? Every single other strongly typed language out there has them!

I love Java, but this always bothered me. Java does not exist in a vacuum. Sure, when you are working in pure java environment, with pure java standards, and data formats you are fine. But in the real word, sometimes data uses non-java friendly conventions. Especially in imaging. Most images use unsigned ints or bytes to store pixels. Sure, you can always use an int to store a byte but this is wasteful.

Furthermore, most of Java API’s work with signed data. If you are just crunching numbers, this is usually not a big problem – but if you try to do something more fancy you run into issues. For example – awt package has some nice image display capabilities. I do not feel like implementing a rendering algorithm for my data. I also do not want to use JAI, because it is not standard, not mature enough. I want to use the existing API – but I can’t really plug a wraparound primitive into it. While byte in an int works fine (if you tweak the color model to only use 8 low order bits) an unsigned int might be a problem. There are no API’s which work with long types, so int cannot be wrapped into a higher order primitive this way.

So, I might need to check for these things and normalize the data somehow. Now, the big question is – should a negative int be converted to the min or the max value? I guess it is relative…

Seriously though – is there a reason for leaving out unsigned primitives? Any reason at all? Or was this done on a whim?

I still like java, I’m just slightly irritated 😛


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

%d bloggers like this: