JoSQL permet d'interroger, de filtrer, de regrouper et de trier des collections d'objets Java résidants en mémoire. Le tout à partir d'une syntaxe proche de SQL. Ca donne des choses comme ça par exemple :

    SELECT *
    FROM   java.io.File
    WHERE  name $LIKE "%.html"
    AND    lastModified BETWEEN toDate('01-12-2004')
                        AND toDate('31-12-2004')

La source de données est toujours une collection. Mais, il sait également naviguer sur l'ensemble du graphe en exploitant les attributs et méthodes des objets présents dans la collection. Ainsi il est possible d'exprimer des choses comme :

   SELECT *
   FROM   java.io.File
   WHERE
        parentFile.lastModified
                   BETWEEN toDate('01-12-2004') AND toDate('31-12-2004')
       AND parentFile.name = "local"

Amusant non ?