Bạn có thể viết một trình biên dịch thực hiện Đặc tả ngôn ngữ Java hoặc viết một JVM thực hiện đặc tả Máy ảo Java, nhưng khi bạn chính thức muốn gọi nó là "Java", bạn phải chứng minh nó tương thích bằng cách vượt qua các bài kiểm tra của TCK ( bộ tương thích công nghệ) và trả tiền cho một giấy phép từ Oracle.
Mặc dù vậy, Oracle không làm cho các bên khác dễ dàng thực hiện việc này. Apache có triển khai JVM ( Apache Harmony ) của riêng họ nhưng trước đây Sun, giờ là Oracle, không hợp tác trong việc cung cấp TCK cũng như không để Apache có giấy phép, điều này dẫn đến nhiều sự phẫn nộ giữa Apache và Oracle.
Từ lâu Microsoft đã có phiên bản Java của riêng họ (đó thực sự được gọi là "Java"). Họ đã cố gắng thay đổi nó để biến nó thành Windows cụ thể, điều mà Sun tất nhiên không thích. Có một vụ kiện, Microsoft đã thua, bỏ phiên bản Java của riêng họ và tạo .NET, đó là một điều hoàn toàn khác xảy ra để hoạt động rất giống như cách Java hoạt động ...
Vụ kiện về Android hoàn toàn không dựa trên điều này; Google không nói rằng Android là Java. Vụ kiện đó là về bằng sáng chế; Oracle có bằng sáng chế về một số ý tưởng và khái niệm trong việc triển khai JVM của riêng họ và tuyên bố rằng Google đang sử dụng các ý tưởng được cấp bằng sáng chế tương tự trong Android mà không cần giấy phép bằng sáng chế từ Oracle.