论道WP(三):应用程序栏
作者通过具体翔实的例子介绍了Winodws Phone 7中应用程序栏的使用方式。
该内容已经被标记书签!
标记书签错误,请重试!

作者 Tim Smith 译者 侯伯薇 发布于 2010年12月17日
首先我们来说说Java。 对于Java你可以从两种许可中选择。 首先,你可以使用(可能带有你自己的修改)OpenJDK中的代码。 其次,你可以基于Java规范创建新的Java实现。
关于OpenJDK没有显而易见的专利许可。 OpenJDK遵循GPLv2,并且一般我们认为当许可码在GPLv2之下时,许可就包含隐式的专利许可。 在2004年,自由软件基金会的高级律师Dan Ravicher对BSD和GPL脆弱的专利保证提出了警告,并建议添加专利赋权。
这意味着隐式专利许可的范围是不确定的。 另一方面,如果你所做的就是使用不经改变的OpenJDK,那么就应该被完全覆盖。 另一方面,如果你做了无法由Java识别的扩展变更,从而违反了Oracle的非Java专利,那么你就可能不在隐式许可的范围之内了。 关于你是否跨越了专利覆盖范围的界限,是非常模糊和不明确的。
如果你选择创建自己的实现,那么就有显式的专利许可。 如果你实现完整的规范,或者你不做严令禁止的改变(向标准类中添加字段和方法,向标准命名空间中添加新的内容,诸如此类),或者你的实现通过了“技术兼容性工具”的测试,那么你就处于许可的范围之内。
主要问题在于TCK的需求。 Sun能够(也这么做了)让不用Java的方式做事的人们无法访问TCK。 对于你的实现,没有TCK,也没有专利许可。 Apache的Geir Magnusson在2007年发表了一封公开信,抱怨说Harmony项目无法“获得Java SE5技术兼容性工具的可接受许可”。
上述的各种方法都无法在Google下工作。 由于很多原因,它们无法采用OpenJDK。 首先,它是GPL。 手机的制造商和销售商希望在其中添加独有的特性,从而和竞争者区分开来,Google觉得,如果处于不允许这样做的许可之下,Android就很难为人所接受。 其次,Java SE(也正是OpenJDK所实现的)并不适合像手机之类的设备。 如果Google让代码变得更像是Java ME,那么它就会位于模糊的区域,没人能够确定是否有某些隐式的专利许可会覆盖它们。
遵循Java SE规范实现它们自己的Java,然后对其进行扩展(要小心地避免对专利许可禁止改变的部分进行变更)可能会有效——但是它们还是会有TCK的问题。 那条路可能会非常困难,因为Sun只是希望Google获取Java ME的许可。
因此,Google只是使用了Java的语法和语义,而没有使用Java虚拟机。 这没有任何专利保护。
现在让我们与.NET做下比较,如果Google使用Mono是否会更安全。 微软针对独立.NET实现的专利许可是微软社区承诺(Microsoft Community Promise)。 和Sun的专利许可一样,它不需要你实现规范中所有强制的部分。 和Sun不一样的是,它不需要你通过特定的测试,但对于做出改善是有限制的。 在特殊情况下你可以实现强制的部分——如果你是金牌伙伴。(如果你对其做出了改善,那些改善不会覆盖在承诺之中,当然,有些地方还是需要注意。)
这样我们马上就能看出来,专利的情形更好一些——你不需要获得微软针对实现的批准,从而获得你的专利许可。 这更符合Google想要做的事情。
Mono实现了规范中的强制部分,也做出了一些改善。 有些改善是对Microsoft .NET framework的实现,它们并非规范的一部分,像WinForms。 Mono的那些部分可能会有专利问题,所以如果Google已经使用了Mono,那些问题最好能够避免。
Google可能已经对Mono做出了修改,使得它更适合手机之类的弱电设备。 那会把它们带到ECMA/ISO规范之外,而导致专利的风险。 然而,微软有一种叫做.NET Micro Framework的产品,它是对Java ME所作出的响应。注意.NET Micro Framework的许可:Apache2。 那个许可带有显式的专利赋权。 如果Google基于Mono和.NET Micro Framework中的代码来创建Android,那么它们很可能已经做出来了,并且所有部分都在微软的专利之下——社区承诺包含了所有ECMA/ISO标准部分,而Apache2许可的专利赋权涉及到对手机的改善。
而实际上微软遵循了开发技术的一般规则。 他们向独立的标准组织提交了C#语言和.NET架构。 他们提供了一种专利许可,它包含了对那些标准的实现,而没有任何限制,而不是带有通用和一般的限制,让你需要实现标准中指定的部分。
Sun没有遵循一般的规则。 他们拒绝把Java提交给独立的标准组织。 他们把一些内容放在专利许可中作为标准,这样你在获得许可之前就先要获得他们的批准。 稍后,他们遵循GPL发布了OpenJDK,那是一种改进,但是他们还是没有把它放在显式的专利许可下,所以无人知道能够对OpenJDK做什么(除了在不修改的状态下使用它),而不会有违反Sun/Oracle专利的风险。
查看英文原文:A Brief Introduction to the Java and .NET Patent Issues
给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家加入到InfoQ中文站用户讨论组中与我们的编辑和其他读者朋友交流。
现在早就没有Sun了.
而现在Oracle的短视行为,才导致了Google对Java的失望.
而不是技术优势.
当然,.net也有比Java好的地方.
但是微软连自己的Windows Phone都没搞好.
我不相信Android迁移到.net平台会是件好事.
直接用Go好了
或者iphone
似乎网上的每一个抠代码的,都觉得自己比Oracle CEO目光更长远
可能是因为Oracle的CEO Larry. Ellison不像Google的那几个创始人是个写代码的人出身吧.
不过,我自己的观点即使错了,也不代表每一个抠代码的人吧.
人家埃里克森好像关注金钱更甚于技术吧.
对此我保留意见.
比较Oracle,我更喜欢Google.
似乎网上的每一个抠代码的,都觉得自己比Oracle CEO目光更长远
,也不能这么说,写代码的和Oracle CEO在看待java上的出发点是不同的,所以观点不同是很自然的,这扯不上目光长远与否。
关于这些争议是sun时代就有的啊!只是sun没有这么多精力在这个上面计较。而且sun直到被收购,和google之间一直都有诉讼的。
而且很明显,没有google这么强大的实力,像MS,Oracle,Apple这样发展,我觉得更现实。(这3家应该都被自由软件基金会批评了很多了)
不是观点不同,而是很多抠代码糊口的自觉得自己目光很深远
在多线程并发编程中Synchronized一直是元老级角色,很多人都会称呼它为重量级锁,但是随着Java SE1.6对Synchronized进行了各种优化之后,有些情况下它并不那么重了,本文详细介绍了Java SE1.6中对于锁的性能优化,以及锁的存储结构及升级过程。
本次分享将首先介绍现代富文本编辑器的组成和实现,然后结合UEditor的开发过程,与参会者分享UEditor在设计和实现的过程中,所涉及到的核心功能的细节实现。
本次演讲视频录制于百度技术沙龙。
我们所开发的应用程序大多都需要提供一个图形用户界面(GUI)。关于GUI应用的架构设计,已经有了Form & Control、MVC,、MVP、 Passive View等多种模式。模式可以帮助我们建立优雅的架构,但前提是弄清楚模式的应用场景。弄清楚GUI应用面临的设计上的问题,有助于我们正确的挑选设计方案。
MongoDB是一种非常易用的NoSQL方案,Brian C. Dilley在这篇文章里介绍了MongoDB的优劣势,并介绍了MJORM项目。MJORM用于MongoDB,是一个没有注解的Java ORM库。
随着网络基础设施的逐步成熟,从RPC进化到Web Service,并在业界开始普遍推行SOA,再到后来的RESTful平台以及云计算中的PaaS与SaaS概念的推广,分布式架构在企业应用中开始呈现出不同的风貌,然而殊途同归,这些分布式架构的目标仍然是希望回到建造巴别塔的时代,系统之间的交流不再为不同语言与平台的隔阂而产生障碍。
精益软件开发方法因其对市场和交付的重视和在各种场景下体现出的适应能力正在获得广泛的关注。特别是在精益创业(Lean Startup)渐渐兴起和技术日新月异的今天,其"极端"的思想也变得越来越必要和可行。 InfoQ就此主题对他做了深入的采访。
9 条回复
关注此讨论 回复