Java ฟรี / โอเพนซอร์สหรือไม่?


33

เมื่อวันที่ 13 พฤศจิกายน 2549 Sun ได้ปล่อย Java เป็นซอฟต์แวร์เสรีและโอเพ่นซอร์สส่วนใหญ่ (FOSS) ภายใต้เงื่อนไขของ GNU General Public License (GPL) เมื่อวันที่ 8 พฤษภาคม 2550 Sun ได้เสร็จสิ้นกระบวนการทำให้แกนประมวลผลหลักของ Java ทั้งหมดอยู่ภายใต้เงื่อนไขการแจกจ่ายซอฟต์แวร์ฟรี / โอเพ่นซอร์สนอกเหนือจากรหัสขนาดเล็กที่ Sun ไม่ได้ถือลิขสิทธิ์

OpenJDK (Open Java Development Kit) เป็นการใช้งานฟรีและโอเพ่นซอร์สของภาษาการเขียนโปรแกรม Java เป็นผลมาจากความพยายามของ Sun Microsystems ที่เริ่มขึ้นในปี 2549 การดำเนินงานนี้ได้รับอนุญาตภายใต้ GNU General Public License (GNU GPL) โดยมีข้อยกเว้นในการเชื่อมโยง

  • ทำไมยังมีคนที่พูดว่า Java ไม่ได้เป็นโอเพ่นซอร์สหรือเป็นอิสระในการพูดฟรี?
  • ฉันพลาดอะไรไปรึเปล่า?
  • Java ยังคงเป็นกรรมสิทธิ์หรือไม่


ฉันไม่ทราบแน่ชัดว่าการใช้งาน Sun JVM เพียงอย่างเดียวหรือแม้แต่เทคโนโลยี (bytecode) ได้รับการปกป้อง แต่ core libs (java.xy) ทั้งหมดนั้นฟรี ดังนั้นหากใครสร้างข้อกำหนดรายละเอียด bytecode และ VM ที่แตกต่างกันควรใช้ libs ที่มีอยู่ฟรี โอ๊ะโอ Google ทำเช่นนั้นกับ Dalvik!
ern0

คำตอบ:


37

ปัญหาคือเพื่อที่จะเรียกบางสิ่งบางอย่าง "Java" คุณจะต้องได้รับการรับรองว่าเป็นไปตามข้อกำหนดของ Java

หนึ่งใน requisites ก่อนการได้รับการรับรองนี้กำลังเรียกคุณ JVM ผ่านชุดทดสอบ - Java เทคโนโลยีเข้ากันได้ Kit (TCK) ชุดทดสอบนี้ไม่ได้เปิดแหล่งที่มา

ดังนั้นคุณสามารถสร้าง JVM ที่มีพฤติกรรมเหมือน Java และเป็นโอเพ่นซอร์สอย่างสมบูรณ์ แต่ถ้าคุณต้องการเรียกมันว่า "Java JVM" คุณต้องซื้อชุดใบรับรองภายใต้ใบอนุญาตโอเพ่นซอร์สที่ไม่ใช่ สำหรับโอเพ่นซอร์สหลายคนนี่เป็นการเริ่มต้นที่ไม่สมบูรณ์


7
นั่นเป็นหนึ่งในเหตุผลที่ว่าทำไมApache Harmony (ซึ่งเป็นที่ค่อนข้างสมบูรณ์การดำเนินงาน JVM อิสระ) ก็หยุด เป็นเรื่องน่าละอายจริงๆที่ Sun / Oracle ทำเช่นนี้ (และยังคงทำเช่นนี้) สิ่งที่ Google ทำ ("เกือบจะคัดลอก" Java) อาจเป็นผลโดยตรงจากสิ่งนี้เช่นกัน
โจอาคิมซาวเออร์

1
นอกจากนี้ชุดทดสอบคือ Java Platform TCK (มีTCKอื่น ๆ สำหรับเทคโนโลยีที่เกี่ยวข้องกับ Java ด้วย)
โจอาคิมซาวเออร์

4
นอกจากนี้ถ้าคุณสร้าง JVM ที่ประสบความสำเร็จ, Oracle อาจฟ้องคุณสำหรับการละเมิดลิขสิทธิ์และการละเมิดสิทธิบัตร ชอบที่พวกเขาฟ้อง Google ผ่านทาง Android
MarkJ

2
กฎหมายการตั้งชื่อเกี่ยวข้องกับการโทรหาโอเพนซอร์สหรือไม่? ฉันไม่สามารถสร้างเบราว์เซอร์ของตัวเองและเรียกว่า firefox ได้เช่นกัน ฉันคิดว่าสำหรับคำถามสิ่งแรกคือการเข้าใจมัน ... สิ่งที่มีความหมายโดยคำว่า "Java" ข้อมูลจำเพาะภาษาการดำเนินการ jvm ... และผู้ที่เรียกว่าไม่เปิด ...
johannes

@ Johannes - ยินดีต้อนรับสู่บ้านโอเพนซอร์สของ pedants และ nitpickers! สำหรับคนจำนวนมากในชุมชนโอเพ่นซอร์สความแตกต่างเหล่านี้มีความสำคัญ พยานอาปาเช่ละทิ้งโครงการฮาร์โมนี่ สำหรับคนอื่น ๆ ที่มีการใช้งานจริงมากกว่าการมีสภาพแวดล้อม Java Like ที่ทำงานได้คือ "ดีพอ" เหมือน Dalvik VM ที่เป็นหัวใจของอุปกรณ์ Android ทั้งหมด
James Anderson

