摩托罗拉收购开源Web框架Cappuccino

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/shendaiming/article/details/83699790
摩托罗拉进入宣布,收购280 North公司。原因是看中了280 North公司开发的一个开源Web框架—“Cappuccino”,可以创建富Web应用并为Mac OS X创建桌面应用。

摩托罗拉称,这次收购将为公司的产品提供基于Web技术的支持,将有助于Android生态系统的扩张。 据报告,收购价估计在2000万美金左右。

Cappuccino介绍
Cappuccino是一个开源的应用程序框架,它的目的是让使用者开发出观感和桌面程序相同的Web应用程序。
Cappuccino 建立于JavaScript等标准的Web技术之上,它实现了的大部分GNUstep和Cocoa框架。当您使用Cappuccino的时候,无需考虑那些复杂的传统网络技术,像HTML、 CSS ,甚至DOM等。那些烦复的跨浏览器的事情,这个框架已经完全将它们抽象出来了。
Cappuccino 采用了一种新的的叫做Objective-J的编程语言,这是以Objective-C为蓝本,完全构建于JavaScript。用Objective-J编写的程序在客户端中被解释,所以无需编译和任何插件。
展开阅读全文

评谷歌对摩托罗拉移动的收购

08-16

今天发生的最大的新闻莫过于谷歌把摩托罗拉手机给收购了,这种巨鳄之间的吞噬和共生必将对整个移动通讯乃至整个IT行业产生深远的影响。rnrn当前的智能手机市场最耀眼的明星莫过于苹果的IPhone和谷歌的Android,这两大炙手可热的智能系统早将老迈的Nokia和微软的WP7远远的抛在了身后。rnrn与封闭的IOS不同,开源的Android由于本身的开源机制和太过年轻,在行业巨头沉积多年的专利壁垒下,诸如HTC之类的Android厂商面临着巨额的专利授权成本。HTC也太过年轻,几乎没有什么手机相关的专利,所以吃了亏也只好掏血本了事。rnrn但摩托罗拉不同,作为手机行业的曾经的巨头,专利规模和质量完全可以与苹果、微软这些玩家抗衡。貌似微软在对HTC的Android侵权官司从HTC上得手后就是准备故伎重演摩托罗拉,但遭到摩托罗拉的专利反击才罢手的。rnrn作为互联网巨鳄的谷歌在手机领域并没有多少专利,有也是关于互联网的,而且谷歌并没有手机产品线,这次将曾经行业三大头得摩托罗拉收购到自己手里,一石N鸟,完全是非常明智之举,也非常震撼。rnrn摩托罗拉在这股IOS发端的智能手机浪潮中一开始就完全投入到Android的怀抱,虽然到目前为止也没有完全的一振当年的辉煌,但这次投身谷歌的怀抱,对摩托罗拉移动的所有股东和员工来说绝对是一件好事。rnrn这桩收购案必将对整个手机行业产生深远影响,对整个Android阵营整体力量的壮大来说应该是一件有利的事情,但对不同的Android厂商,估计就各有各的命运了。rnrn这一切取决于谷歌的抉择和战略了。rnrn未来的谷歌移动公司是要近水楼台是必然的,但如果做的太绝,让当前的Android 阵营里的其他成员没了活路,那最终应该对谁不是什么好事。rnrn相反,如果Android仍然还是坚持一如既往的开源、包容,又有谷歌移动这个具有崇高威信的带头大哥,那么,对整个Android生态链,对谷歌本身,都是非常光明的。rnrn125亿美元,应该并不太贵。rnrn我只是在想,My God,本来已经伟大的谷歌,未来的谷歌,会演变成是什么样子?rnrn//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////rnrnhttp://tech.163.com/11/0815/19/7BH8H3EM000915BF.htmlrnrn网易科技讯 8月15日消息,谷歌和摩托罗拉移动公司今日宣布,谷歌将以每股40.00美元现金收购摩托罗拉移动,总额约125亿美元,相比摩托罗拉移动股份的收盘价溢价了63%,双方董事会都已全票通过该交易。rnrn谷歌CEO拉里·佩奇表示,摩托罗拉移动完全专注于Android系统,收购摩托罗拉移动之后,将增强整个Android生态系统。佩奇同时表示,Android将继续开源,收购的一个目的是为了获得专利。摩托罗拉移动将作为独立业务继续运营。rnrn摩托罗拉首席执行官桑贾伊·杰哈表示,此次收购为摩托罗拉移动全球员工、消费者和合作伙伴创造了新机会。摩托罗拉原本在Android平台与谷歌存紧密的合作关系,通过这次合并将得以进行更多创新,为各种移动设备和家用设备提供一流的移动性。rnrn上周五美股收盘,摩托罗拉移动报收24.47美元,此次谷歌每股40美元的报价相比其收盘价溢价63%。rnrn据悉,本次交易还需获得美国、欧洲和其他国家监管部门批准和摩托罗拉股东的批准。预计该交易将于2011年底或2012年初完成。rnrn 论坛

