无线和无声媒体论文(5)
撰写于:2015年3月20日
作者:silex Wi-Fi专家
Java:一次编写,随处运行
在1990年代末,“Java革命”这个词在网络和报纸上广为流传。有人说操作系统将不再需要,英特尔和微软的统治即将结束,然后这一切就像什么都没发生过一样过去了。那到底是为什么呢?
Java是由Sun Microsystems公司开发的一种编程语言,其特点是能够在虚拟机代码上运行。无论在哪种CPU或操作系统上,只要实现了虚拟机(JVM:Java Virtual Machine),相同的Java程序就能以相同的方式运行。Sun Microsystems公司将这一特性宣传为“一次编写,随处运行(Write once, run everywhere)”。
Java之所以在媒体上引起轰动,不仅仅是因为技术原因,还因为Sun Microsystems、Oracle和Netscape三家公司共同提出了“以Java为中心的下一代网络构想”(这更像是一个大新闻)。其中心是“网络计算机(NC:Network Computer)”构想。NC是一种没有硬盘驱动器(HDD)和光驱(CD-ROM)的设备。将这个设备连接显示器、键盘和鼠标,并接入互联网,然后无论是网络浏览器还是文字处理软件,所有的应用程序都可以从网络上下载,并通过Java来运行的计算机概念。
由于Java在虚拟机上运行,因此NC内部的CPU可以是任何型号,即使操作系统或CPU的架构发生根本性变化,只要保持JVM(Java虚拟机)的规格,Java程序就能以相同的方式运行。这正是产生“英特尔和微软的统治即将结束”这种评价的原因。
然而,无论是NC还是Java,都没有实现最初所预言的未来。这其中有几个原因:Java的执行效率较低,频繁的版本更新和规格混乱,不同Java实现之间的兼容性问题,微软与Sun之间的法庭斗争以及Windows中JVM的标准废止,以及竞争技术的出现等。今日,Java的最广泛传播的后裔可能是Google Android采用的Dalvik(虽然它是Java的“方言”,沿用了基本构想和语法,但没有直接的互操作性),但这与90年代所预言的“Java革命”的未来景象相去甚远。
IPv6:我们仍在等待的未来
IP地址是基于32位的,理论上大约有40亿种组合。IPv4是在1980年代设计的,当时互联网的连接点大多是一个地点(如大学、大型企业研究所、国家机构等),每个地点最多也就几十台设备,所以32位的规模足以连接世界上所有的据点,并且还有足够的余量。然而,到了90年代,随着普通个人开始接入互联网,网络规模呈爆炸性增长,IP地址的消耗速度也越来越快。40亿个IP地址的总量开始显得捉襟见肘,IP地址枯竭只是时间问题。
以扩大地址空间为主要目标的下一代互联网架构开发项目被称为“IPNG (IP Next Generation)”,1995年12月,IP版本6(IPv6)被正式采纳为IPng。最初预计,即使需要经历一段长达10年左右的共存和过渡期,IPv4也将被完全替换。然而,这一预期已经大幅偏离了轨道。自IPv6公布以来已经过去了20年,但至今“互联网”或“TCP/IP”的主角仍然是IPv4,而IPv6只不过是“尚未被淘汰”、“在某些地方仍在使用”的存在。
90年代人们担心的“IP地址枯竭问题”究竟怎么样了呢?实际上,这个问题并没有消失。IP地址仍在逐渐且稳定地减少。只是与90年代的预期相比,减少的速度大幅放缓了。这种放缓要归功于一种权宜之计的发明——“NAT (Network Address Translation)”。
NAT(※注)允许在一个连接到广域互联网的点上只使用一个“广域的IP地址”,而在企业内部或家庭内的本地网络则使用如192.168.x.x等的“本地IP地址”进行通信。当本地网络尝试访问广域互联网时,NAT通过“转换”本地地址和广域地址来提供表面上的透明性。
在90年代的设想中,每台连接到互联网的设备都需要分配一个广域的IP地址。然而,随着NAT的引入,每个家庭或设施只需要一个广域的IP地址就足够了,这使得IP地址的消耗速度降低了数十到数百倍。
(※注)NAT在普通人群中通常被称为“路由器”,但这个术语并不总是准确的。同样,将用于广域互联网连接点的设备称为“调制解调器”也是不准确的。
互联网研究人员认为,NAT只是一种权宜之计,由于IPv4地址的枯竭是不可避免的,因此应该尽早迁移到IPv6,实现“真正的下一代互联网”。此外,他们还批评了由NAT构成的网络,认为它缺乏对称的透明度,是一种“扭曲的”东西,阻碍了互联网的本来发展性。
然而,与技术人员和研究人员所追求的“完美技术”相比,市场更倾向于支持“当前可用的技术”。IPv6是否会在某个地方取得突破,并完全取代IPv4,或者IPv4是否会作为“不受欢迎的上个世纪的技术”继续被长期使用,目前还完全不清楚。
JPEG2000: 有人依然爱你
JPEG是今天使用最广泛的图像格式之一。JPEG是Joint Photographic Experts Group的缩写,这个名称也是该格式生成委员会的名字。正式的图像格式名称是JFIF(JPEG File Interchange Format),有时也根据算法的名称被称为DCT-JPEG(DCT:Discrete Cosine Transform,离散余弦变换)。
1992年制定的DCT-JPEG作为一种“在需要的时候提供所需功能”的发明,在互联网上的图像格式或数码相机的图像格式中,可以说得到了爆炸性的普及。而JPEG委员会为未来的下一代在2000年发布的新格式就是JPEG2000。
JPEG2000采用了离散小波变换(DWT: Discrete Wavelet Transform)这一算法,取代了之前的离散余弦变换。虽然DWT的计算量大约是DCT的10到20倍,但如果要达到相同的图像质量,DWT能够实现大约只有DCT一半的数据量压缩。在计算机的计算能力每几年翻倍增长的时代,人们曾认为DWT的计算量最终将不再是问题,并且由于其高画质/压缩比等各种优点,人们曾考虑过JPEG2000将最终取代DCT-JPEG。
然而,自问世以来已经过去了15年,JPEG2000不仅没有普及,甚至几乎被遗忘。原因有很多,但最主要的是,与计算机的计算能力相比,网络连接速度以及硬盘驱动器(HDD)和闪存(Flash Memory)的容量有了更大的增长,因此,仅仅提高约两倍的压缩率已经不再是一个显著的优势。实际上,上传到互联网上的JPEG的量化系数(信息丢弃单位)已经变得越来越小,为了提高图像质量,使用最小值=1填充量化表的所谓“无压缩JPEG”(实际上并不是真正的无压缩,因为DCT系数的小数部分会被丢弃,所以还是会进行量化)也越来越常见。
在计算速度方面,实际上的差异远不止10到20倍。DCT以8x8像素的区块为单位进行处理,因此通过拥有多个处理区块的硬件,可以实现数倍的计算速度提升(许多数码相机就是这样做的)。然而,DWT需要处理整个画面的数据,因此不像DCT那样容易并行化。此外,JPEG2000是一个非常复杂的格式,特别是被称为标签树的按位数据结构,其实现非常繁琐(※注)。
(※注)当我实现JPEG2000的解析器时,我参考了两本书,但两本书中关于标签树的示例数据及其解析示例都是错误的(而且还是在不同的地方),这真是让人头疼。
DCT-JPEG有“图像大小限制为16位 x 16位”和“每个像素的信息深度限制为8位”的限制,因此不适合需要超高分辨率和高再现性的应用(如医疗和科学图像分析)。能够处理32位 x 32位,12位/像素的JPEG2000在这些领域中得到了使用,但也可以说它只在需要这种特殊需求的情况下才被使用。
在JPEG2000实际上失败之后,2006年发布了JPEG-XR(原型是微软开发的HD Photo)。这次采用了名为“提升(lifting)”的算法代替小波变换,并且在JPEG2000中不受欢迎的计算量和并行性方面进行了改进。每个像素的深度信息被扩展到32位,可处理的颜色模型范围也得到了扩展,因此人们期待它能够直接压缩数字相机的图像传感器信息,适用于RAW模式。然而,与JPEG2000一样,由于闪存价格的下降和容量的增加,即使是“无压缩RAW”也没有太大的问题,JPEG-XR也没有显示出普及的迹象。
MNG:无人问津的发明
1999年,对于此前与JPEG并列作为互联网标准图像格式的GIF(Graphics Interchange Format),Unisys公司突然宣布要征收专利费,这使得互联网陷入了一种恐慌状态。关于GIF事件的详细情况就不在这里赘述了,但作为不侵犯Unisys的LZW专利的替代格式,PNG(Portable Network Graphics)被开发并普及了。
GIF有一个特点,那就是“动画GIF”。动画GIF是将多张静态图像捆绑在一起,通过在一定时间间隔内依次显示这些图像的“翻页漫画”方式来实现动画效果。然而,作为旨在“超越GIF”的替代品而开发的PNG,不知何故却没有动画功能。实际上,动画功能原本应该通过一个名为MNG(Multiple-image Network Graphics)的独立项目来实现。
动画GIF是基于简单的翻页漫画原理,因此在一系列动作中如果出现相同的图像,就需要多次重复捆绑相同的数据,这导致其在容量效率上有不足之处。MNG通过采用引用方式解决了这个问题,相同图像的数据可以被重复利用,从而提高了效率。如果MNG制定委员会在那时停下来就好了,但充满理想和善意的他们却不断增加了新特性,比如“可以将背景和移动物体放在不同的层中进行合成”、“可以对移动物体进行放大、缩小、旋转等变形”、“根据层所需的特性,允许PNG、JPEG等不同格式的混合使用”等,最终使得MNG远远超出了“图像格式”的范畴,变成了一个类似于动画系统的庞大而复杂的规格。
对MNG来说不幸的是,作为一个“庞大而复杂的动画系统”,Macromedia Shockwave Flash(后来被Adobe公司收购,成为Adobe Flash)已经是一个商业软件了(※注)。尽管MNG是免费许可的,但几乎没有能够正常工作的实现(MNG的播放系统很少,能够生成MNG的系统就更少了),而只要付费,就可以获得一个可靠运行并提供支持的Flash系统。Flash的竞争力是压倒性的,特别是企业网站纷纷采用Flash,而MNG则完全没有普及的迹象。
(※注)MNG只能“移动图像”,而Flash不仅可以同步播放声音,还可以响应鼠标输入,实现互动性。尽管Flash正在逐渐失去其一度的势头,但使用嵌入在HTML中的JavaScript语言来实现动画和互动性的例子越来越多。在HTML5中,这种“动态网页”的功能得到了显著扩展,一些心急的评论者甚至写道“专用应用程序的时代已经结束了”,但未来究竟如何,只有上帝知道。
看到MNG的苦战,制定委员会削减了过于复杂的功能,定义了一个子集版本称为“MNG-LC(Low Complexity)”,并进一步大幅削减功能,降至与动画GIF相当的水平,定义为“MNG-VLC(Very Low Complexity)”。然而,那时引发问题的Unisys公司的LZW专利已经失效,GIF再次被广泛使用。面对一度沉寂但几乎所有浏览器都标准支持、制作工具也相当丰富的动画GIF,MNG-VLC被认为“如果只是那种程度的话,用GIF就可以了”,因此最终还是没有普及起来。
IM: CQ, CQ...
IM是Instant Messenger的缩写。以1996年推出的ICQ为首,Microsoft Messenger、Yahoo! Messenger、AOL Instant Messenger等产品相继问世,它们各自争夺用户数量。
在那之前,互联网上的信息交换主要通过电子邮件和BBS来实现,但这两种方式都需要花费一定的时间来交换相对完整的文字信息,对于想要轻松闲聊的交流来说并不方便。在家庭互联网还依赖拨号上网的时代,这种情况尚可接受,但随着宽带连接的普及,人们开始寻求更实时的互联网通讯方式,IM正是在这样的时代背景下应运而生并迅速普及。
最初的IM仅仅是一个简短文本交换系统,但随着视频聊天功能、语音通话功能、音视频数据(如图像、视频、音乐等)共享功能的不断增加,一方面发展成了像Skype这样的视频电话系统,另一方面则成为了与Facebook和Twitter等SMS(社交媒体服务)相竞争的工具,IM逐渐变成了一个“两边都不靠”的存在。随着移动电话和智能手机的普及,运营商提供的短信服务开始被频繁使用,这种服务的使用感觉更接近于打电话(※注),这也成为IM用户流失的一个原因。
今天,IM服务仍在继续,但似乎已经失去了一段时间的势头。实时短文交换这种通信方式并没有过时,但它正在通过其他方式(如Skype Message、Twitter、手机短信)实现,而专门用于此的IM服务似乎正在逐渐失去其存在的位置。
(※注)在美国,发短信被称为Texting,随着智能手机的普及,一边开车一边发短信(Texting)被批评为增加了交通事故的风险。
WEB2.0: 到底是什么?
根据维基百科,“WEB2.0”这个术语是在2005年由蒂姆·奥莱理(Tim O'Reilly)提出的。当时这个术语非常流行,到处都是关于“面向WEB2.0时代的各种讨论”的杂志文章和研讨会,但WEB2.0具体意味着什么,从当时到现代一直都很模糊。至少作为网络基础技术规范的HTTP协议只有“1.1版本”(※注)。
(※注)在90年代,曾经考虑过使用ASN.1 PER格式的HTTPng,但由于实现起来非常麻烦,而且与现有的HTTP完全不兼容,所以很快就无人问津并消失了。截至2014年,以Google公司为中心,正在研究“HTTP/2”,这是一款在保持与HTTP/1.1兼容的同时提高效率和功能的产品。
如果我们坚持支持WEB2.0,那么这个术语并不是指特定的实现规格或技术,而是试图指代在“互联网的存在是理所当然的”、“连接是理所当然的”这一前提下,信息与人的互动方式正在发生变化的现象。当出现一些不熟悉的术语时,人们会先查看Wikipedia而不是查字典,想要了解店铺或餐厅的位置时,会先查看Google Maps而不是地图,或者在Facebook上分享活动照片而不是仅仅拍摄……在这些背后,ADSL和LTE网络、SOAP/XML和Javascript、数据中心和虚拟机服务器等技术正在运行。我认为“WEB2.0”这个术语指的不是这些单独的组成部分,而是它们实现的新价值和新的人类行为模式。
话虽如此,新技术改变人的价值观和行为(广义上的创新)并不是在2005年突然发生的惊天动地的大事件,而是自人类历史开始以来一直在持续不断地发生的事情。火的发现、文字的发明、活字印刷、蒸汽机等都极大地改变了人类的行为。在信息设备的历史中,也出现了诸如“电子计算机的发明”、“个人电脑的实用化”、“连接全球的数字网络的实现”等重大创新,与之相比,WEB2.0带来的变革更像是微不足道的一部分。
许多技术人员对“WEB2.0”这个流行术语抱有反感,这可能是因为他们认为这种程度的东西被赋予了一个过于夸张的名字,以及媒体将这种技术过度夸大为一项了不起的重大发明。幸运或不幸的是,这种情况至今并没有太大改变。
总结
“只是困难时的老生常谈”,我回忆了一些令人怀念的词汇。Java和IPv6至今仍有许多热情的信徒,如果你不小心说“Java已经过时”或“IPv6已经不再需要”,可能会遭到激烈的反驳。但对于那些了解这些技术曾经被预言的未来的人来说,现实是“它们并没有消失,但与过去所说的未来完全不同!”。
像WEB2.0这样的“流行术语(password:Buzz word)”至今仍然不断被创造和使用。比如“M2M(Machine To Machine)”曾经一度流行,但很快就消失了,取而代之的是“物联网(IOT, Internet Of Things)”和“万物互联(IOE, Internet Of Everything)”等词汇开始流行起来。这些似乎也是有点虚无缥缈的概念,给人一种“想把很多机器连接到互联网,然后一按开关就能做到各种事情!”的豪迈感觉。记得当Java流行的时候,也有说法是连咖啡壶和手表里都会装上Java,而IPv6则是要给每一支荧光灯管分配地址,感觉最终想要做的事情并没有变,只是贴在上面的标签变了。
不过,了解过去的事情,就不会对每一个流行术语都感到激动或愤怒,而能够冷静地看待它们。正如史蒂夫·乔布斯所证明的那样,炒作也是伟大创新的一个要素。在炒作中,总会有一些东西最终会出现,改变我们的行为或价值观。
相关文章
Silex 产品信息
我们的技术和产品旨在建立设备之间的通信,并确保这种通信能够顺畅地稳定进行。而且,更重要的是,使用 Silex 技术和产品的客户可以绝对放心。 我们正是致力于实现这一目标。