Android被指抄襲Java代碼引爭議

2020-12-05 CSDN技術社區

1月22日消息,據國外媒體報導,一位智慧財產權專家發現了43個實例,證明谷歌在最新版本的Android作業系統中未經允許抄襲的Java代碼。

這個證據可能會駁斥谷歌在與甲骨文在有關Android侵犯Java專利和版權的法律糾紛中為自己做的辯護。

密切跟蹤這個案子並且創建NoSoftwarePatents(不要軟體專利)組織的Florian Mueller在博客中稱,這個發現過程對於甲骨文是非常有成果的,對於谷歌來說是非常可怕的。

Mueller仔細檢查了Android的代碼,除了甲骨文在訴訟中提到的一個文件之外,他還發現了六個與Java文件非常相似的文件。這些文件是在Android 2.2版和2.3版中發現的。

此外,Mueller指出,在Android的代碼中有三十七個文件包含一些提示,稱這個代碼是Sun專有的代碼。

Mueller稱,無論谷歌說什麼,這些版權頭文件都說明這些代碼要根據Apache軟體許可證重新授權之後才可以使用。谷歌是根據Apache許可證授權用戶使用Android作業系統的。即時有人說甲骨文/Sun以後會根據GPL許可證提供這個文件(對此我還沒有發現確鑿的證據),那也不允許這樣改變許可證。

雖然谷歌正在使用的代碼與原來的Java代碼稍微有一點區別,但是,Mueller發現這個區別是使用一種編譯器的結果。當他使用一種名為JAD的Java反編譯器並且反編譯七個不同的文件的時候,他發現這個結果與Android中發現的文件幾乎是一樣的。

谷歌沒有對Mueller的說法發表評論。

甲骨文在去年8月對谷歌提出起訴,指控谷歌Android作業系統侵犯了Java版權。甲骨文收購Sun獲得了Java版權。谷歌稱這個訴訟是沒有根據的並且否認侵犯了版權。

如果發現谷歌侵犯了版權,谷歌就要為銷售的每一部Android手機向甲骨文支付許可證費。谷歌可以把這筆費用轉嫁給設備廠商。但是,這會減少Android作為免費作業系統的吸引力。

針對此事,《Android基礎教程》的作者Ed Burnette在ZDNet發表博文指出,關於Florian Mueller發布的關於Android抄襲Java代碼的文章裡,存在兩個疑問。(轉自谷奧)

首先是第一組的7個抄襲的java文件(PolicyNodeImpl.java, AclEntryImpl.java, AclImpl.java, GroupImpl.java, OwnerImpl.java, PermissionImpl.java 和 PrincipalImpl.java)都屬於原始碼裡的測試分支。任何程式設計師都不會將測試代碼放到最終發布的產品裡。這些測試代碼都是內部測試之用,以確保軟體發布前的質量。

然後是另外一組的37個抄襲文件,他們確實被打包成一個叫做MMAPI.zip的文件裡了,並為了對某個類型的晶片組進行支持而進入了音頻驅動原生代碼庫裡。這其實是值得深入挖掘的部分,但仔細檢查之後你會發現這些文件也並未隨Android發布出來,Google裡確實有人開始不小心將它們放進了最終代碼裡,但後來都刪除了。

再說說第一組的7個文件,他們都是Sun發布在自己網站上的,幫助開發者測試自己的代碼debug之用。但有Android或Harmony開發者用他們反編譯並重建之,而不是直接用了Sun提供的代碼。之後還在文件頭部錯誤的粘帖上了Apache的授權,可能是自動的腳本吧。但畢竟他們沒有隨最終的Android發布出來。

PolicyNodeImpl.java這個文件在2010年10月30日從原始碼樹裡刪除,另外6個Java文件則在2011年1月14日被刪除,刪除這些文件的開發者Dan Bornstein給出的注釋是「刪除無意義的測試」。

是,Google確實在Android裡抄襲了Java的代碼,但可能都屬於兩次錯誤的操作,而且這些抄襲代碼都沒進入最終發布的Android裡,所以怎麼說呢?情節還不算嚴重吧。人民群眾可以理解所謂的「不小心」或「臨時工所為」,但Oracle可不是善茬兒,它可能理解Google嗎?

