创业故事之 从Flash到Kjava

Posted 《新程序员》编辑部

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了创业故事之 从Flash到Kjava相关的知识,希望对你有一定的参考价值。

                                                             从Flash到Kjava技术转换中的商机

                                                                                                                   闫辉 / 文
 
如果有一个人告诉你把Flash转变为手机上的KJava程序,你会怎样想?或许很多人会发出这样的看法:神经病啊,Flash就是Flash,干吗要转换成KJava,而且很多智能手机本来就支持Flash,将Flash这种形式转变成KJava又有什么用处呢?
然而,就是有这样一家公司做了这样一件事情,而且做的还很出色,这就是广州飞思公司。他们的这个创意还获得了2003年度的诺基亚开发者S60系列的创造性优胜奖,同时还在2005年初获得了100万美元的风险投资,人员也扩充到了几十人的规模。最近,他们还在和运营商和很多的内容提供商进行合作,对于未来的发展,公司的创始人张键和张齐治相当乐观。
2002年的时候,张键便看到手机上的应用发展空间,于是找到自己的师弟张齐治一起探讨看看在手机应用上能否做一些事情。当时张键提出了两种模式,一个是做手机上的网络游戏,一种是能否将Flash放到KJava平台上运行。
手机上的网络游戏不必细说,但将Flash转换为KJava的想法却需要细细斟酌。张键认为,因为现在KJava应用开发对公司的要求其实还是很高的,除了程序员要学习J2ME的开发知识外,还需要一个包括美工在内的一个团队。而且,由于各手机厂商之间的机型和虚拟机存在差异,往往同一个KJava软件开发完成后,还需要针对不同的机型修改源程序。
而同时,Flash作为Macromedia公司创造出的一种文件格式,在出现之初便因为简单易用,表现形式丰富而迅速被用户所接受。很多人经过简单的学习便成为了Flash的制作者,他们可以单人在一个可视化的环境中进行Flash创作。而且Flash开发工具中还引入了一些脚本语言,在这些交互功能的支持下,网上也出现了大量的Flash小游戏。张键认为,这是一个非常广阔的市场,既然KJava的开发这么复杂,而Flash开发拥有如此大的用户群和高效的开发效率,能否将Flash转换为KJava,直接运行在手机上呢?
张齐治也认为这是个很好的模式,提出,要实现将Flash运行在KJava平台上,有两种方法:一种是自己用Java写一套解释程序,用来解析Flash的脚本和内容,不过很快这种方式被否定了。因为任何一个程序员都明白,在一个虚拟机上再写一套虚拟解释程序的执行效率实在难以保证,而且这将直接和Macromedia公司竞争。
现任技术总监的张齐治在嵌入式开发方面比较有经验,在读研究生的时候就帮助金远见公司(开发文曲星的公司)开发过PDA-GP1288(MIPS CPU)的及时编译(JIT)模拟器,于是他按照这种思想,提出能否将把Flash做反编译为Java的二进制机器码,这样就可以直接在Java的虚拟机上运行。这时,Flash的解释执行变成了编译执行,效率将大大提升。
想法尽管很好,但要真正要实现还面临众多的技术难题。比如首先要实现对Flash文件的解析,将Flash生成的SWF文件进行反编译,将其中的矢量动画资源和脚本资源都抽取出来,将Flash中的脚本的二进制码编译成Java的二进制码,将Flash中的对象转换成Java中的对象。Flash发展到现在,其实已经变成了一种非常复杂的语言,比起复杂度来说,其实并不比KJava简单多少,比如单单库函数的介绍就需要一本厚厚的书,为了能够支持所有的Flash函数,飞思公司组织很多人力把这些接口和即时编译的接口对接起来,以便支持所有的Flash程序。
同时还要非常熟悉Java虚拟机的机制和二进制代码结构,甚至要针对不同的机型做很多工作,张齐治说:“比如对于诺基亚S40的机器,它的操作系统体系结构是单进程的,我们需要研究其线程运作的机制。因为我以前做过虚拟机,所以先根据现象猜测虚拟机是如何运作的,然后写出一段测试代码,判断是否和我猜测是否一致。虚拟机线程切换最主要的问题是如何判断准确的时间片,一般虚拟机的时间片都是以执行的指令计数来确定的,而最常用的有两种方法:一种是所有指令都计数;另外一种方法就是对如跳转指令等特殊指令计数。我们先后按这两种方法进行预测,观察测试代码现象,最后发现S40的虚拟机是根据跳转指令进行计数做线程切换。这样我们在写S40的时候就可以根据这个特性来控制系统切换线程的时机,来达到最优的效果。当我们每开发一款新系列的手机都需要这样很仔细的判断体系结构,并根据发现的不同手机特性把性能做到最优。”
半年后,飞思公司在这两条线上都取得了不错的成绩。网络五子棋程序开发完成后,他们进行了测试。不过,测试的结果不是很令人满意,因为当时的GPRS上网效果比较差,而且他们选择了网络通信中的Socket方案,而当时支持Socket的手机比较少,而且从商务角度上看,飞思也没有很明显的优势。看到了这些问题,更加坚定了飞思发展Flash转换KJava技术的决心,将全部精力都放在了这一技术的开发上。
这些技术的研究花费了飞思公司很长的时间,研究文件格式并做出第一个原型花费了差不多半年时间,然后进一步研究脚本,又花了很长时间,整个构架做完又花了半年,最前期的开发用了一年多,正式的转换程序又花费了两年多的时间。
现在,广州飞思公司的转换程序已经可以支持Flash6开发的大部分程序,包括AS 6.0中的大部分功能都可以直接转换为KJava。原来以月为单位的手机KJava程序开发周期被以周为单位的Flash开发所替代。而且Flash作者在一个统一的可视化开发环境中进行开发,一个人担当美工和程序的工作,效率的提升显而易见。
面对很多人的疑问,张键这样表达这种技术的价值:“假设现在有这样一个工具可以将PC上的Flash转换为VC程序,这也是有价值的。因为这种转换将使之提高效率和性能,而且拥有了可扩展性。总之,我们只是将Flash看作我们整个技术环境的一个组成部分。”
事实上,这种技术的确带来了很多好处:比如可以很容易的适配不同的机型。由于转换中适配各种机型的参数是做到转换程序本身中的,每增加一种可以支持的新机型,这种配置参数就可以保存下来,下次再转换的时候,就可以很容易的调用原来的配置。张键说:“Flash作者只需要将SWF文件给我们,当天就可以制作出KJava程序,而且在这个过程中可以实现自适配。高端手机使用高端配置,低端手机使用低端配置,同时生成适合各种手机的程序包。如果我们不说,根本看不出来和Flash有任何关系,因为其本身就是一个KJava程序。然而,这种转换带来的效率提升是巨大,原来开发一个游戏单单在适配各种机型方面就需要耗费大量的人力和时间。”
不过,仅仅拥有了一种很酷的技术还很不够。最初,张键认为,只要做出了优秀的技术,内容提供商肯定非常愿意使用,这样就可以整合上下游产业链。但经过一些市场推广之后,他们发现并非如此,中国手机内容市场的产业链非常不完整,而且这种技术比较新颖,很多人也不理解。也就是说,市场是非常现实的,你拥有一项核心技术不代表就拥有了市场和合作伙伴。“用户要的是服务,对技术并不感兴趣。”
因此,飞思又不得不去扮演内容提供商的角色,除了搭建自己的内容创作团队外,还需要研发手机Flash和KJava程序运营平台,如Flash-KJava程序的下载,手机图片DIY等服务。按照这种思路。“我们自己既要做技术,也要做运营平台。2003年开始我们和电信运营商进行了合作,2004年和中国移动等运营商也开始深层次的合作。”当然,他们也经常为一些内容提供商做Flash转换方面的服务,不过,这些还没有成为他们的主流业务。
谈及飞思未来的发展,张键有很宏大的目标和清醒的认识。“我们希望未来能够整合国内的Flash作者资源,一起把这个事情做大。而Flash内容中,我们最重视的就是动漫和游戏。”对于动漫来说,读者非常多,但对于作者,中国并没有合适的价值链让好作品获得应有的回报。现在有了飞思的技术,就可以将原来免费看的动漫Flash转变为可以收费的KJava程序,对于Flash作者和内容提供商甚至电信运营商都是一个巨大的机会。“在这个过程中,我们屏蔽了很多技术障碍,Flash作者不需要考虑任何KJava编程知识,运营商也不需要考虑机型问题。”
但要橇动如此大的商业市场,还需要非常大投入和重要的战略合作伙伴。张键表示:“做大是在价值结构和产业链方面,不可能靠我们一家把这个事情做大,新产品和新业务需要众人去推广,不是我们有一个核心技术就一定能够做的很好。当然,我们现在也在做很多工作,比如我们的技术针对未来的3G可以实现无缝的过渡支持。”
嘉宾评点:
在国内,随着技术的发展和创业成功案例的增加,越来越多的程序员走上了创业的道路,
这份敢于尝试的激情是很值得赞赏的,IT业内成功人士王志东、周鸿祎等人也是这么发展起来的。纵观飞思软件的创业故事,我觉得他们确实抓住了一次难得的发展机会。移动增值业务和3G应用是很多目光聚集的领域,我相信在未来的几年里,在手机应用中找到突破点的公司会异军突起。
我看飞思的优点如下:
1、进入领域的时机
飞思软件在2002年就开始研究手机KJAVA应用,在2003年成功完成转换工具的开发,在2004年跟中国移动的顺利合作,这在手机应用领域起步比较早,先行之利很有优势,就有机会领先,领先可以抢占新开辟的市场份额。独特的3G应用在日后的3G增值业务快速发展时,更有着前途不可限量的广阔天地。
2、技术的价值
飞思的创业,切入点是掌握从FLASH到KJAVA转换的技术原理,最终形成转换软件,这与公司技术总监张齐治在技术上的积累是密不可分的。这个产品要求对FLASH的存储结构很熟悉,对KJAVA的模拟机运转机制很了解,对不同操作系统和规格的手机的区别很在行,对程序语言的编译原理很精通,这些技术积累的综合结果产生了飞思公司的产品。在技术上有进入门槛,在内容上提高制作效率,这使得公司制作的内容量大、速度快、成本低,因此竞争力强,这种创业模式我一直很推崇。
3、内容的选择
无线应用最红火的业务就是娱乐内容,在最终产品的选择上,飞思软件的目光锁定在动漫、游戏上,也反映了创业者的眼光。懂得FLASH动画和游戏制作的爱好者很多,公司也给一直免费流传的FLASH带来了通过手机收费的途径,在产业链的整合方面,有一定的优势。但如何增加有吸引力的内容,给内容制作者带来收益,应该是飞思软件重视的问题之一。
不过,还有以下几个要注意的事宜:
1、营销的重要性
擅长技术研发的程序员创业公司,一般而言营销能力比较弱。因此寻找有帮助的合作伙伴很重要。既然要自己运营服务,如何深入到国内各省市的移动公司去落地接入,如何让众多的用户了解和喜欢这项服务,相信是飞思软件发展的重大门槛。
2、坚持之心很重要
“家家都有难念的经”,创业总会不可避免的碰到一些棘手的问题,要相信自己最终能成功,专注在固定的领域中一如既往的努力,扩大自己的市场份额。做到这一点,飞思软件就会发展得更好。
3、如何应对Macromedia等巨头的入侵
公司在草创期、实力弱的时候,很容易被行业巨头所击败。最近有了Macromedia要进入中国的消息,如何制订与Macromedia竞争的策略很重要,听说Macromedia针对的是高端的手机用户,飞思针对的是中低端的手机用户,或许跟这些巨头的合作也是一个共同发展的途径。实力弱的时候要懂得找机会生存下去,借助合作伙伴的力量壮大自己,寻找对手的弱点,推出相应的产品,才能在市场上持续发展下去。 

以上是关于创业故事之 从Flash到Kjava的主要内容,如果未能解决你的问题,请参考以下文章

从单一WAR到多活, 记述一个创业公司的架构演变

从大公司到创业公司,技术人转型怎样转变思路与处事之道?

合作伙伴 | 创业者福利之北京创客空间启动Tech Sandbox

从国企到外企,再到新西兰远程办公,这是我的故事

我的创业故事团队成立

用一个创业故事串起操作系统原理