1. 程式人生 > >openjdk和jdk的區別

openjdk和jdk的區別

使用過LINUX的人都應該知道,在大多數LINUX發行版本裡,內建或者通過軟體源安裝JDK的話,都是安裝的openjdk,那麼到底什麼是openjdk,它與sun jdk有什麼關係和區別呢? 
歷史上的原因是,openjdk是jdk的開放原始碼版本,以GPL協議的形式放出。在JDK7的時候,openjdk已經成為jdk7的主幹開發,sun jdk7是在openjdk7的基礎上釋出的,其大部分原始碼都相同,只有少部分原始碼被替換掉。使用JRL(JavaResearch License,Java研究授權協議)釋出。
至於openjdk6則更是有其複雜的一面,首先是openjdk6是jdk7的一個分支,並且儘量去除Java SE7的新特性,使其儘量的符合Java6的標準。
關於JDK和OpenJDK的區別,可以歸納為以下幾點:
授權協議的不同:
openjdk採用GPL V2協議放出,而JDK則採用JRL放出。兩者協議雖然都是
開放原始碼
的,但是在使用上的不同在於GPL V2允許在商業上使用,而JRL只允許個人研究使用。
OpenJDK不包含Deployment(部署)功能:
部署的功能包括:Browser Plugin、Java Web Start、以及Java控制面板,這些功能在Openjdk中是找不到的。
OpenJDK原始碼不完整:
這個很容易想到,在採用GPL協議的Openjdk中,sun jdk的一部分原始碼因為產權的問題無法開放openjdk使用,其中最主要的部份就是JMX中的可選元件SNMP部份的程式碼。因此這些不能開放的原始碼將它作成plug,以供OpenJDK編譯時使用,你也可以選擇不要使用plug。而Icedtea則為這些不完整的部分開發了相同功能的原始碼(OpenJDK6),促使OpenJDK更加完整。
部分原始碼用開原始碼替換:
由於產權的問題,很多產權不是SUN的原始碼被替換成一些功能相同的開原始碼,比如說字型柵格化引擎,使用Free Type代替。
openjdk只包含最精簡的JDK:
OpenJDK不包含其他的軟體包,比如Rhino Java DB JAXP……,並且可以分離的軟體包也都是儘量的分離,但是這大多數都是自由軟體,你可以自己下載加入。
不能使用Java商標:
這個很容易理解,在安裝openjdk的機器上,輸入“java -version”顯示的是openjdk,但是如果是使用Icedtea補丁的openjdk,顯示的是java。(未驗證)
總之,在Java體系中,還是有很多不自由的成分,原始碼的開發不夠徹底,希望Oracle能夠讓JCP更自由開放一些,這也是所有Java社群所希望的。

相關推薦

openjdkjdk區別與聯絡

使用過LINUX的人都應該知道,在大多數LINUX發行版本里,內建或者通過軟體源安裝JDK的話,都是安裝的openjdk,那麼到底什麼是openjdk,它與sun jdk有什麼關係和區別呢?歷史上的原因是,openjdk是jdk的開放原始碼版本,以GPL協議的形式放出。在J

openjdkjdk區別

使用過LINUX的人都應該知道,在大多數LINUX發行版本裡,內建或者通過軟體源安裝JDK的話,都是安裝的openjdk,那麼到底什麼是openjdk,它與sun jdk有什麼關係和區別呢? 歷史上的原因是,openjdk是jdk的開放原始碼版本,以GPL協議的形式放出。在

Linux上一般會安裝Open JDK,關於OpenJDKJDK區別

下面開始安裝步驟: --------------------------------------------------------------------------第一步-------------------------------------------

open JDK JDK區別

使用過LINUX的人都應該知道,在大多數LINUX發行版本里,內建或者通過軟體源安裝JDK的話,都是安裝的openjdk,那麼到底什麼是openjdk,它與sun jdk有什麼關係和區別呢? 歷史上的原因是,openjdk是jdk的開放原始碼版本,以GPL協議

OpenJDKJDK區別分析

gpl 不同 java linu value targe 輸入 java db arc 一、以下是具體分析: 以下內容轉自http://fgh2011.iteye.com/blog/1771649: 使用過LINUX的人都應該知道,在大多數LINUX發行版本裏,內置或者

JRE JDK區別

dex com 軟件 java 授權 jconsole 很多 語言 java基礎 JRE顧名思義是java運行時環境,包含了java虛擬機,java基礎類庫。是使用java語言編寫的程序運行所需要的軟件環境,是提供給想運行java程序的用戶使用的。 JDK顧名思義是j

SDKJDK區別

java語言 單單 沒有 androi android開發 新名字 java開發工具 開發工具 使用 剛開始工作時,還以為兩者是一樣的,只是版本換新給了個新名字罷了。最近又關註到這個問題,才發現自己大錯特錯,故整理了下分享給大家,共勉! jdk,是Java開發工具包,主要用