Cappuccino : The Proper Clone

12-18

Cappuccino : The Proper Clonern1. Cloning is the process of creating a copy of an object.rn2. Java provides a mechanism for objects to create copies of themselves by using the java.lang.Cloneable interface and the Object.clone() method.rn3. The Object.clone() method is protected, so only subclasses of Object and classes in the same package can access the method.rn4. The Object.clone() method is declared as native. Because it is native, its implementation lies within the JVM itself.rn5. If your object tries to call the Object.clone() method without implementing the Cloneable interface a CloneNotSupportedException will be thrown.rn6. A shallow copy of an object is a copy in which only the primitive and reference values are copied to the new object. This means that object members like ints, floats, and booleans have the same values in both the new and existing objects, but object members like arrays, Hashtables, Vectors, and so on are shared between the new and existing objects.rn7. A deep copy of an object differs from a shallow copy because all nonprimitive object members are cloned as well. In a deep copy, if an existing object has a Vector object as a member, a clone operation on the existing object results in a new object being created that points to a new Vector object as well.rn8. In addition to shallow and deep copies, a mixture of the two can be used. One such mixture, which I will call a mutable deep copy, would copy only those objects that can be changed (mutable), but it would not copy objects that cannot be changed (immutable).rn9. It is important to realize that you do not need to create copies of immutable objects when cloning. Because the object values themselves cannot change you would only be wasting memory. It is important, though, to make copies of mutable objects to prevent different copies of an object from sharing references to the same mutable object.rn10. JurassicPark.java Source Codesrnpackage org.jfml.cappuccino;rnrnrnimport java.util.*;rnrnrnpublic class JurassicParkrnrn public static void main(String[] args)rn rn Dinosaur d1 = new Dinosaur("d1", "Patrick", "Vegetarian", 120.4);rn rn Dinosaur d2 = (Dinosaur)d1.clone();rn d2.setName("d2");rn d2.setCloner("Tony");rn d2.setType("Carnivoe");rn d2.setWeight(451.3);rn rn System.out.println(d1.toString());rn System.out.println("\n");rn System.out.println(d2.toString());rn rnrnrnrnclass Dinosaur rn implements Cloneablernrn private String name;rn private Scientist cloner = new Scientist();rn private Hashtable attributes = new Hashtable();rn rn public Dinosaur(String name, String clonerName, String type, double weight)rn rn this.setName(name);rn this.setCloner(clonerName);rn this.setType(type);rn this.setWeight(weight);rn rn rn public void setName(String name)rn rn this.name = name;rn rn rn public String getName()rn rn return this.name;rn rn rn public void setCloner(String clonerName)rn rn this.cloner.name = clonerName;rn rn rn public Scientist getCloner()rn rn return this.cloner;rn rn rn public void setType(String type)rn rn this.attributes.put("Type", type);rn rn rn public String getType()rn rn return (String)this.attributes.get("Type");rn rn rn public void setWeight(double weight)rn rn this.attributes.put("Weight", new Double(weight));rn rn rn public double getWeight()rn rn return ((Double)this.attributes.get("Weight")).doubleValue();rn rn rn public Object clone()rn rn Dinosaur dns = null;rn rn try rn rn dns = (Dinosaur)super.clone();rn dns.cloner = (Scientist)this.getCloner().clone();rn dns.attributes = (Hashtable)this.attributes.clone();rn rn catch (Exception e)rn rn e.printStackTrace();rn rn rn if (null == dns)rn rn throw new RuntimeException(this.getClass().getName() + ".clone() failed.");rn rn rn return dns;rn rn rn public String toString()rn rn returnrn (rn "Name: " + this.name + "\n" +rn "Cloner: " + this.cloner.name + "\n" +rn "Type: " + this.getType() + "\n" +rn "Weight: " + this.getWeight()rn );rn rnrnrnrnclass Scientistrn implements Cloneablernrn public String name;rn rn public Object clone()rn rn Scientist st = null;rn rn try rn rn st = (Scientist)super.clone();rn rn catch (Exception e)rn rn e.printStackTrace();rn rn rn if (null == st)rn rn throw new RuntimeException(this.getClass().getName() + ".clone() failed.");rn rn rn return st;rn rnrn 论坛

