甲骨文嚴查Java授權 、 openJDK 註意避坑

来源:https://www.cnblogs.com/m13002622490/archive/2022/04/21/16174814.html
-Advertisement-
Play Games

DFA 演算法是通過提前構造出一個 樹狀查找結構,之後根據輸入在該樹狀結構中就可以進行非常高效的查找。 設我們有一個敏感詞庫,詞酷中的辭彙為:我愛你我愛他我愛她我愛你呀我愛他呀我愛她呀我愛她啊 那麼就可以構造出這樣的樹狀結構: 設玩家輸入的字元串為:白菊我愛你呀哈哈哈 我們遍歷玩家輸入的字元串 str ...


背景

外媒The Register報道,甲骨文稽查企業用戶,近期開始將把過去看管較鬆散的Java授權加入。

甲骨文針對標準版Java(Java SE)有2種商業授權。2019年4月甲骨文宣佈Java SE用戶需要付費訂閱,才能取得授權及更新,包括Java SE 7、8或11、12。但到同年9月該公司又宣佈了免費Java授權方案,針對Java 17版本提供每季更新,併在2021年的新版本提供多1年免費支持,但這項方案並不溯及既往,舊版Java用戶即使安裝修補程式也是需要付費。

報道指出,最近一些美國企業收到甲骨文授權管理部門的消息,詢問Java授權數量。此外甲骨文也從資料庫、中間件或應用授權,來推敲用戶的Java授權是否為虛報。例如,資料庫的數量可以反映 CPU 數量,Java SE 訂閱價格的其中一個收費標準為每個 CPU 每月收費 25 美元,因此就可以反映出 Java SE 訂閱數量是否符合要求。

在這個背景下一些企業已開始用 OpenJDK 開源替代方案應對甲骨文的審計。但是OpenJDK與甲骨文標準版之間存在差異。今天咱們就來聊聊這些差異。

JDK和OpenJDK的區別

關於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部分的代碼。因此這些不能開放的源代碼將它製作成插件,以供OpenJDK編譯時使用,你也可以選擇不要使用plug。而Icedtea則為這些不完整的部分開發了相同功能的源代碼(OpenJDK6),促使OpenJDK更加完整。

部分源代碼用開源代碼替換

由於產權的問題,很多產權不是SUN的源代碼被替換成一些功能相同的開源代碼,比如說字體柵格化引擎,使用Free Type代替。

OpenJDK只包含最精簡的JDK

OpenJDK不包含其他的軟體包,比如Rhino Java DB JAXP……,並且可以分離的軟體包也都是儘量的分離,但是這大多數都是自由軟體,你可以自己下載加入。

不能使用Java商標

這個很容易理解,在安裝openjdk的機器上,輸入“java -version”顯示的是openjdk,但是如果是使用Icedtea補丁的openjdk,顯示的是java。(未驗證)

OpenJDK之坑

一個在 Java SE 中穩定運行了一年多的項目,最近在OpenJDK上部署測試。一個案例失敗。原因是缺少javafx.util。

這裡的javafx.util包在jdk 1.8的類庫裡面有,但在OpenJDK 8裡面是沒有的。解決方式也很簡單,主要如下幾種做法:

  1. 不要使用javafx.util這種OpenJDK裡面沒有的包;

  2. 下載javafx-sdk到伺服器,編譯時將javafx-sdk位置作為--module-path參數傳入;

  3. 在pom裡面顯式添加javafx依賴,這樣在伺服器上用mvn編譯時,會把它從maven中央倉庫拉到本地打包到你的工程里。

<!-- java項目 fhadmin.cn-->
<dependency>
    <groupId>org.openjfx</groupId>
    <artifactId>javafx-base</artifactId>
    <version>14-ea+7</version>
</dependency>

4. 本地編譯好,直接用jar包佈署。

除了這個問題之外,Oracle JDK構建過程是基於OpenJDK的,所以他們之間並沒有技術差別。只是OpenJDK由於版本發佈比較頻繁,可能會遇到不穩定的問題。根據社區反饋,也有一些OpenJDK用戶遇到了性能問題。而Oracle JDK作為商業軟體,在穩定性方面要好很多。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>初識Vue</title> <!-- 引入Vue --> <script type="text/javascript" src="./js/vue.js"></script> ...
  • 《大話雲原生》系列文章期望用最通俗、簡單的語言說明雲原生生態系統內的組成及應用關係。此專欄的前兩篇文章 《【大話雲原生】煮餃子與docker、kubernetes之間的關係》 《【大話雲原生】負載均衡篇-小飯館的流量變大了》 歡迎品鑒! 一、服務接待中心與微服務網關 老婆最近快過生日了,我答應她去旅 ...
  • 文本文件可存儲的數據量多、每當需要分析或修改存儲在文件中的信息時,讀取文件都很有用,對數據分析應用程式 處理文件,讓程式能夠快速地分析大量的數據處理文件和保存數據可讓你的程式使用起來更容易 一、從文件中讀取數據1)讀取整個文件:先創建一個任意的文本文件,設置任意行,任意個數據,命名為data.txt ...
  • ##urllib的4個模板 1.request:最基本的http請求模塊,用來模擬發送請求,就像是在瀏覽器中輸入一個網址然後回車一樣,只需要傳入uel,timeout等參數就可以實現一個模擬請求。 主要功能:用於模擬發送請求打開和讀取URL。 2.error:異常處理模塊,如果出現請求錯誤,我們可以 ...
  • package com.oop;import java.io.IOException;//Demo1 類public class Demo1 { //main public static void main(String[] args) { } /* 修飾符 返回值類型 方法名(.....) { 方 ...
  • Write less to achieve more. 追求極簡是優秀程式員的特質之一,簡潔的代碼,不僅看起來更專業,可讀性更強,而且減少了出錯的幾率。 本文盤點一些Python中常用的一行(不限於一行)代碼,可直接用在日常編碼實踐中。 歡迎補充交流! 1. If-Else 三元操作符(ternar ...
  • 開頭 看電影還在花錢?啥年代了?居然還有看電影花錢的,今天就給你上一課,讓你看看看電影是不需要花錢的。說乾就乾,衝衝 沖,代碼與實現思路就放在下麵了。 實現目的與思路 目的: 實現對騰訊視頻目標url的解析與下載,由於第三方vip解析,只提供線上觀看,隱藏想實現對目標視頻的下載 思路: 首先拿到想要 ...
  • return語句用於退出函數,向調用方返回一個表達式。 return在不帶參數的情況下(或者沒有寫return語句),預設返回None。 None是一個特殊的值,它的數據類型是NoneType。NoneType是Python的特殊類型,它只有一個取值None。 它不支持任何運算也沒有任何內建方法,和 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...