Java ve JVM lisansı


17

Java lisansı diğer şirketlerin kendi Java dil sürümlerini oluşturmalarına veya yalnızca doğru bir şekilde uygulamalarına izin veriyor mu? Aynı soru JVM hakkında.

Sun'ın Microsoft'un Java uygulamasının .NET sürümünü ve Google Android için Java'yı değiştirdiği için dava açtığını duydum, ancak tüm konsepti bir bütün olarak kavrayamıyorum.

Yanıtlar:


25

Java Dil Spesifikasyonunu uygulayan bir derleyici yazabilir veya Java Sanal Makine spesifikasyonunu uygulayan bir JVM yazabilirsiniz, ancak resmi olarak "Java" olarak adlandırmak istediğinizde, TCK testlerini geçerek uyumlu olduğunu kanıtlamanız gerekir ( teknoloji uyumluluk kiti) ve Oracle lisansını ödeyin.

Oracle, diğer tarafların bunu yapmasını kolaylaştırmıyor. Apache'nin JVM ( Apache Harmony ) için kendi uygulamaları vardır, ancak daha önce Sun, şimdi Oracle, TCK'yi kullanılabilir hale getirmek veya Apache'nin lisans almasına izin vermemektedir ve bu da Apache ve Oracle arasında çok fazla kızgınlığa neden olmuştur.

Uzun zaman önce Microsoft'un kendi Java sürümü vardı (buna gerçekten de "Java" deniyordu). Sun'ı sevmediği, Windows'a özgü hale getirmek için değiştirmeye çalıştılar. Bir dava vardı, Microsoft kaybetti, kendi Java sürümünü bıraktı ve .NET'i yarattı, bu da Java'nın nasıl çalıştığı gibi çok çalışmak için tamamen farklı bir şey ...

Android hakkındaki dava hiç buna dayanmıyor; Google, Android'in Java olduğunu söylemiyor. Bu dava patentlerle ilgili; Oracle'ın kendi JVM uygulamalarında birkaç fikir ve kavram üzerinde patentleri vardır ve Google'ın, Oracle'dan patent lisansı almadan Android'de aynı patentli fikirleri kullandığını iddia etmektedir.


2
Apache, TCK'yı ve lisanslamayı ücretsiz olarak istedi, bu da Sun'ın reddettiği şeydi (hakları gibi). Microsoft IMO, Sun tarafından dil spesifikasyonuna uygun olarak sunuldu, Windows ile arayüz oluşturmayı kolaylaştırmak için Java üzerinde bir kütüphane oluşturdular. Sun'ın Swing'i aynı anda itmesi sadece zayıf bir zamanlama idi. Sun o sırada ABD siyasetindeki MS karşıtı düşünceye para kazandı ve kazandı.
jwenting

'resmi olarak java deyin' ile ne demek istiyorsun? jvm değiştirebilir ve satabilir miyim? 'java destekli VM' olarak adlandırabilir miyim?
piotrek

1
@jwenting - MS'in yaptığı şey tamamen Java özelliklerine uygun değildi. Bu sadece "üstte bir kütüphane" değildi (iyi olurdu), tamamen uyumsuz bir uygulama oldu (Java ticari markasını kullanmak için bir gereklilik olan Sun'ın uyumluluk testlerini geçemedi). Siyasi durum ne olursa olsun, Sun kesinlikle bu konuda haklıydı.
mikera

mikera dışında MS bu nedenle Java asla çağırdı ...
jwenting

1
Sorun, MS'in mevcut Java sınıflarına yöntem eklemesi ve bunlara karşı derlenen kodu standart sınıflarla uyumsuz hale getirmesiydi. Bu, elbette Java'nın öncülünün değişmeden herhangi bir platformda değişmeden çalışması gerektiğidir.
Peter Kriens

3

Anladığım kadarıyla, istediğiniz gibi şartnameyi uygulayabilirsiniz - meşru bir şekilde "Java" olarak adlandırmak için lisanslı olmak ve uyumluluk kitini geçmek zorundasınız, ki bu görünüşte önemsiz değil.

Java dilini kullanmasına rağmen Android "java" değildir. TCK'yı geçmeye bile çalışmaz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.