bitcoind does what you need. From "bitcoind --help":
-blocknotify=<cmd> Execute command when the best block changes (%s in cmd is replaced by block hash)
Then whenever you're notified of a new block use getreceivedbyaddress or listreceivedbyaddress to see if your address has received anything.
is there any way to get a json representation of a specific block which includes all transaction in it?
Yes, getblock does exactly that.