15

คุณควรอ่านคำตอบนี้ก่อนที่จะถูกนำไปใช้ คำตอบหลักระบุไว้:

เกี่ยวกับ Java 7 โปรดทราบว่า JDK7 และ OpenJDK7 จะมีฐานรหัสที่เหมือนกัน( เกือบ )

สังเกตเห็นว่าฉันเกือบจะไฮไลต์

จากบทความที่เชื่อมโยงจากคำตอบนั้น:

[…] แต่มีบางรหัสที่มีการแทนที่โอเพนซอร์ซซึ่งเรายังคงใช้รหัสต้นฉบับเก่าที่ปิดอยู่ นี่เป็นหลักในการแรสเตอร์แบบอักษรและกราฟิก โค้ด rasterisation แบบโอเพ่นซอร์สเก่าในขณะที่ถูกเข้ารหัสมีการแก้ไขข้อผิดพลาดมากกว่า 10 ปีและการปรับจูนอย่างละเอียดและสำหรับการแทนที่โอเพนซอร์สใด ๆ เพื่อแทนที่รหัสนั้นในการสร้าง JDK ที่มีการผลิตมันจะต้องรวดเร็วและมั่นคงและ คุณภาพดีเหมือนรหัสปิดปัจจุบัน

นอกจากนี้จากคำถามที่พบบ่อยของ Java :

ชวา Development Kit (JDK) เป็นอิสระในการดาวน์โหลดและใช้สำหรับการเขียนโปรแกรมเชิงพาณิชย์ แต่ไม่ใหม่แจกจ่าย

ดังนั้นไม่ได้เปิดแหล่งที่มา เกือบแล้ว

แม้ว่ามันจะเป็นโอเพ่นซอร์สอย่างสมบูรณ์ แต่รูปแบบการพัฒนาและการกำกับดูแลก็จะไม่เกิดขึ้น นั่นไม่ใช่ความกังวลเรื่องใบอนุญาต


1
"ฟรีเพื่อดาวน์โหลดและใช้ แต่ไม่ได้แจกจ่ายซ้ำ" หมายถึงซอฟต์แวร์นี้เป็น "ไม่ใช่ซอฟต์แวร์ฟรี" แต่ยังสามารถเป็น "โอเพ่นซอร์ส" ได้ โอเพ่นซอร์สก็หมายความว่าคุณสามารถเข้าถึงซอร์สโค้ดได้ ซอฟต์แวร์ฟรี (ตามที่กำหนดโดย FSF และอื่น ๆ ) ต้องมีสิทธิ์ในการแจกจ่ายซ้ำเช่นกัน
CVN

6
@ MichaelKjörlingนิยามของ OSI ต้องมีสิทธิ์ในการเผยแพร่ซ้ำ
luiscubal

1

ในปี 1997 Sun Microsystems เข้าหา ECMA เพื่อทำให้ Java เป็นระเบียบ แต่ในไม่ช้าก็ถอนตัวออกจากกระบวนการ มาตรฐาน Java ถูกควบคุมจริงผ่านกระบวนการ Java Community

แม้ว่าในปี 2549 ส่วนใหญ่ของ Java ได้เปิดตัวโดย Sun Microsystems ภายใต้เงื่อนไขของ GPL แต่การดำเนินงานอย่างเป็นทางการในปัจจุบันนั้นเป็นของ Oracle

ในขณะที่ Java ขาดมาตรฐานอย่างเป็นทางการที่ได้รับการยอมรับจาก ECMA, ISO / IEC, ANSI หรือองค์กรมาตรฐานบุคคลที่สามอื่น ๆ การใช้ Oracle เป็นมาตรฐาน defacto อย่างไรก็ตามมีการใช้งานทางเลือกเช่น GNU Compiler สำหรับ Java, GNU Classpath, IcedTea-Web เป็นต้น


7
-1: ตั้งแต่ Java 7 การดำเนินการอ้างอิงอย่างเป็นทางการคือ GPJ ของ OpenJDK
Michael Borgwardt

2
พูดคุยเกี่ยวกับ Java คุณจะได้รับ -1 :( OpenJDK เปิดแหล่งที่มา แต่การดำเนินการใน Java.com เป็น BCL ดังกล่าวข้างต้นและที่นี่ . แรกมีการเปลี่ยนแปลงนโยบายของเราเทียบกับ Apache Harmony ไม่มี. OCTLA เป็นโปรแกรมที่ช่วยให้ฟรี การเข้าถึง TCK สำหรับการใช้งานที่ได้รับจาก OpenJDK ที่ได้รับอนุญาตภายใต้ GPL และมีไว้สำหรับวัตถุประสงค์นั้นเท่านั้นประการที่สองการใช้งาน Oracle (สิ่งที่คุณพบใน java.com หรือ java.oracle.com) จะยังคงอยู่ภายใต้สิทธิ์การใช้งาน BCL เท่านั้น เพื่อให้ชัดเจนอย่างสมบูรณ์ซอร์สโค้ด OpenJDK จะยังคงอยู่ภายใต้ GPL
Sajad Deyargaroo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.