实际上甲骨文律所这次做了件好事,挽回了java社区乃至所有开源社区的尊严。因为对于这种违反协议的行为如果给出另外的判决,那么协议的尊严就荡然无存了。
然而google并不在乎……人家早就想换新的了
Google不是因为用Java开发Android被索赔,而是在开发Android及提供SDK时使用Java的方式不被Sun及Oracle接受。
Android应用使用Java开发,Android SDK大量使用标准JDK类库,但是实际打包过后生成的应用并不可以运行在标准JVM上,这相当于变相的拷贝了Sun及Oracle的源代码来实现私有平台,这是Java这门语言从Day 1开始就被禁止的使用方式。Oracle现在的说法就是Google要是当初在Android里面放个JVM,让每一个Android App都是个标准J2ME程序,他们就不找Google要钱。
这种案子早有前车之鉴,当年Sun起诉微软侵权的两条罪状,第一条是Windows没内置JVM,第二条是微软用Java语言和JDK类库搞了个J++,不兼容标准JVM。
=======================================================
被某位大叔指着鼻子说我不懂装懂骗分了,我也不知道我复述一下Oracle和Google的发言和Java的License,怎么成了不懂装懂骗分了。
先说所有认为Google违反Oracle协议是不懂的带跑方向来骗分的是他,答案里提API专利的是他,提这案子和专利没关系的也是他……反正我就是骗分了呗。我也不知道我一百年不上一次知乎的骗个分有啥用,难不成我在知乎上被多赞两下,下回promotion老板能给我涨50%的薪?
其实Google已经赚到了,oracle只是想拿点钱而已,这个对于一般的用户根本没啥影响,Google给oracle钱也不代表你不能在安卓上用java了,反而有正面的意义,这个等下再说
版权是这么一回事,你做软件,我也做软件,你做的软件,你用一个名字,我做的软件,我也用一个名字,但是,你做的软件,你不能用我的名字,举个例子,你做了一个下载软件,叫做my-god,我也做了一个下载软件,god-bless-us,分别注册,但是,你不能把你的软件,起名叫做god-bless-us,尤其是我不同意的前提下,你就不能用,这不是你的商标。java的商标是这样,你可以用,但是有一个要求,你得遵守java的规范,你claim自己是java,那是有标准的,你得遵守,就是jvm是有一个标准的,你自己做jvm,可以不可以?当然可以,但是做出来的jvm,要符合标准,否则java这个商标就不让你用,你可以叫自己做的这个东西其他名字,比如dart,就是不能说是java
历史上有过很多个jvm的实现,比如red hat的iced tea,包括azul systems,也有自己的jvm实现,还有apple,ibm,bea等等,都有,这些jvm互相之间都保证兼容性,大家都能run jars等等,java对于社区有一个重要的承诺,也是最初java流行起来的一个原因,那就是compile once, run everywhere,那你看oracle之类的告这些公司了吗?好像没有吧?那为啥告了google?
很简单嘛,google的安卓根本就不是java嘛,对安卓和jvm了解的应该知道,安卓的dalvik根本就不是标准的jvm实现,安卓从一开始,就有自己的一套东西,比如任何一个jvm上都有的awt和swing组件,dalvik就没有,安卓的gui是自己设计的,dalvik根本就不是标准的jvm的实现
但是呢,安卓上的java api,又是实实在在存在的,你可以看到到处都有的java.util,java.sql,javax.等前缀,那oracle和google争论的焦点就是,这些api,能不能这么用,这里甚至都没有提及语言语法,所以语言语法是不受法律保护的,这点很多人倒是可以安心,所以你在jvm上实现其他乱七八糟的语言,比如kotlin,scala之类的,比如latte,也不用担心,只要你不claim自己是java,都没事,包括这些语言直接调用java的api,也都没问题,实际上jvm还提供各种乱七八糟的工具,让这些语言能够自由地使用java api,比如对于脚本有scrpit engine等等,但是安卓不一样,安卓是一个非标准的java实现,或者根本就不是java,但是它又做得很像java,那就看到底能不能这么用了
其实这里存在有法律的风险,这一点google知道得很清楚,之前google私底下咨询过sun,但是sun是google的斯坦福师兄啦,照顾一下小师弟不是很正常的么?于是google就在sun的默许下,搞了起来,安卓一炮而红,再然后sun搞不下去了,一开始想卖给ibm,当时ibm甚至提出一点,就是把java交给apache,但是sun没同意,再后来ibm觉得sun太贵,而且sun能做的,ibm其实都能做,于是ibm就不要了,sun才选择了oracle,再然后oracle就开始对google的安卓这事来搞搞搞了
一句话就是,google的安卓本就不是java,但是却有用了大量java的api,名字完全一样,实现肯定不一样,dalvik跟hotspot本来就不是一回事,就算是一回事,只要dalvik不符合jvm的标准,这里还是会有问题,oracle一样还是会告
其实这里隐藏着一个小小的市场考虑,为啥google一开始做得跟java一样呢?因为google在传递一个信息,就是对于开发人员而言,你可以跟用对应的java api一样使用这些api,虽然你我都知道得很清楚,这不是java api,但是只要你会用java,就不需要花时间去培训你使用这些api,那这个对于一个当时新生的平台安卓而言,无形中就降低了很多推广的成本,任何一个会java的程序员,都能很快上手安卓,google是从这种事件中牟利了的,现在oracle的意思是说,你赚了这么多钱,分我一点,毕竟java的版权不在你手上
其实这个事情,我是这么看的,在java社区里面,一直都有一种观点,应该把客户端java和服务器端java分离,但是jcp一直比较死板,没有同意这种做法,导致java在gui部分一直都比较弱,是很弱,弱得不是一点点,是真的弱,用过swing和awt的都应该知道是肿么一回事
那安卓的gui并不差,google做得不错,但是会面临着一个矛盾,就是如果你遵守java的标准去实现,gui的效率就一般般,但如果你不遵守java的标准,oracle又会告你,肿么办呢?
很简单嘛,不要叫自己是java嘛
其实这个官司早就有了,n年前就在加州的地方法院做出了判决,但是是favor google的,现在这个巡回法庭应该是上诉的,巡回法庭就类似国内的中级法院,地方法院判决结果,oracle不服,上诉到了巡回法庭,这个裁决favor了oracle,但是这也不是最终的,还可以继续上诉到最高院,那就看那9个大法官们怎么判了,但是不管怎么判,这里是有风险的存在,估计google也需要留一手
那肿么办呢?
你看啊,google现在做了几个语言,其中有dart,有go,还有不是google做的,比如python,c++这些,你觉得,按照你的理解,如果google要想替代掉安卓上的java的话,会选哪一个语言?
估计会选dart,dart就是google版的java,在dart官方q&a上甚至有这么一段:
Q. Isn’t Dart a lot like Java?
Dart has some similarities with Java. See the Intro to Dart for Java Developers codelab for examples of some of the differences between Dart and Java.
看到没有,q&a里面甚至用了a lot like来暗示dart就是java
也就是说,dart是google自己有版权的语言,其次呢,这个语言非常非常像java
那如果google考虑换掉安卓上的java的话,那就是dart咯
再想想google最近在做啥事,好像最近很hot的一个新闻是flutter吧?
flutter用啥语言?自己看吧
已经有2万多个stars了,而且flutter是垮ios和安卓两个平台的哦,将来还会做到fuchsia上去,所以你觉得呢?
dart越来越像是前面说的客户端的java,用java做过客户端的开发的应该知道,java在服务器端和在客户端的表现不太一样,服务器端需要重点处理好并发,而客户端则需要重点处理好ui thread,前者可不用non blocking model,后者是必需用non blocking model,两回事,后者经常是可以单线程搞定的,前者几乎一定会出现多线程,哪怕是奇芭的node,现在jvm的project detroit也在将它融合进jvm,让node也能多线程
所以其实把这几个新闻结合起来看,就很明朗了,的确,安卓不是正规的java,而且用了java的api,这样做是有风险的,oracle complain也很正常,它耍不耍流氓,你我说了不算,米国自有它的法官来断案
但是google的客户端的趋势已经很明显了,就是flutter&dart
搞起
每次有版权、IP方面的纠纷,zhihu上首先就是一堆误导性的骗分回答。本问题各回答里,所有集中在源代码、实现的回答都可以无视。谈什么做的Java应用不能在JVM上跑所以吃官司,更加根本连本轮纠纷的是什么也没看明白。官司完全是围绕API是否有版权、是否可以拿来做个一个样的API提供给自己客户用,这和源代码、JDK、JVM实现,没有一分钱关系。
Jave分裂说最可笑。法庭判决书白纸黑字,Google把Android里Java 37个Package的API做的和JDK一模一样完全“兼容”JDK对等部分的API,所以这部分侵权,所以要赔钱。难道当年Google如果做的更兼容一些,几十亿美元的赔偿Oracle就不要了?这逻辑太幽默。
先说结果再解释:这事有一定概率打到美国最高法院,目前已有的联邦法院判决对google不利,但google有翻盘可能,一个途径就是一路打到最高法院。
Google和Oracle本轮的纠纷,涉及的主要是fair use这个概念,而基础是API是否可以有版权。通俗简单的说,举个例子,Java里string类有charAt和getBytes这两个methods,getBytes有几个不同overload,这个设计在美国受版权保护。你Android里的Java环境,哪怕你重写了所有代码,但只要你的string类有charAt和getBytes那几个overloads就可以涉及版权问题。
Google只要Android环境里提供了Java的标准类库,哪怕是无争议的全部自己做的,也可以被告侵权。这样一份Google自己实现或者和第三方一起实现的和JDK接口一样的标准类库API侵犯了Oracle拥有的API的版权。
API受版权保护,这是2014年美国联邦巡回法庭判令的,一点不含糊。有版权保护不代表用了就侵权,fair use就没有问题,这也就是现在google这官司的焦点。fair use本身的定义没有争议,一般看:
上面三点,都对google不利,因此当前判决判定google构成侵权。只有最后第四点,google可能可以发挥一下:这个受版权保护的API,是否其本身就合理地需要用户去重用、模仿它。同样有版权,你的小说写出来,别人如果模仿、重用里面的情节,那就是侵权,文明社会绝对不会有人有脸说这叫“致敬原作者”。这是因为小说受版权保护的内容站在作者角度和法律角度看本身就不需要他人去重用模仿。而如果是Java这样一个公开的API体系,是这样一个公开的SDK的API,而且大量争议集中在本身就是拿来给用户重用的标准库的API,问题就复杂了。显然的,用户需要适配自己的已有的代码,做个wrapper、adaptor之类的,让自己已有的代码在你的系统上跑起来,做为版权所有人,推广这套API的时候,就应该已经合理预期用户就是会去这样重用和模仿。这个主观性的东西,双方律师可以继续吵几年。
最最根本的问题,其实说了半天,始终就只有一个:API到底该不该有版权保护。
高赞那个回答完全是胡扯混水,还跑来留言大谈一堆专利,结果直接露馅自打脸。
本案很有意思的一个地方,恰恰就是Federal Circuit这样一个日常做专利的法庭,本案却完全只谈copyright,完全不谈一点点patent。这点是但凡有一点点美国专利专业知识的,都会特别留意的。但显然的,在zhihu混水,根本这种最基本的显著特征都不需要懂更不需要看。hehe
Oracle提出Google侵权的具体的37个package下面列出了,这些package双方无争议的均表示实现是google自己做的,Oracle选这37个,是因为别的package在API上还有稍许不同,但这37个package里,Google把package/class/method弄的完全一样,功能完全一样。这和高赞混子骗分回答里的JVM不兼容引来官司的笑话恰恰完全相反:就是做的和Oracle的JDK一模一样了,所以才被告被判侵权。
java.awt.font java.beans java.io java.lang java.lang.annotation java.lang.ref java.lang.reflect java.net java.nio java.nio.channels java.nio.channels.spi java.nio.charset java.nio.charset.spi java.security java.security.acl java.security.cert java.security.interfaces java.security.spec java.sql java.text java.util java.util.jar java.util.logging java.util.prefs java.util.regex java.util.zip javax.crypto javax.crypto.interfaces javax.crypto.spec javax.net javax.net.ssl javax.security.auth javax.security.auth.callback javax.security.auth.login javax.security.auth.x500 javax.security.cert javax.sql
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有