Cappuccino : Local Variables & Performance

01-17

/**rn * File LocalVariablePerformancer.javarn * Date 2003-1-17rn * Time 14:56:29rn * rn */rnpackage org.jfml.cappuccino;rnrn/**rn * 如果您频繁存取变量,就需要考虑从何处存取这些变量。rn * 变量是 static 变量,还是堆栈变量,或者是类的实例变量?rn * 变量的存储位置对存取它的代码的性能有明显的影响?rn * rn * Method void stackAccess(int)rn * 0 iconst_0 //将 0 压入堆栈。rn * 1 istore_2 //弹出 0 并将它存储在局部分变量表中索引为 2 的位置 (j)。rn * 2 iconst_0 //压入 0。rn * 3 istore_3 //弹出 0 并将它存储在局部变量表中索引为 3 的位置 (i)。rn * 4 goto 13 //跳至位置 13。rn * 7 iinc 2 1 //将存储在索引 2 处的 j 加 1。rn * 10 iinc 3 1 //将存储在索引 3 处的 i 加 1。rn * 13 iload_3 //压入索引 3 处的值 (i)。rn * 14 iload_1 //压入索引 1 处的值 (val)。rn * 15 if_icmplt 7 //弹出 i 和 val。如果 i 小于 val,则跳至位置 7。rn * 18 return //返回调用方法。rn * rn * Method void instanceAccess(int)rn * 0 iconst_0 //将 0 压入堆栈。rn * 1 istore_2 //弹出 0 并将它存储在局部变量表中索引为 2 的位置 (i)。rn * 2 goto 18 //跳至位置 18。rn * 5 aload_0 //压入索引 0 (this)。rn * 6 dup //复制堆栈顶的值并将它压入。rn * 7 getfield #19 rn * //弹出 this 对象引用并压入 instVar 的值。rn * 10 iconst_1 //压入 1。rn * 11 iadd //弹出栈顶的两个值,并压入它们的和。rn * 12 putfield #19 rn * //弹出栈顶的两个值并将和存储在 instVar 中。rn * 15 iinc 2 1 //将存储在索引 2 处的 i 加 1。rn * 18 iload_2 //压入索引 2 处的值 (i)。rn * 19 iload_1 //压入索引 1 处的值 (val)。rn * 20 if_icmplt 5 //弹出 i 和 val。如果 i 小于 val,则跳至位置 5。rn * 23 return //返回调用方法。rn * rn * Method void staticAccess(int)rn * 0 iconst_0 //将 0 压入堆栈。rn * 1 istore_2 //弹出 0 并将它存储在局部变量表中索引为 2 的位置 (i)。rn * 2 goto 16 //跳至位置 16。rn * 5 getstatic #25 rn * //将常数存储池中 staticVar 的值压入堆栈。rn * 8 iconst_1 //压入 1。rn * 9 iadd //弹出栈顶的两个值,并压入它们的和。rn * 10 putstatic #25 rn * //弹出和的值并将它存储在 staticVar 中。rn * 13 iinc 2 1 //将存储在索引 2 处的 i 加 1。rn * 16 iload_2 //压入索引 2 处的值 (i)。rn * 17 iload_1 //压入索引 1 处的值 (val)。rn * 18 if_icmplt 5 //弹出 i 和 val。如果 i 小于 val,则跳至位置 5。rn * 21 return //返回调用方法。rn */rnrnrnpublic class LocalVariablePerformancerrnrn private int instVar;rn private static int staticVar;rn rn //存取堆栈变量rn void stackAccess(int val)rn rn int j=0;rn for (int i=0; i 论坛

Cappuccino : Memory Leak & SoftReference

12-17

// 好冷啊~煮杯Cappuccino给大家尝尝,下面是偶整理的一点小东西rn1. Java也存在内存泄漏。rn2. Java的内存管理就是对象的分配和释放问题。在Java中,程序员需要通过关键字new为每个对象申请内存空间 (基本类型除外),所有的对象都在堆 (Heap)中分配空间。另外,对象的释放是由GC(垃圾回收器)决定和执行的。rn3. 在Java中,内存的分配是由程序完成的,而内存的释放是有GC完成的。rn4. 回收对象的根本原则就是该对象不再被引用,但是Java使用有向图的方式进行内存管理,可以消除引用循环的问题,例如有三个对象,相互引用,只要它们和根进程不可达的,那么GC也是可以回收它们的。rn5. 在Java中,内存泄漏就是存在一些被分配的对象,这些对象有下面两个特点,首先,这些对象是可达的,即在有向图中,存在通路可以与其相连;其次,这些对象是无用的,即程序以后不会再使用这些对象。如果对象满足这两个条件,这些对象就可以判定为Java中的内存泄漏,这些对象不会被GC所回收,然而它却占用内存。rn6. 在Java中也有内存泄漏,但范围比C++要小一些。因为Java从语言上保证,任何对象都是可达的,所有的不可达对象都由GC管理。rn7. 根据JLS定义,System.gc()函数不保证GC一定会执行。rn8. Vector v = new Vector(10);rnfor (int i=1;i<100; i++)rnrn Object o = new Object();rn v.add(o);rn o = null;rnrn// 此时,所有的Object对象都没有被释放,因为变量v引用这些对象。rn9. 根据JLS,JVM保证调用finalize()函数之前,这个对象是不可达的,但是JVM不保证这个函数一定会被调用。另外,规范还保证finalize函数最多运行一次。通常,finalize用于一些不容易控制、并且非常重要资源的释放,例如一些I/O的操作,数据的连接。rn10. Java程序员应该以通过程序本身管理(包括释放)这些资源为主,以finalize()函数释放资源方式为辅,形成一种双保险的管理机制,而不应该仅仅依靠finalize()来释放资源。rn11. Java2增强了内存管理功能, 增加了一个java.lang.ref包,其中定义了三种引用类。这三种引用类分别为SoftReference、WeakReference和PhantomReference。通过使用这些引用类,程序员可以在一定程度与GC进行交互,以便改善GC的工作效率。这些引用类的引用强度介于可达对象和不可达对象之间。它们的引用强度由小到大如下所示:rn 不可达对象 --> PhantomReference --> WeakReference --> SoftReference --> 可达对象rn12. Soft Reference的主要特点是据有较强的引用功能。只有当内存不够的时候,才进行回收这类内存,因此在内存足够的时候,它们通常不被回收。另外,这些引用对象还能保证在Java抛出OutOfMemory 异常之前,被设置为null。它可以用于实现一些常用图片的缓存,实现Cache的功能,保证最大限度的使用内存而不引起OutOfMemory。rn13. 如果程序允许,尽早将不用的引用对象赋为null。这样可以加速GC的工作。rn14. 尽量少用finalize()函数。rn15. SoftReferenceTester.java Source Codes,测试一下SoftReference的效果。rnpackage org.jfml.cappuccino;rnrnrnimport java.lang.ref.SoftReference;rnimport java.util.Vector;rnrnrnpublic class SoftReferenceTesterrnrn public static Vector storage = new Vector();rn public static SoftReference storageWithSR = rn new SoftReference(new Vector());rn rn public static void callWithoutSoftReference()rn rn MartialBase[] mbs = new MartialBase[9999]; rn rn for (int i = 0; i < mbs.length; i++)rn rn System.out.printlnrn (rn "Creating No." + i + " MartialBase object"rn );rn mbs[i] = new MartialBase();rn rn rn rn public static void callWithSoftReference()rn rn //MartialBase[] mbs = new MartialBase[9999]; rn SoftReference[] mbs = new SoftReference[9999];rn rn for (int i = 0; i < mbs.length; i++)rn rn System.out.printlnrn (rn "Creating No." + i + " SoftReference(MartialBase) object"rn ); rn //mbs[i] = new MartialBase(); rn mbs[i] = new SoftReference(new MartialBase());rn rn rn rn public static void main(String[] args)rn rn SoftReferenceTester.callWithoutSoftReference(); // No.1 Testrn //SoftReferenceTester.callWithSoftReference(); // No.2 Testrn rnrnrnrnclass MartialBasernrn String name;rn rn B2[] b2s = new B2[100];rn rn public MartialBase()rn rn for (int i = 0; i < b2s.length; i++)rn rn b2s[i] = new B2();rn rn rnrnrnrnclass B2rnrn String serialNumber;rn rn Bomb[] bombs = new Bomb[100];rn rn public B2()rn rn for (int i = 0; i < bombs.length; i++)rn rn bombs[i] = new Bomb();rn rn rnrnrnrnclass Bombrnrnrn 论坛