JDK 6JDK 7的substring()方法的區別

val 執行 println out 方法 substr tps ima pub 原文鏈接:https://www.programcreek.com/2013/09/the-substring-method-in-jdk-6-and-jdk-7/ 在JDK 6和JDK 7

OpenJDKSun/OracleJDK 區別 與聯絡

首先要先明確之間,以及OpenJDK 6、OpenJDK 7、OpenJDK 7u和OpenJDK 8等專案之間是什麼關係,這有助於確定接下來編譯要使用的JDK版本和原始碼分支。 從前面介紹的Java發展史中我們瞭解到OpenJDK是Sun在2006年末把Java開源而形成的專案,這裡的

JAVA學習筆記系列3-JVM、JREJDK區別

JVM(Java Virtual Machine)就是一個虛擬的用於執行bytecode位元組碼的“虛擬計算機”。它和os打交道 JRE(Java Runtime Environment)包含:Java虛擬機器、庫函式、執行java應用程式所必須的檔案。它包含了JVM JDK(Java Developme

JREJDK區別

1. 定義 JRE(Java Runtime Enviroment)是Java的執行環境。面向Java程式的使用者,而不是開發者。如果你僅下載並安裝了JRE,那麼你的系統只能執行Java程式。JRE是執行Java程式所必須環境的集合,包含JVM標準實現及 Java核心類

關於JREJDK區別,終於知道他們的區別

java,從大三上學期就開始接觸,只是前幾堂課翹掉了。導致,一直弄不明白,JDK和JRE的區別是什麼??經過幾年的“鑽研”,“開悟”,我終於明白了。哦哈哈哈JDK,開發java程式用的開發包,JDK裡面有java的執行環境(JRE),包括client和server端的。需要

針對初學者瞭解JVM、JREJDK三者間的區別聯絡

      首先說Java程式語言,它是一門高階程式語言,具體由誰何時建立的,讀者可以到網上查詢相關資料,這裡就不再贅述。那麼,談到Java就不得不談談JVM、JRE和JDK三者間的區別和聯絡。       JVM:英文全稱Java Virtual Machine,字面意思

JVM與JRE與JDK區別聯絡

JVM:字面意思是java虛擬機器,它是用來載入並執行.class檔案的軟體JRE:字面意思是java執行時環境,它包含JVM和一些常用的類庫,類庫就是我們在編寫好java程式後所依賴的核心類和支援檔

Java教程02—Java虛擬機器(JVM)、JDK,JRE之間的區別

JVM主要功能 Java是一種高階程式語言。 用高階語言編寫的程式不能直接在任何機器上執行。 首先,需要將其翻譯成特定的機器語言,javac編譯器就專門來幹這個事兒的,它把Java程式(含有的.java原始碼檔案)轉換成機器程式碼(稱為位元組碼或.c

OpenJDKJDK區別及Ubuntu下的安裝方法

OpenJDK與JDK的區別: OpenJDK是JDK的開放原始碼版本,以GPL協議的形式放出。兩者的授權協議的不同,且在採用GPL協議的OpenJDK中,SUNJDK的一部分原始碼因為產權的問題無法開放OpenJDK使用,所以相比於JDK,OpenJDK原始碼不完整,只包含最精簡的JDK。 Ub

Spring的執行緒池JDK的執行緒池的區別

API 文件中很清楚,SpringFrameWork 的 ThreadPoolTaskExecutor 是輔助 JDK 的 ThreadPoolExecutor 的工具類,它將屬性通過 JavaBeans 的命名規則提供出來,方便進行配置。 1.ThreadPoolEx

CGLIB JDK生成動態代理類的區別

AOP 使用的設計模式就是代理模式,是對IOC設計的補充。為了擴充套件性,往往會加上反射,動態生成位元組碼,生成代理類。 這裡往往還會使用到DI,把代理的實現類通過依賴注入的方式,傳給代理工廠。 關於生成動態代理類的方式有兩種:JDK和CGLIB。 CGLIB,是一個開源工具。spring 和hibernat

轉:OpenJDKSunJDK的區別聯絡

使用過LINUX的人都應該知道,在大多數LINUX發行版本里,內建或者通過軟體源安裝JDK的話,都是安裝的OpenJDK,那麼到底什麼是OpenJDK,它與SUN JDK有什麼關係和區別呢? 歷史上的原因是,OpenJDK是JDK的開放原始碼版本,以GPL(General

cglib動態代理jdk動態代理的區別與應用

1,引入 如果從一個Controller呼叫Service的非事務方法a,然後在a裡呼叫事務方法b,b事務生效嗎?  public void update() { updateActual(); int a = 1 / 0;