原文連結:http://tech.163.com/11/0122/10/6R0DM5B8000915BE.html

相關焦點

  • 首屆燧石文學獎設抄襲獎引爭議
    原標題:首屆燧石文學獎設抄襲獎引爭議   由天津市作家協會主辦,天津中作華文文化傳播有限公司、炎炎如戲文化傳媒、閱文集團承辦的首屆燧石文學獎日前在京頒獎,除設立獎勵作品與作者的各個獎項外,燧石文學獎還特別為年度抄襲作品設立了「白蓮花獎」,網絡小說《錦繡未央》「獲獎」。
  • Java程式設計師必備基礎:Java代碼是怎麼運行的?
    運行時創建對象 方法調用,執行引擎解釋為機器碼 CPU執行指令 多線程切換上下文 編譯 我們都知道,java代碼是運行在Java虛擬機上的。
  • (提高Java代碼質量)|25個優化Java代碼的小技巧
    反例:4.集合初始化儘量指定大小java 的集合類用起來十分方便,但是看源碼可知,集合也是有大小限制的。每次擴容的時間複雜度很有可能是 O(n) ,所以儘量指定可預知的集合大小,能減少集合的擴容次數。反例:正例:5.字符串拼接使用 StringBuilder一般的字符串拼接在編譯期 java 會進行優化,但是在循環中字符串拼接,java 編譯期無法做到優化,所以需要使用 StringBuilder 進行替換。
  • android啟動頁設計專題及常見問題 - CSDN
    ><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent
  • getty 發布,一個完全基於 java 實現的 aio 框架
    3、本人對netty比較喜歡,無論是其性能還是編程思想(JBOSS提供的一個java開源網絡框架,可以說是java網絡通訊裡的一哥,極其穩定和強大的性能使得被廣泛使用)4、有了netty為何還要自己造輪子?這裡有兩個原因,其一是本人就喜歡造輪子,這是病,改不了。
  • android藍牙相關框架專題及常見問題 - CSDN
    代碼來源於Android P,本文相關代碼:client:frameworks/base/core/java/android/bluetooth/*system/bt/binder/android/bluetooth/**.aidlservie:framework/base/services/core/java/com/android/server/BluetoothService.java
  • Android利用SurfaceView顯示Camera圖像爬坑記(四)
    ;import android.hardware.Camera;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.util.Log;import android.view.GestureDetector;import android.view.MotionEvent;
  • Android系統APK文件詳解
    最終我們平時安裝的文件可能不是這個文件夾,而在android rom中系統的apk文件默認會放入這個文件夾,它們擁有著root權限。META-INF目錄META-INF目錄下存放的是籤名信息,用來保證apk包的完整性和系統的安全。
  • Android P 行為變更
    ICU 可將公開 API 遷移至 android.icu 軟體包,同時 ICU 也供 Android 平臺內部使用,用於支持國際化開源項目,譬如說,開發者可以利用 ICU 在 java.util、 java.text 和 android.text.format 中實現 Android 類。
  • Java 反射最佳實踐
    本文的示例代碼主要是基於jOOR行編寫的,如果想了解更多請查看這裡的測試代碼。測試代碼:https://github.com/jOOQ/jOOR/tree/master/jOOR/src/test/java/org/joor/test固定連接:https://github.com/tianzhijiexian/Android-Best-Practices/blob/master/2015.9
  • 17歲CEO陷「抄襲風波」 產品被指抄襲程式設計師作品
    李昕澤以「崇才科技」的名義展示的智能電視產品  00後CEO陷「抄襲風波」   智能電視「貓桌面」被指抄襲專業程式設計師作品 有人高中寫著玩的程序被當產品發布   最近兩天,17歲的李昕澤突然身陷旋渦中心。
  • Java8 lambda表達式語法
    但是有一點這裡強調一下(Windows系統):目前我們工作的版本一般是java 6或者java 7,所以很多人安裝java8基本都是學習為主。這樣就在自己的機器上會存在多版本的JDK。而且大家一般是希望在命令行中執行java命令是基於老版本的jdk。但是在安裝完jdk8並且沒有設置path的情況下,你如果在命令行中輸入:java -version,屏幕上會顯示是jdk 8。
  • 一些防止java代碼被反編譯的方法
    舉報   作者 | Zzzkis  來源 | urlify.cn/2u2yEb  76套java
  • 中南大學校長張堯學國家自然科學一等獎項目被曝涉嫌抄襲
    中國工程院院士、中南大學校長張堯學及其科研團隊的這個獲獎項目,此前就引發爭議。  近日,網名為KraneSun的lT工程師在開原始碼軟體平臺Github發帖稱,中國工程院院士、中南大學校長張堯學及其科研團隊的項目——2014年度國家自然科學一等獎「網絡計算的模式及基礎理論研究項目」實為「遠程桌面項目」,且涉嫌抄襲國外lT工程師上傳的開原始碼軟體。
  • 大學生書法展作品被指抄襲 專家:抄襲與臨摹難界定
    但展覽開始後沒幾天,網上便出現了一種聲音稱,展出的部分作品中涉嫌抄襲,展覽作品中的字體、章法及印章使用上均與此前發表或展出過的作品有高度相似之處。有看過展覽的網友稱至少看到三幅作品涉嫌抄襲,其中一副是鹹陽師範學院宋某某的作品被指抄襲羅小平的《苦瓜和尚語錄》。另一幅是鞍山師範學院的喬某某的作品被指抄襲秦朋的《蘭亭詩》,而秦朋的原作曾入展第六屆蘭亭獎。
  • Java8 lambda表達式
    匿名內部類是為了讓java程式設計師傳遞行為和傳遞數據一樣容易,不幸的是,他們並不容易,為了調用處理邏輯的代碼仍然有四行模板代碼,重複的模板代碼並不是唯一的問題,這種代碼也難以閱讀,我們並不想傳遞一個對象,而僅僅只需要傳遞某種行為,在java8中我們可以寫得更簡潔不同於傳遞一個實現某個接口的對象,我們傳遞了一段沒有命名函數的代碼
  • 跟我學java編程—認識java語言的字符類型
    用記事本打開「CharSample.java」文件,輸入以下代碼:編譯「CharSample.java」文件,在命令行窗口輸入「javac CharSample.java」並執行命令,編譯通過後,在命令行窗口輸入「java CharSample」運行Java程序,命令行窗口顯示如下信息:
  • 跟我學java編程—深入理解for語句的嵌套循環
    示例1:用「*」輸出一個菱形圖案,圖案如下: 在D盤Java目錄下,新建「ForSample1.java」文件。用記事本打開「ForSample1.java」文件,輸入以下代碼:代碼結構分析程序功能主要是演示for嵌套循環的使用方法。
  • 譯者被指抄襲 出版方表示佩索阿爭議譯本停發
    [導讀]「對抄襲行為零容忍,是文景的一貫立場。作為知識共同體的一分子,文景願意繼續為建設健康的文化生態而不懈努力。」佩索阿中譯本詩集《我的心略大於整個宇宙》譯者韋白被指抄襲一事,日前又有進展。閔雪飛:希望還能看到書「我希望在剔除了抄襲作品之後,這本書還是能讓讀者看到。國內對佩索阿的介紹很少,而這本詩集中也有相當多沒有涉及抄襲的作品。」閔雪飛在電話中對記者說。在7月1日發表文章指出韋白抄襲其與楊鐵軍合譯佩索阿的詩作《斜雨》後,閔雪飛前日再次發布公開信,希望韋白可以在承認抄襲的基礎上道歉。
  • 通過LLVM 在 Android 上運行 Swift 代碼
    也就是說,不是生成特定架構的機器代碼,LLVM 為一個虛擬機生成彙編代碼,然後轉換成中間代碼,適配架構需要的實際代碼。模塊化的設計非常的好,因為允許高度代碼復用(前端和後端的共享優化)。適配不同的機器在這一點上,你可能會想:如果 LLVM 已經夠模塊化,那麼我們是否可以使用一個不同的後端,生成二進位代碼,適配 OS X,iOS 或者是 Android?假設是可以的,我們來看看如何實現。手動構建 Swift 代碼如果使用 Xcode,系統會自動完成這些。