Hi Shaizeen,
Currently the only way to generate SIFT traces is using the record-trace tool, which uses a Pin tool (in sniper/sift/recorder) to extract dynamic instruction streams and dump them to a SIFT file. Using the --sift option to run-sniper does something similar, except that the Pintool and the simulator run simultaneously (but in different processes) and communicate over a UNIX pipe (using the same SIFT data format), this mode also supports multithreading as the simulator sends back per-thread timing information to the Pintool to make sure all threads advance according to their simulated IPC.
Generating a SIFT trace through other means, such as Simics, is definitely possible. Getting it to work with multithreaded applications or multicore Simics simulations will be quite difficult (both Sniper and Simics will try to "own" per-thread progress, which will deadlock if you don't carefully manage it), but getting a single-threaded stream and storing it to disk should be easy once you know the required Simics hooks. You'll need to extract the instruction opcode, memory addresses for loads and stores, and branch directions (taken/not taken). For each dynamic instruction you should then call the Instruction() function of the Sift::Writer class (in sift/sift_writer.cc) which will write the SIFT file for you (so no need to understand the binary format).
As for Java workloads, in theory everything that Pin can handle should simulate in Sniper, but in practice Sniper makes a few extra assumptions about the application that aren't always met. Java seems to break many of those. Problems can occur when the application forks (not supported, there should only be one process), does self-modifying code (should not happen inside ROI, although if you use replay compilation and make sure no code changes during ROI you should be fine), and certain synchronization behavior (Sniper emulates OS-based synchronization calls such as futex, pause, etc, to make sure they have the correct effect on simulated time). This page [1] documents some of our experiences in running DaCapo workloads with Jikes under Sniper, although I must admit the experience is still quite cumbersome and difficult to get to work correctly.
Regards,
Wim