Agreed on items #1, #2 and #5. #3 is more of an issue on how you design your system than of the programming language itself and you can get away with #4 if you throw other languages into the mix.
For example, you can do your website with django or Rails because you need to keep some agility in the frontend but you can use something like Java for background processes. Picture this (it's just a quick example): you can create an online store where the web frontend is developed with one of the aforementioned frameworks because it'll allow you to add new features quickly but when the client puts in an order for something you put a message in a JMS queue and use some j2ee application to process that order because this background process doesn't change much and it may be faster to develop with this technology.
For example, you can do your website with django or Rails because you need to keep some agility in the frontend but you can use something like Java for background processes. Picture this (it's just a quick example): you can create an online store where the web frontend is developed with one of the aforementioned frameworks because it'll allow you to add new features quickly but when the client puts in an order for something you put a message in a JMS queue and use some j2ee application to process that order because this background process doesn't change much and it may be faster to develop with this technology.