In Applescript, when you compile the code, the app must be running. If it's not, then it will start.
When you run the script, InD doesn't have to be started first. You could have some Finder actions happen, then InD starts at the needed time when it's actions occur. You can have an if/then statement that only requests InD to do an action only if other circumstances are met. You do not even need to tell application InD to launch, just the first tell app statement will do it.
I do not know how things work in Javasc or VB.