There are a few ways to handle what you're talking about. The most basic way I could think of is to compute the similarity from all words to all your reference words and the pick the top-k words with the largest similarity sum. Perhaps a more interesting way would be to ask what your reference words have in common and then find the words that are closest to those commonalities.
We don't have direct support for either, but they shouldn't be too hard to implement. For the first one, I think you can do something like:
int wordsToFind = 10;
BoundedSortedMultiMap<Double,String> similaritySumToWords =
new BoundedSortedMultiMap<Double,String>(wordsToFind);
Set<String> referenceWords; // "Java", "Oracle"
Set<Vector> referenceVectors = new HashSet<Vector>();
SemanticSpace sspace;
for (String w : referenceWords)
referenceVectors.add(sspace.getVector(w));
for (String w : sspace.getWords()) {
Vector v = sspace.getVector(w);
double similaritySum = 0d;
for (Vector ref : referenceVector)
similaritySum += Similarity.cosineSimilarity(v, ref);
similaritySumToWords.put(similaritySum, w);
}
// The values of similaritySumToWords are those K most similar vectors
The second option is a bit more complicated since you have decide how you want to select what features are in common. Adding or multiplying the reference words' vectors are probably good places to start.