In in the last docs, write and flush doesn't look alike, did you mean write vs finish ?
They are all related though, when you use write, data is not sent right away to the network, it's stored by tornado in a write buffer. This buffer is then sent to the network by the next flush (which is called by finish).
This is important because HTTP responses start with headers, so on the first flush you have to write and send the headers and more importantly, you can't add or modify headers after the first flush.
Tornado allows you to use write (multiple times if you need to), add/modify headers until the first flush which usually occurs automatically at the end.
Most of the time, you just use write and let tornado call flush/finish when it needs to.
finish doesn't include the json conversion shortcut as it is less commonly used I guess.
Concerning security issue mentioned in the write() docs, it seems to have been resolved in recent browsers: