`
nisen
  • 浏览: 77697 次
  • 性别: Icon_minigender_1
  • 来自: 河北 石家庄
社区版块
存档分类
最新评论

[Java江湖]Java的分裂之争权夺利

阅读更多

Java自出生以后,Sun(现在是Oracle)就竭力维护Java防止分裂,但是Java分裂在不断的发生着。几个有名的Java分裂如下

  • MicroSoft对Java的分裂 :这个分裂出现在Java的幼年时期,那时候Java跟现在的HTML5一样是绝对明星,大家都在追捧她。这时MS推出了Visual J,并且在自己的浏览器里安装了一个自己实现的applet插件,Visual J开发确实有自己的优势,但是并不完全兼容Sun的Java,所以毫无意外的MS成了被告了,这个官司拖了几年,最后和解,MS赔钱。详细的内容可以见李维的《Broland创奇》。这次分裂以Sun完胜为结局
  • SWT/Swing之争 : 这两个都是完整的GUI库,对于这两者都有很多支持者和反对者,但是当人们用Java做一个GUI程序的时候,都会碰到如何选择的问题。这个也是大公司之间的倾轧的结果,SWT背后是IBM和Eclipse基金会,而Swing顶着标准的帽子,从市场占有来看SWT有后来居上的劲头。这次分裂以SWT小胜为一个阶段,后续如何发展我们拭目以待。
  • Harmony和Sun : 对于使用非Sun公司JDK并不算是分裂,如Oracle、BEA(进入Oracle)、IBM、基于GNU开源的Kaffe 、OpenJDK,这些取得了授权可以叫JDK。唯独基于Apache协议的Harmony没有获得Sun的认可, Apache社区的人很火,因为按照JCP的规定这样是不行的,所以Apache社区给Sun公司写了一封公开信,要求回应,当然直到Sun被收购也没有回应。在此后,JCP投票的时候Apache一律反对,没有理由,就是要求Sun遵守JCP的规定。Servlet3.0等一系列JSR就是在这样投票下被通过。Apache社区的人积极实现相关的JSR,如Tomcat7.0就实现了Sevlet3.0。扯远了,这次分裂以Sun实际胜利和Apache道义上胜利结束,同时也为下次的分裂埋下了伏笔。
  • Harmony、Android、Java :说起Android大家应该都知道,但是如果说起Harmony和Android的关系可能只有很少人知道了,在Android的API中你肯定会发现很多java.*和javax.*,这些很多都是使用了Harmony中的开发的类库,以前Harmony的开发者邮件列表中经常有android的开发者报类库的bug。Android系统使用的是Java的语法+Java的核心类库+Android的类库+Android的虚拟机,不兼容的类文件格式和打包格式。老外对于Java的核心类库加虚拟机起了一个名称叫JDK Lite,精简的JDK。这次算是Java阵营里分裂的最彻底了,但是Google的东东不叫Java,只是使用了Java语法,兼容核心类库,Sun/Oracle也没招。在Android发布后很多开源的Java社区都陆续公布了自己在Android的兼容性,很多Java开发的底层库考虑同时兼容Android和JavaSE。如果没有Harmony,google也许没有那么快发布android,毕竟核心类库的开发是一项既有体力还有脑力的劳动,所谓上面我说Harmony为下次分裂埋下了伏笔,就是指Android借助了开源的力量。这次分裂对Java程序员来说是好事,Android胜利,JavaME败北。
  • GAE:GAE 呢相当于把JDK搬到了云端,具体google如何实现的呢,我们不知道,但是可以肯定的是,一定有开源代码的帮助。GAE公布后很多Java社区也是马上测试和GAE的兼容性。这次分裂影响不大,毕竟大家把自己的网站让google托管的比例不大。 在中国影响为0点几几,毕竟中国网络条件和google都不成熟。
  • 未来的分裂 :google使用了Java的语法,扩大了Java程序员,没准其他的人也使用Java,而不叫Java,如Visual J#,如有可能的iPhone SDK for Java(目前还没有出现,给苹果提个醒 )。分裂意味着壮大,意味着Java不再由某个公司把持,意味在Java这个江湖里不再有老大,会变得更加多边。

参考

  1.  精简JDK的一个实现  http://greenvm.googlecode.com/  
  2. Android: http://www.android.com/
  3. Harmony:http://harmony.apache.com

 

分享到:
评论
11 楼 nisen 2010-08-02  
小胜只是因为它是后来者,却占据了很大的份额。诚然很多有多年历史的程序都是用Swing来开发的如ArgoUML、freemind、JEdit,但是Swing却没有保住自己老大的地位,新的项目开始之前都会对选择SWT/Swing进行取舍。关于小胜还是平分秋色,如果后来者抢了前面的大部分市场可以谓之小胜,你称之为平分秋色也可,但是分裂已经形成了,而且还会继续。

carlkkx 写道
SWT/Swing之争 : 这两个都是完整的GUI库,对于这两者都有很多支持者和反对者,但是当人们用Java做一个GUI程序的时候,都会碰到如何选择的问题。这个也是大公司之间的倾轧的结果,SWT背后是IBM和Eclipse基金会,而Swing顶着标准的帽子,从市场占有来看SWT有后来居上的劲头。这次分裂以SWT小胜为一个阶段,后续如何发展我们拭目以待。
——————————————————————————————
如果不基于Eclipse,独立的软件来说Swing远远多于SWT,何来什么SWT小胜。

10 楼 carlkkx 2010-07-22  
SWT/Swing之争 : 这两个都是完整的GUI库,对于这两者都有很多支持者和反对者,但是当人们用Java做一个GUI程序的时候,都会碰到如何选择的问题。这个也是大公司之间的倾轧的结果,SWT背后是IBM和Eclipse基金会,而Swing顶着标准的帽子,从市场占有来看SWT有后来居上的劲头。这次分裂以SWT小胜为一个阶段,后续如何发展我们拭目以待。
——————————————————————————————
如果不基于Eclipse,独立的软件来说Swing远远多于SWT,何来什么SWT小胜。
9 楼 nisen 2010-07-21  
JavaME至今仍是装机最多的手机开发平台。
linkerlin 写道
J2ME不会马上淘汰的,我现在用的E63上还有很多J2ME应用呢。
很好用啊。
我觉得普通用户不会在意到底是啥技术的。
好用便宜就行啊。
真的玩技术的有多少呢?
普通用户的市场才是最大的吧?

8 楼 linkerlin 2010-07-19  
J2ME不会马上淘汰的,我现在用的E63上还有很多J2ME应用呢。
很好用啊。
我觉得普通用户不会在意到底是啥技术的。
好用便宜就行啊。
真的玩技术的有多少呢?
普通用户的市场才是最大的吧?
7 楼 nisen 2010-07-18  
GAE应当不会支持JavaEE规范,或者宣称自己符合JavaEE规范。因为他们玩法不是规范的玩法。
francis.xjl 写道
GAE我觉得还不成熟,J2EE规范支持得仍然远远不够。

6 楼 francis.xjl 2010-07-17  
GAE我觉得还不成熟,J2EE规范支持得仍然远远不够。
5 楼 nisen 2010-07-16  
iPhone上模拟器不火,但是Android上的模拟器估计会很火。当然现在也有了很多模拟器。J2ME程序在Android上会以模拟器方式出现。

moderating 写道


iphone不会支持java的,新的开发条款已经明确禁止object c以外的平台,包括各种虚机。乔不死对虚机的憎恨全世界都知道,sun曾经提交过jvm到app store,被拒了,flash player,拒了,GBA模拟器,拒了。不过要是乔不死也挂了,就难说了。。。这位能活到啥时候,我觉得这个才是行业最大变数把,:)



4 楼 zhs2472 2010-07-16  
顶楼上,混饭吃要紧
3 楼 yvfish 2010-07-16  
话说,天下大势,分久必合,合久必分。
我等小民只是混口饭吃,这些大事咱们就当听评书好了。。。
2 楼 Teok 2010-07-16  
j2me还是死吧。。。前2天跟了一个模拟器上不能复现的真机bug,着实让我恶心不已。。
想想android的联机调试。。哎
1 楼 moderating 2010-07-15  
j2me早就该死了,刚看到android api的时候真是觉得大快人心

gae支持java只是讨好开发人员,google还是觉得python更适合gae,gae-java用着很别扭,迟早悲剧。企业自建自营it系统的模式迟早退出,由第三方支撑的各种app市场是更好的模式,生产、运营、消费能够清晰的划分,意义很重大。所以gae这样的,当不了主角。亚马逊悲剧了

iphone不会支持java的,新的开发条款已经明确禁止object c以外的平台,包括各种虚机。乔不死对虚机的憎恨全世界都知道,sun曾经提交过jvm到app store,被拒了,flash player,拒了,GBA模拟器,拒了。不过要是乔不死也挂了,就难说了。。。这位能活到啥时候,我觉得这个才是行业最大变数把,:)

我觉得吧,传统意义的java到头了,有代沟了都。借java的壳倒是很有前途。未来也不会再出现一统江湖的语言和平台了,细分市场是趋势。未来的入门程序员该更头痛了吧。。。

相关推荐

    基于连通图的分裂聚类算法java数据挖掘算法源码.rar

    综上所述,这个压缩包包含了一个基于连通图的分裂聚类算法的Java实现源码,对于学习数据挖掘、算法实现和Java编程的人来说是一个宝贵的资源。通过深入学习和理解源码,开发者不仅可以掌握聚类算法的工作原理,还能...

    决策树Java代码实现

    在决策树算法中,选择哪些特征来进行分裂是非常重要的步骤之一,这通常基于某种信息增益标准来完成。 ### Java代码解析 #### 包声明与导入语句 代码以包声明 `package cn.liip.jcs;` 开始,并且导入了必要的类库...

    非官方镜像的蕨花Java反编译器的子树分裂.zip

    非官方镜像的蕨花Java反编译器的子树分裂

    java-hbase开发包

    2. **预分区表**:根据数据分布预测表的大小,并预先创建Region,以减少数据增长时的Region分裂。 3. **使用合适的数据模型**:根据业务需求选择合适的列族和列,避免过度设计或数据冗余。 4. **优化过滤器**:...

    Isolation Forest 源码Java版

    《Isolation Forest 异常检测算法的Java实现详解》 在大数据时代,异常检测成为了一项重要的任务,特别是在电商和金融领域,及时发现并处理欺诈行为对于企业的安全至关重要。Isolation Forest(隔离森林)是一种...

    JAVA高级工程师笔试题(技术部分).pdf

    知识点:面向对象是 Java 语言的核心概念之一,考察的是候选人的面向对象编程能力和编程思想。解决这个问题需要候选人具备良好的面向对象编程基础知识和编程思想。 7. 集合框架:ArrayList 和 HashSet 的区别,...

    id3 决策树 Java实现

    在Java中实现ID3决策树涉及到以下几个核心概念和技术: 1. **数据预处理**:在构建决策树之前,首先需要对数据进行清洗和格式化。这包括处理缺失值、异常值,以及将非数值特征转换为数值型,以便于计算。 2. **...

    层次聚类算法的java实现

    在Java中,可以使用`java.util.List`或者自定义数据结构来存储数据点,通过`java.util.ArrayList`或`java.util.LinkedList`来实现动态调整大小。计算距离矩阵通常采用欧几里得距离、曼哈顿距离或余弦相似度等方法,...

    Java特效处理技巧

    2. **分裂效果/人造生物:** 创建独特的分裂动画或模拟生物动作。 3. **图形特效:** 提供各种图形变化特效,如旋转、缩放等。 4. **3D动画:** 支持创建简单的3D动画效果,增加页面深度感。 5. **导航菜单:** 帮助...

    B+ tree的java实现

    下面将详细讨论如何用Java实现B+树。 首先,B+树的节点分为两种类型:内部节点(或索引节点)和叶子节点。内部节点存储键值,不存储数据,而叶子节点则同时存储键值和对应的数据。在Java实现中,我们通常会创建两个...

    ISODATA java代码工程

    这个"ISODATA java代码工程"提供了一个用Java编写的ISODATA算法实现,它适用于JDK7环境,并且在部署后可以直接运行。 ISODATA算法的核心思想是通过迭代的方式不断调整数据点的类别归属,同时合并或分裂类别,直到...

    基于java实现的 决策树之 ID3 算法

    在本案例中,我们将探讨如何用Java实现ID3算法,这是一种早期的决策树学习算法,由Ross Quinlan于1986年提出。 ID3(Iterative Dichotomiser 3)算法基于信息熵和信息增益来选择最优特征进行分裂。信息熵是度量数据...

    JAVA B+树的实现

    本文将深入探讨如何在Java环境中实现B+树,包括其基本概念、特性以及如何用Java代码来构建和操作B+树。 首先,B+树是一种自平衡的多路搜索树,它的主要特点是所有叶子节点都在同一层,并且每个非叶子节点只存储键值...

    id3(java).rar_Data mining_ID3 in java_id3 java_java i_java ID3

    ID3算法在构建决策树时,会选择信息增益最大的属性作为当前节点的分裂标准,直到所有数据被完全分类或者没有更多的属性可以分割。 在Java环境下实现ID3算法,通常需要以下步骤: 1. **数据预处理**:处理原始数据,...

    java编写的烟花效果

    粒子系统则是通过创建大量小型图形(粒子)来模拟复杂的视觉效果,例如,每颗烟花爆炸后可能会分裂成许多小火花,这些火花有自己的生命周期和轨迹,进一步增强了烟花的逼真度。 事件处理可能用于启动和停止动画,...

    R树的Java实现

    如果这个节点已满,那么会分裂成两个或更多的节点,并将新点分配到其中一个节点。 - 查询:在进行范围查询时,R树首先检查根节点,如果查询区域与根节点的边界有交集,就继续检查其子节点,直到找到所有可能的数据...

    决策树java

    2. **分裂节点**:基于选定的特征,数据集被分割成多个子集,每个子集对应于特征的一个可能值。 3. **停止条件**:这个过程会一直持续到满足某个停止条件,例如所有实例属于同一类别、剩余实例数量小于某个阈值或者...

    决策树算法(Java实现)

    决策树生成算法的Java实现,可能还有一些BUG,没有做仔细校验与测试,完成主要功能。决策树具体详解移步:http://blog.csdn.net/adiaixin123456/article/details/50573849 项目的目录结构分为四个文件夹algorithm,...

    java版本 BTREE源码

    Java版本的Btree源码提供了在Java环境中实现B树的功能,这对于数据存储、数据库索引以及排序操作等场景具有重要意义。在这里,我们将深入探讨B树的基本概念,其在Java中的实现细节,以及如何利用这个源码来理解和...

    java 决策树Demo2

    - ID3(Iterative Dichotomiser 3)是最早的决策树算法之一,基于信息熵进行特征选择。 - ID3算法步骤:选择最优特征 -> 递归构建子树 -> 构建决策规则。 3. **C4.5算法** - C4.5是ID3的改进版,解决了ID3对连续...

Global site tag (gtag.js) - Google Analytics