The reason .java was approved is because the ISO-3166 designation is the Indonesian "Jawa" rather than the English "Java".[1]
Thinking about this, I can follow their reasoning, although I do find it a little bit too much following the letter of the rule rather than the spirit and perhaps some more thinking might have been prudent.
On the other hand, do we really want to give a special status to English? Using the local language seems to make sense to me – after all, Indonesian people will want to type "gojek.jawa" and not "gojek.java". And there are some questions: should we also consider placenames in Spanish and other widely used languages? Is a small town of 100 residents enough to prevent registration? etc.
Perhaps .java and other English-language equivalents of domestic-language gTLDs should be reserved to act as proxies for the underlying domestic-language gTLD. I.e. the root nameservers should direct requests for .java to the same nameservers responsible for .jawa; and the nameservers for .jawa should be required to respond to queries for any record of A.B.C.D.java. by rewriting the request to be for A.B.C.D.jawa., and then resolving that, rather than treating it as a separate zone.
Domain owners of domains in gTLDs like .jawa would only get one DNS zone file to control — the canonical one — but they'd be free to do something different on the application layer in response to differing e.g. TLS SNI in the request. (So if they're running a webserver on A.B.C.D.{jawa,java}, then they could make the .java version do an HTTP redirect to the .jawa version; or make both serve the same page, but with a rel="canonical" header pointing to the .jawa version, etc.)
Personally, I feel like it'd make sense to add all sorts of proxy gTLDs for every existing two-letter ccTLD, both in their own language and in other languages. So e.g. the .de ccTLD could have both .deutschland and .germany acting as proxy gTLDs, where a domain owner who registers a .de domain is "getting" those others as well, for free.
This would obey the Principle of Least Surprise for both people visiting domains, and people buying domains: if you own example.de, and a .germany gTLD were to exist, then it would be surprising if you didn't also own example.germany, since the two TLDs serve the same purpose.
I said that the alternate-version gTLDs should be reserved for use as proxies. Nobody would be able to register them. Mirroring their canonical TLD would be the only thing they do.
There would be no gojek.java that would be possible to register; no registrar for .java; no nameservers that hold zone files with .java in their names.
There would only be the registrars and nameservers for the canonical TLD .jawa; where these (and other) nameservers would know a TLD canonicalization map [which would be something like the Public Suffix List] that rewrites all .java requests they receive to .jawa requests before the rest of DNS resolution logic takes place.
You'd register gojek.jawa, point its NS records at e.g. Cloudflare, and set up a Cloudflare zone for gojek.jawa containing an A record for gojek.jawa pointing to some IP.
The registrar would publish a zone file to the .jawa nameserver saying that gojek.jawa has NS records pointing to Cloudflare. You'd be able to see these NS records by asking the .jawa TLD nameserver for NS for gojek.jawa or gojek.java. (Why would you be asking the .jawa nameserver for .java records? Because the root nameservers would point to the .jawa nameserver for both "java." and "jawa.")
Cloudflare would publish a zone file to its own nameservers saying that gojek.jawa has A record with value W.X.Y.Z. You'd see this response whether querying Cloudflare's nameserver about gojek.jawa or gojek.java. (Because it also understands the TLD canonicalization mapping.)
There would be, in effect, no "materialized" or "reified" .java TLD. It would only exist as 1. an entry in the canonicalization mapping, and 2. an NS record in the root zone.
Ah right; I misunderstood and thought you meant "proxy if a domain doesn't exist".
I don't know if there's even any way to take .java away from Oracle so this entire thing might be moot, but there are some others that just have two TLDs for the same thing: .wales/.cymru (Cymru being Wales in the Welsh language), .cologne/.koeln (Koeln being German for Cologne), .barcelona/.bcn, .istanbul/.ist – arguably a bit uglier, but simpler to implement as no software updates are needed anywhere.
> arguably a bit uglier, but simpler to implement as no software updates are needed anywhere.
My point was that the way we're currently doing this is a horrible idea, because if you buy one domain you don't own the other, and therefore someone can squat on it, and therefore you are basically blackmailed by that into buying O(N) domains even though you only wanted to market one of them.
> On the other hand, do we really want to give a special status to English?
Yes. English is the lingua franca of the computing age. Having a common reference language is a good thing even if not popular with the professionally outraged.
> On the other hand, do we really want to give a special status to English
We already do and I wish it would stop. You can't call yourself an ace in German in plenty of services because the same letters happen to refer to the human bottom in English.
Thinking about this, I can follow their reasoning, although I do find it a little bit too much following the letter of the rule rather than the spirit and perhaps some more thinking might have been prudent.
On the other hand, do we really want to give a special status to English? Using the local language seems to make sense to me – after all, Indonesian people will want to type "gojek.jawa" and not "gojek.java". And there are some questions: should we also consider placenames in Spanish and other widely used languages? Is a small town of 100 residents enough to prevent registration? etc.
[1]: https://gtldcomment.icann.org/applicationcomment/commentdeta...