One of my favorite things about Java: packaging both code and data in JAR files
Typically, I serialize required runtime data to a binary file and when I create a JAR file I add the binary serialized data file as a top level entry. To read the data into memory, I use something like this:
InputStream ins =
ObjectInputStream p = new ObjectInputStream(ins);
Vector my_vector = (Vector) p.readObject();
Then, I can just use the JAR file in other applications and I have both code and required data.