# JPL 3.x Java API gotchas

## arg indexing

> the Term[] args of a Compound are indexed (like all Java arrays) from zero, whereas in Prolog the args of a structure are conventionally numbered from one.

## representing @(null)

> there is no jpl.JNull class: instead, use new JRef(null) to represent @(null) (which itself represents Java's null). If you don't know what this all means, don't worry: it only affects those writing hybrid Java+Prolog programs which call each other nestedly.

## all solutions of a Query with no solutions

Query.allSolutions() now returns an empty array of Map if the Query has no solutions (in 1.x versions it inconsistently returned null).