is easier to read because the algorithm isn’t obscured by lots of boiler-plate code

uses no loops !

That last feature is what enables Jiffle scripts to be so concise. In Jiffle, you don’t write code to iterate over your
source and destination images. Instead, you specify how to calculate the value of an individual pixel and the Jiffle
runtime system then applies that calculation over the whole image.

Now, some readers might cry foul at the above comparison because although we presented the Jiffle script, we didn’t show
the necessary Java code to actually run it. To be fair, we didn’t show the import statements and calling code necessary
for the Java method either, but in the interest of even-handedness, here is one way to run that script within a Java
program:

JiffleBuilder builder = new JiffleBuilder();
// These chained methods read the script from a file,
// create a new image for the output, and run the script
builder.script(scriptFile).dest("destImg", 500, 500).run();
RenderedImage result = builder.getImage("destImg");

Jiffle is still quite a new language and some of the features that we eventually hope to support are not in there yet.
There are also some constraints imposed by the nature of the Jiffle run-time system.

Destination images must be data type double (Java DataBuffer.TYPE_DOUBLE). Jiffle does all calculations using double
values, regardless of the type(s) of source images involved.

Destination images can only have a single band.

Jiffle run-time objects iterate through source and destination images by X-ordinate (column), then Y-ordinate (row).
Algorithms that require a different iteration order, such as the diamond-square method for generating fractal
surfaces [†] will either be impossible to implement in Jiffle or just a lot less work to write directly in Java.