how Google routed around Sun’s IP-based licensing restrictions on Java ME

Google Android与Java ME的竞争

Sun released their “free java” source code under the GPLv2 to both win the free software crowd and capture peripheral innovation and bug fixing from the community. For the java standard edition (aka “the cat is out of the bag”) there is an exception to the GPLv2 that makes it “reciprocal” only for the Java platform code itself but not for the user code running on it (or most people wouldn’t even dare touching it with a pole).

But such exception to the GPLv2 is not there for the mobile edition (aka “where the money is”).

This brilliant move allows Sun to play “free software paladin” on one hand and still enjoy complete control of the licensing and income creation for the Java ME platform on mobile and embedded devices on the other (because cell phone makers would rather pay than being forced to release all their code that runs on the phone under the GPLv2… or, in many cases, they can’t even if they wanted to as they don’t own the entire software stack).

Which is also why their TCK license they offer for free to Apache to certify Harmony (which is a ’standard edition’ implementation but could be easily turned into a mobile edition one) includes ‘field of use’ restrictions. It’s funny that Sun’s own CEO considers the very same ‘field of use’ restrictions ridiculous (but only when it is Sun to have such field of use restrictions applied on them, apparently), but Sun imposes them nevertheless and no open letter has been able to change their position.

This is the stall in which Google announced the release of their Android platform, which would be able to run Java applications on a mobile phone but it would also be released under the Apache License v2.

This raised more than one eyebrowse, and sure did make me raise mine: how did Google manage to get Sun to license off a platform that could very well kill their own?

Turns out, they didn’t: their move was even smarter than Sun’s.

Today Google released the Android code and I took a serious look at its internals… and found the solution for the licensing problem. It’s called Dalvik and it’s the new name of Sun’s worst nightmares.

Dalvik is a virtual machine, just like Java’s or .NET’s, but it’s Google’s own and they’re making it open source without having to ask permission to anyone (well, for now, in the future expect a shit-load of IP-related lawsuits on this, especially since Sun and Microsoft signed a cross-IP licensing agreement on exactly such virtual machines technologies years ago… but don’t forget IBM who has been writing emulation code for mainframes since the beginning of time).

But Android’s programs are written in Java, using Java-oriented IDEs (it also comes with an Eclipse plugin)… it just doesn’t compile the java code into java bytecode but (ops, Sun didn’t see this one coming) into Dalvik bytecode.

So, Android uses the syntax of the Java platform (the Java “language”, if you wish, which is enough to make java programmers feel at home and IDEs to support the editing smoothly) and the java SE class library but not the Java bytecode or the Java virtual machine to execute it on the phone (and, note, Android’s implementation of the Java SE class library is, indeed, Apache Harmony’s!)

The trick is that Google doesn’t claim that Android is a Java platform, although it can run some programs written with the Java language and against some derived version of the Java class library. Sun could prevent this if they had a patent on the standard class library, but they don’t and, even if they did, I strongly doubt it would be enforceable since Android doesn’t claim to be compatible (and in fact, could very well claim that their subset/superset is an innovation on the existing patent and challenge Sun’s position).

Not only this allows Google to avoid having to battle thru the JCP for any change to the Java ME “standard” or tolerate Sun’s unique ability to veto any JCP change, but gives users a much more ‘fresh‘ and modern class library to play with and built-in hooks to all the hardware features of your phone, including things like OpenGL, bluetooth, USB and all those things, which don’t come with the standard Java ME and therefore cannot be taken for granted by the developers.

So, here we are: Apple makes the iPhone, incredibly sweet, slick and game-changing and yet incredibly locked. Google makes Android and not only unlocks development abilities on the mobile phone but also unlocks millions of potential Java mobile programmers from Sun’s grip on it.

Plus, they’re targeting 3G phones, not the crappy 2.5G that the iPhone supports now.

Screw the iPhone and screw Java ME with all its profiles, midlets and the stupid requirement to crypto-sign your application to run on your own phone: I can hardly wait to get my hands on hardware that can run Android… and if they can’t support multi-touch out of the box because Apple owns patents on it, I’ll download the patch that enables it from a country where such nonsense doesn’t apply.

Update and Errata (a few things worth pointing out):

  • The Android SDK does not compile your Java source code into Dalvik’s bytecode directly, but it first uses a regular java compiler to generate regular java bytecode (say, javac or the built-in Eclipse compiler) and then converts that bytecode into Dalvik’s bytecode (the “dx” tool does this: converts .class/.jar into .dex files). Still, the substance remains: there is no need to ship a java virtual machine on your Android-powered phone and you can use your regular Java standard edition to develop your phone application (means, you don’t need to use Java ME anywhere at all).
  • Google has released the binary SDK for Android and only the source code for the examples. It did indeed contribute patches to the Linux kernel to support 3G Qualcomm chipsets (under the GPLv2, so that it wouldn’t create a impedance mismatch in the kernel ecosystem) but it has not, to this day, released the source code for Android itself even if it has explicitly claimed in their announcement that they will do that in the future and under an Apache License v.2. I strongly doubt this will include source to every single piece of the Android middleware (the video codecs seem the hardest part to relicense) but I really hope that the Dalvik VM itself will be open sourced or a lot of the appeal of this platform will just vanish.
  • A good friend reminded me that there is no such thing as “routing around” IP licensing restrictions and that bigco routinely use shake-up moves like these to re-establish alliances or to call other bigco’s bluff. It is worth nothing that Sun has never made available a public list of the IP they own and that you need to license in order to legally be able to run Java (personally, I think they don’t know themselves: such things are really tricky to figure out, even internally). All their licensing deals (including the one with Microsoft) have been broad and very general and there is no way for us of knowing if Android infringes even just one of the patents that Sun owns around the Java platform (my friend suggests java’s internal security manager, which is clever and original, but that depends on whether Dalvik supports the same model or a sufficiently different one to stand in court).
  • The Apache License v2 forces the contributor to license the IP along with the code but only the IP that the contributor owns (you can’t give away stuff others own, obviously). This means that if Android does, in fact, use some of Sun’s IP, it is entirely possible for Sun to sue any hardware vendor that ships Android with their phones and prevent them from shipping. Also, Sun could knock at your own door and ask you to license the Java IP that you need to be able to run Android on your phone (in case, say, you bought an OEM phone and installed the software yourself) even if there is no trace of ‘java’ on your phone memory.
  • Sun is under fire for IP issues related to ZFS and they claimed that it’s an “attack on free software”. I’m curious to see how they’re going to spin their own IP attack on Android (because I bet there’s going to be one).
<think>好的,用户遇到的问题是在使用Altium Designer进行PCB设计时,DRC检查报错“Un-Routed Net Constraint ### Net Not Assigned”,特别是涉及到顶层未分配网络的多边形(可能是铺铜区域)的约束问题。需要解决这个问题,同时还要处理Dead Copper和未分配网络的错误。 首先,我需要回忆一下Altium Designer的相关知识。铺铜(Polygon Pour)如果没有正确分配网络,会导致DRC报错,因为铺铜区域没有连接到任何网络,形成Dead Copper。同时,未分配网络的走线或过孔也可能导致Un-Routed Net错误。 接下来,用户提到的错误涉及顶层多边形未分配网络,并且存在Dead Copper,所以需要检查铺铜设置。可能的原因包括铺铜的网络属性未正确设置,或者铺铜区域没有与相应网络的焊盘连接。另外,Dead Copper通常指未连接到指定网络的孤立铜区,需要确认是否应保留这些区域,或者是否需要调整铺铜的设置以移除它们。 解决方案可能包括以下几个步骤:检查铺铜的网络分配,确保铺铜属性中的网络与设计中的网络一致;调整铺铜的优先级或重新绘制铺铜区域以确保正确连接;运行设计规则检查后的错误定位和修复。 还需要考虑设计规则中Un-Routed Net和Dead Copper的相关设置,比如是否允许Dead Copper存在,或者是否需要调整规则严格性。此外,用户可能需要检查PCB上是否存在未正确连接的走线或过孔,导致网络未分配。 最后,用户可能需要参考Altium Designer的官方文档或社区解决方案,例如引用[1]和[2]提到的内容,来确认具体的操作步骤和注意事项。确保在解决问题时,所有铺铜和网络连接都符合设计规范,避免后续生产问题。</think>针对PCB设计中“Un-Routed Net Constraint Polygon Top Layer No Net Dead Copper”问题,解决方案如下: ### 一、核心解决步骤 1. **检查铺铜网络分配** - 双击顶层铺铜区域打开属性面板,在`Net`下拉列表中选择目标网络(如GND) - 确保`Remove Dead Copper`选项已勾选[^1] ```text 示例路径:PCB Editor > Polygon Properties > Net Assignment ``` 2. **更新铺铜连接** - 右键铺铜选择`Polygon Actions > Repour Selected`重新生成铺铜 - 使用`Tools > Polygon Pours > Shelve X Polygons`临时隐藏后重新铺铜 3. **验证网络连接** - 在3D模式下使用`View > Connections > Show Net`检查物理连接 - 对未连接的焊盘手动添加走线或过孔 ### 二、Dead Copper处理方案 $$ \text{Dead Copper面积} = \text{铺铜总面积} - \text{有效连接区域} $$ 1. 允许保留时:在规则检查器中设置`Design > Rules > Manufacturing > Polygon Connect Style`放宽约束 2. 必须清除时:调整铺铜边界避开孤立区域,或缩小铺铜网格间距至8mil以下 ### 三、进阶调试方法 | 检查项 | 操作路径 | 预期结果 | |--------|----------|----------| | 网络拓扑验证 | `Reports > Board Information > Nets` | 显示完整网络树 | | DRC规则配置 | `Design > Rules > Electrical > Un-Routed Net` | 阈值设置为100% | | 差分对检测 | `Interactive Routing > Differential Pair` | 显示等长标记 | **注**:近期Altium 24版本更新后,需特别注意新版铺铜引擎对复杂焊盘的支持改进,建议更新至24.3以上版本[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值