# Java 1.8, <s>96</s> 91 bytes

I managed to flatten everything into one for-loop with a single print statement. Nothing Java 1.8 specific - just happens to be the version I compiled the code with.

<s>

    void f(){for(int i=-1,j=0,k=i;++i<702;k=(i+1)%27)System.out.write(k>25?++j-j+10:65+(k>j?k:j));}
</s>

Surprisingly, removing variable `k` and introducing `Math.max()` skimmed off 5 bytes:

    void f(){for(int i=-1,j=0;++i<702;)System.out.write(i%27>25?++j-j+10:65+Math.max(i%27,j));}


Or ungolf'ed:

    interface C {
        static void main(String[] a) {
            f();
        }
    
        static void f() {
            for (int i = -1, j = 0; ++i < 702;) {
                System.out.write(i%27 > 25 ? ++j - j + 10 : 65 + Math.max(i%27,j));
            }
        }
    }

[Try it here.](https://ideone.com/yWJr9Z)

Approach is based on my [Tabula Recta answer](http://codegolf.stackexchange.com/questions/86986/print-a-tabula-recta/87202#87202). This leverages the fact that the `System.out` stream is line-buffered, causing an auto-flush whenever a line feed character (`10`) is written.

I have a feeling this can be golf'ed down further, mainly because of the way the values of certain variable are juggled with (i.e. `j`). *Note to self: I was right!*.