福兮祸兮?- 议Google收购摩托罗拉移动

08-18

2011年8月15日晚,据传Google 将以 40 美元现金每股,总价 125 亿美元,收购摩托罗拉移动。其收购总价比照上周五的收盘价格溢价 63%,这次收购正在等待双方董事会批准。如果此事为真,那么它会引起什么轩然大波呢?从这次收购事件中,我们看到了什么?本篇博客主要以笔者自身对行业的认知,谈一下自己的看法,不代表任何组织,纯属个人观点!rnrn【我们看到了什么?】rn* 移动互联网的收购新特征。以前是传统公司搞互联网业务,而现在互联网公司开始兼并传统公司。谷歌收购摩托罗拉是一个典型的例子,这说明移动互联网市场巨大,互联网公司需要统一线上和线下,将用户资源牢牢掌握在自己手中。rnrn* 专利是剑,专利是盾,持之能攻守兼备。谷歌收购摩托罗拉移动不是历史的偶然,而是必然!前有微软对Android厂商的专利收费,Apple对三星、HTC等Android厂商的专利大棒打压,后有甲骨文对谷歌Android系统的侵权诉讼,甚至连美国德州的一家小公司Lodsys也开始向Android和ios的开发人员发难专利。rnrn【谁在哭泣?】rn* Android的手机移动厂商。对三星、HTC和索爱等Android手机移动厂商而言,谷歌收购摩托罗拉移动是坏消息。虽然谷歌宣称对Android的定位没有变化,谷歌将继续作为一个开放的系统,一个充满活力的开源社区运营,并继续和其他厂商合作,开发并发售新的终端,但是对手机移动厂商而言,它们真的天真的相信了吗?估计很多已经是被“绑架”了,上船容易下船难!建议三星、HTC和索爱,组成移动版S.H.E,在谷歌门口大唱“只为爱上你”:-)。rnrn* Interdigital。本以为拍了结婚照就可以高枕无忧了,但是“小三“的出现,让Interdigital以泪洗脸。公司的股票累计上涨的72%,是否会在一夜之间成为”你是我永远的痛“!rnrn【谁是可能的赢家?】rn* 摩托罗拉。125亿现金对现在的摩托罗拉而言是非常开心的一件事情,至少可以解决当前的诸多问题。手机不做了,还可以做基站,只要有钱,沦落为“什么什么道“有什么关系吗?今夜狂欢!rnrn* 微软。谷歌即当裁判员,又开始当运动员了。那些被“逼良为娼“的手机移动厂商们,是否考虑使用一下mango操作系统呢?至少不会像以前痴痴地为Android的大美人茶不思饭不想,痛了之后,应该长记性了。做事情,不能一棵树上吊死啊!rnrn* Nokia。如果Android阵营出现了分裂,那么对使用windows7的Nokia而言是利好消息。Android的逃离者在左盼右顾后发现,现有的最好选择恐怕是windows 7了。这对于搭建windows7的生态系统,丰富应用是非常有利的,Nokia的硬件不输给任何竞争对手,现在软件生态系统的改善,对它是非常有利的,难道不是吗?rnrn* Intel。如果微软能够在这次收购事件中获得好处,那么根据以往两家公司的关系,Intel的产品一定会有用武之地!rnrn【我们的大胆行业设想是什么?】rn* Apple收购RIM。谷歌都能够收购摩托罗拉移动,为什么Apple不能够为了专利收购RIM呢?RIM有价值50亿美元的优良专利资产,又有企业用户资源和先进的技术储备,按照当前的经营状况,150亿拿下它问题不大。Apple,你的750亿美元难道就是为了每天看着乐哈哈吗?rnrn* 微软收购Nokia。以前一直说我软,我总要硬一把吧!既然谷歌能够收购手机移动硬件厂商,为什么微软不能够也这么做呢?以前担心会损害合作伙伴,现在害怕什么呢?三星、HTC、索爱,你还能往哪里去呢?!rnrn本次收购不仅仅关系到钱,还关系到整个行业发展的趋势。谷歌是否能够在这次收购中大获成功,还是会折戟沙场,让我们拭目以待!rnrn原文地址:[url=http://g.csdn.net/5193963]http://g.csdn.net/5193963[/url] 论坛

2006开源数据库:面临竞争和收购何去何从?

01-19

共同回顾2006,开源数据库发生的事情rnrn摆在开源数据库面前的“收购毒饵” rnrn 近年来,数据库领域的开源数据库公司和产品常常面临被收购的危险,更何况还有Oracle这个收购“狂人”在推波助澜。继2005年10月份Innobase公司及其开源数据库InnoDB被Oracle收购之后,2006年2月份,位于美国加州的开源数据库厂商Sleepcat公司及其旗下产品BerkeleyDB数据库也被商业数据库巨头Oracle收购了。并在这之后,Oracle还试图收购另一开源数据库厂商MySQL——但是,MySQL的首席执行官在2006年7月份的一次技术论坛上对此表示,希望“保持MySQL公司的独立性”,从而拒绝了Oracle的“好意”。 rnrn 从InnoDB和BerkeleyDB的技术特性上来看,Oracle最想收购的也许是MySQL。 rnrn InnoDB和BerkeleyDB技术在一段时间之内,曾是MySQL数据库中的关键性技术。InnoDB采用GPL许可协议,被捆绑在MySQL数据库中。MySQL曾经普遍地使用InnoDB做为自己的事物型数据存储引擎。而Sleepycat的Berkeley DB曾是MySQL的一个重要的嵌入式事物型存储引擎——MySQL在最初并没有属于自己的用于负责数据的物理存储和索引的存储引擎。 rnrn InnoDB曾经是MySQL 5中的一个核心部分。在被Oracle收购之后,MySQL出于自己的某些考虑,在2006年2月底宣布采用Firebird数据库架构来取代InnoDB——InnoDB是Firebird社区中讨论得最热烈的。但是,MySQL要把Firebird变成企业级的关系事务处理型的数据库引擎,还需要付出很大的努力。而在2006年4月份,有分析人士认为 MySQL会考虑把SolidDB做为自己的事物存储引擎,以替代被Oracle收购的InnoDB。事隔3个月之后,2006年7月25日,Solid Information Technology公司宣布,其专门为MySQL量身定做的Beta版SolidDB Storage Engin正式对外发布。 rnrn 从表面上看,对Sleepcat的收购可以拓展Oracle对嵌入式DBMS(Database Manage System,数据库管理系统)的支持。针对移动设备,Oracle已经拥有了自己的Oracle Lite;而对于高性能分析和高速处理的内存应用程序,Oracle有TimesTen DBMS。被收购的Sleepcat旗下的Berkeley DB数据库,可以给Oracle提供嵌入式应用市场的需求。这样也许可以确保Oracle在嵌入式数据库领域,保持自己在商业数据库领域的惯有地位。对于在商业市场上已经存在了9年的Sleepcat,它已经拥有了一批忠诚客户拥趸。而Oracle对它的收购,其潜在的本意也许是看中Sleepcat的这个客户基础。 rnrn 从另一方面来看,归为Oracle门下,可以为Berkeley DB带来更主流用户市场的需求,并且可以通过Oracle的销售力量和客户支持组织为BerkeleyDB带来更多的产品影响力。但事实上,这次收购并不暗示着Oracle计划把TimesTen或Berkeley DB整合到Oracle 10g或Oracle Lite中。Berkeley DB并不使用SQL,也不支持PL/SQL。而Oracle的战略是为不同层次的嵌入式DBMS应用,提供合适的DBMS解决方案。Oracle旨在利用其已经宣布出去的不同的接口和工具,促进不同类型数据库之间数据的流通。“替他人做嫁衣裳”的事情,Oracle不会去做的。 rnrn 同样在2006年2月份,Oracle对BerkeleyDB完成收购之后,MySQL并没有“束手待毙”。MySQL随后以很快的动作收购了基于Web应用技术的Netfrastructure公司,并且把Netfrastructure的创始人Jim Starkey聘为MySQL的高级软件架构师。Starkey被认为是关系型数据库的先锋,是InterBase数据库(InterBase被认为是第一款支持触发器、事件警告、数组、多版本的数据库)的创始人,他在嵌入式Firebird数据库项目中扮演着关键性角色。Jim Starkey的加入,也许可以帮助MySQL抵御来自Oracle的入侵。比较有趣的是,MySQL同时还雇佣了Starkey的妻子Ann Harrison做一些兼职性的工作。MySQL对Jim Starkey可谓是“负责到底”,解除了他的“后顾之忧”。 rnrn 2006年9月份,随着MySQL 5.1.12的发布,MySQL去除掉了对BerkeleyDB存储引擎的支持。对此,有分析人士认为这也许是与Oracle收购Sleepcat有关系,是对Oracle的一种变向的“反击”。有人猜测MySQL下一个要抛弃的也许会是InnoDB。但MySQL官方对此表示:MySQL不会抛弃InnoDB,而对于BerkeleyDB的放弃完全是出于技术原因。而实际上,MySQL与InnoDB的“合作契约”在2006年就到期了。MySQL抛弃InnoDB与否,已经无关紧要了。 rnrn 发生在2006年初的这宗开源数据库收购案,对于数据库业界的而言,有人形容是一个有趣的2006年的开始。也许到2007年,还会有一些开源数据库被纳入Oracle的旗下。 rnrn 不相伯仲 rnrn 时常被收购阴影笼罩的MySQL在2006年年底又受了一次小小的“打击”。在2006年11月期《Linux Journal》杂志的“2006年度开源数据库编辑选择奖”评选中,号称“世界上最流行的开源数据库”MySQL却名落孙山,取而代之的却是“世界上最先进的开源数据库”PostgreSQL。 rnrn 但是,在2006年7月份,MySQL公司及其数据库产品被Forrester调查研究公司提名为“开源领军人物”。这是唯一的一家公司及其产品,同时在Forrester的两份调查报告中被作为“领军人物”提名(这两份报告分别是《The Forrester Wave: Open Source Databases(2006年第二季度)》和《The Forrester Wave: Open Source Projects(2006年第二季度)》)。 rnrn 抛开《Linux Journal》和Forrester的权威性不谈,摒弃各位编辑和分析人士的好恶不论,一旦谈论开源数据库领域的领军人物,MySQL和PostgreSQL总是不相上下。 rnrn 2006年的6月份,PostgreSQL庆祝了自己的10岁生日。并在当月升级更新的Sun Solaris 10中,被全面支持——Sun在2005年11月份就最初宣布支持PostgreSQL,并且雇佣了PostgreSQL核心团队成员Josh Berkus,担任Sun数据库技术的PostgreSQL的领导人。之后,在同年8月份,以PostgreSQL为基础的开源数据库EnterpriseDB同样获得Sun选择,以为Sun公司提供技术支持及相关的专业服务。 rnrnrn “阳光”照亮开源数据库? rnrn 无论是主流商业数据库巨头对开源数据库的觊觎,还是一些大型软件厂商对开源数据库的支持,都证明了开源数据库已经形成了一定的影响力。 rnrn 目前的开源数据库市场为3亿美元,并且正在以大约8%的增长率持续快速的增长。按照这个速度,到2008年的市场份额大约为10亿美元。与开源数据库相关的需求和咨询在2005年增长了50%,对于开源数据库的推进有很大作用和影响。在2006年,开源数据库的关键性部署增长了大概20%。而在余下的2年中,更多的数据库厂商将会被吸引,以在自己的产品中应用或支持开源开源技术。 rnrn 来看一下来自Gartner/IDC的一些分析和调查数据: rnrn 到2008年,将有70%以上的IT组织使用开源数据库。 rnrn 到2008年,MySQL将会成为关键应用的重要选择。 rnrn 被调查公司中的40%计划用开源数据库取代私有商业数据库管理系统。 rnrn 被调查公司中的49%的已经在使用MySQL,17%计划使用MySQL。 rnrn  同时,Gartner还把MySQL称作开源市场内最强大的“新生力量”——这个称号也许有些言过其实。rn 论坛

没有更多推荐了,返回首页