...
Always implement initialize()
Always use the target product that you have defined in initialize(). If you somehow end up with a different product than the target product, fill the defined target product with the values from this other product.
If you can, set JAI Images directly to your bands
If you cannot set JAI Images directly, use computeTile() / computeTileStack() / computePixel()
In case that each pixel can be computed separately it is probably the best choice to implement the computePixel() - method of a
PixelOperator
(see How to create a new operator) .If you do not have any reason to implement doExecute() , just leave it as it is: blank.
...