everyone can read a Java program and understand what is going on
Untrue, unless you're denying the existence of non-programmers or programmers who don't know OOP or programmers who've never worked with an Algol-derived syntax.
I've said before that the notion that "the simpler the syntax, the more readable the code" is a false dilemma. You'll have complexity somewhere else. I don't care if a non-programmer can't read my code. I care if a decent Perl programmer can maintain my Perl code. I care if a decent C programmer can maintain my C code. I care if a decent Ruby programmer can maintain my Ruby code.
Bring on macros! I'll use them to simplify my code as a whole. If I use them wisely, they'll make it easier to understand and maintain.