Вы можете написать компилятор, который реализует спецификацию языка Java, или написать JVM, который реализует спецификацию виртуальной машины Java, но когда вы официально хотите назвать его «Java», вы должны доказать, что он совместим, пройдя тесты TCK ( комплект совместимости технологий) и оплатить лицензию от Oracle.
Однако Oracle не позволяет другим сторонам делать это. У Apache есть своя собственная реализация JVM ( Apache Harmony ), но ранее Sun, а теперь Oracle, не сотрудничала в обеспечении доступности TCK и не позволяла Apache получить лицензию, что привело к большой обиде между Apache и Oracle.
Давным-давно у Microsoft была своя собственная версия Java (которая действительно называлась «Java»). Они пытались изменить его, чтобы сделать его специфичным для Windows, что, конечно, не понравилось Sun. Был судебный процесс, Microsoft проиграла, вышла из собственной версии Java и создала .NET, а это совершенно другая вещь, которая просто работает так же, как работает Java ...
Иск об Android вообще не основан на этом; Google не говорит, что Android - это Java. Этот иск о патентах; Oracle имеет патенты на ряд идей и концепций в своей собственной реализации JVM и утверждает, что Google использует те же запатентованные идеи в Android без получения патентной лицензии от Oracle.
Ну, насколько я понимаю, вы можете реализовать спецификацию так, как вам нравится - чтобы иметь возможность по праву называть ее «Java», вам нужно лицензировать и передать комплект совместимости, что, очевидно, не тривиально.
Android не является "Java", хотя он использует язык Java. Он даже не пытается пройти TCK.
источник