Q:

Why Java permits labels positioned far from a loop?

I was coding in JAVA and suddenly I wrote some code like this:
int x = 10;
boolean b = true;

l1: b = x > 1;

l2: while (b) {

    // some code
    break l2;
}

and to my surprise the code compiles and run properly. I'm doing nothing with my l1 label but why does it compile correctly with this statement? 
I know that goto in java EXISTS but is not used (Java Language Keywords) but is there anyway that I can jump to it?

A:

Any statement can be labeled, but they are only useful in conjunction with break or continue:

Unlike C and C++, the Java programming language has no goto statement; identifier statement labels are used with break (§14.15) or continue (§14.16) statements appearing anywhere within the labeled statement.

In other words, to be usable, the label needs to apply to a statement that contains a break or continue, which in turn can be a loop or, for break only, any block.

