This is exactly what I was looking for, thank you so much for taking the time to help me out, Steve! :) I'd like to ask a few more questions if that's okay, just to get some clarification on a few things!
Is there any documentation regarding the performance of the low-level drawing routines? One thing I like is how pixel-perfect the scaling on pixel art turns out when using drawImage and manually specifying a width and height. The result is so much more crisp than what can be achieved with multi-resolution images. As a Codename One developer, do you think it is way more expensive handle rendering this way instead of using muti-res, or is it about the same?
How performant is it to do something like, say, an array of images? Would this be undefined behavior? drawImage(testimage[3],objx,objy), for example.
Finally, Image.getWidth and Image.getHeight: how expensive are these? Do they have to poll the GPU, or are image width and height stored on the CPU and these are light operations? I ask because I noticed that scale(x,y) isn't 100% portable yet due to limited Affine support, so instead of setting scale(logicalsize,logicalsize) to change the logical draw size, a developer could do something like drawImage(testimage,objx*logicalsize,objy*logicalsize,testimage.getWidth*logicalsize,testimage.getHeight*logicalsize) as an alternative. But only if these are not expensive and/or slow operations to perform?
Of the many write-once-build-anywhere frameworks I have tested so far, Codename One feels the most powerful (especially when it comes to load times and performance) while also being the most affordable. Not to mention, other frameworks have this really spaghetti-looking code and little to no low-level drawing access. I haven't delved too deeply into CN1 yet, of course, but from my impressions so far, I definitely gravitate towards it the most. It's also a business model that I can see myself supporting. This team, this project, you guys are doing something incredible here. :)