Obvs, you should do this on every box that accepts connections from the outside world.
Obvs, it's no easier to get people to do this in practice than it is to get people to quit using string formatting to get parameters into their SQL queries.
Or at least use Java or O/S sandboxing features.
At least in the web-facing parts of their apps.
In any case, this requires some planning ahead, and a mindset different from "agile".
Maybe Java 9's AOT compilation can help in the process, but even if it could produce stand-alone programs, I think the dynamisms in Java code (reflection, annotations, dynamic class loaders) will make this infeasible for most code bases.
The qmail architecture would likely be very inefficient with 100M+ users.
> so you can't use straightforward NoExecute bits (provided by hardware and supported by OS loaders to disallow calling into dynamically allocated memory