前言
PREFACE
中国人的电脑要使用自己设计的CPU,这个曾经的梦想已经成为现实。龙芯CPU的性能不断提升,龙芯电脑和操作系统不断完善,龙芯公司已经把软件生态建设提升到发展战略的高度,全方位展开面向开发者的推广活动,建立龙芯应用公社,联合高校开展基于龙芯CPU的计算机基础教育,一场围绕中国自主设计CPU的IT生态建设大戏即将开演。
对于软件开发者来说,转移到龙芯电脑从事开发工作只是时间早晚的问题。在过去30年中,开发者在Intel和Windows联合打造的信息化基础平台上创造了难以胜数的应用软件,在面对龙芯这个新平台时难免会望而生畏。笔者接触的很多开发者在初次接触龙芯电脑时都有无从下手的感觉。如果有一本书能够针对有经验的开发者全面讲述龙芯电脑的操作系统、软件环境和开发工具,重点介绍龙芯电脑与X86电脑的差异,清晰梳理整个软件栈的组成关系,再辅之以翔实的案例展示向龙芯电脑上迁移应用系统的经验和方法,它无疑是极为必要和及时的。
笔者在近10年中一直从事龙芯电脑上的软件开发,深感现在专门讲解龙芯软件开发技术的著作十分匮乏,龙芯电脑的供应渠道还很有限,有志于投身龙芯生态的开发者长期处于“只闻其名,不见其面”的境地。为了推动开发者掌握龙芯电脑上的应用软件迁移、适配、优化技术,笔者特将多年的心得体会汇集成本书。本书具有以下特色。
1.本书是首次全面介绍龙芯电脑、操作系统和软件环境的图书。以龙芯自有的操作系统Loongnix为开发平台,涵盖了 Java、中间件、数据库、浏览器、Qt、PHP、Python、Ruby、3D、Go、云平台等基础软件,内容基本上可以满足任何类型的编程开发。以往X86电脑上的软件,无论是基于Windows还是Linux开发,都可以参照本书提供的思路,快速迁移到龙芯电脑上。
2.全面汇集了Linux开源领域的主流开发语言和平台工具。不仅有传统的Java、PHP、Python等Web编程语言,还包含了Node.js、Go等互联网时代兴起的新语言,甚至包含了Hadoop、MongoDB、Docker等云计算和大数据应用引擎。由此也可以看出龙芯的软件生态已经非常丰富、实用。
3.技术理论和实践相结合,对每一种开发语言提供至少一个实际案例。从编写源代码开始,经过编译过程,直至在龙芯电脑上运行起来,逐步讲述每一个案例的实现细节。由于本书的写作目的是从全景介绍所有开发语言,而不准备深入讲解任何一门语言的具体细节,因此不会逐行讲解源代码,而是尽量概括地介绍这种语言的优点、适用的场景以及迁移到龙芯电脑上会遇到的典型问题和解决方法。这样的好处是能够在最短时间内给读者提供开发语言的选型参考,读者在本书的指引下能够选择出适合自己应用开发需求的编程语言,然后再寻找专门讲解这种编程语言的图书来深入学习。
4.本书所选用的素材大部分来自于龙芯团队原汁原味的开发资料。针对每一种开发语言给出的案例程序都取材于某个真实的项目,大部分案例都基于实际使用的产品,例如龙芯应用公社、动态壁纸、应用程序打包器、Hadoop、NASA WorldWind、Docker平台等,这些程序天天都在龙芯用户的电脑上运行着,笔者相信只有亲自开发的项目才有最强的教育意义。
5.不仅重视功能开发,还提供了性能优化的思路。一款优秀的软件不仅要满足预定的功能,更要重视性能,在设计和编码阶段都要考虑性能问题。以往在X86电脑上开发应用软件时,出于时间和成本的考虑,人们往往来不及把软件本身进行深入的优化,这样在迁移到龙芯电脑上时很容易暴露性能问题。本书针对每一种开发语言都有一个“性能优化”的话题,讲述性能分析的方法和工具,找到性能瓶颈点,以及进行性能优化的手段。
生态建设的核心是价值传递,龙芯生态建设的当务之急就是把龙芯团队自身的价值传递给数以万计的开发者。对于每一位在X86电脑上有经验的开发者,看完本书之后能够对龙芯电脑建立起清晰的认识,按照本书提供的渠道获取一台龙芯电脑,学习每一种开发语言和案例,掌握从X86电脑到龙芯电脑迁移应用系统的能力,进而将以往X86电脑的应用系统迁移到龙芯电脑上,一起为龙芯生态大厦添砖加瓦。
龙芯生态建设的高潮即将到来,愿以本书作为开场序幕,为加快自主信息化推波助澜。由于笔者水平和经验有限,虽然在写作本书的过程中投入了巨大的精力,并且邀请龙芯技术人员进行了多轮审阅,但是难免会存在疏漏,敬请读者批评指正。
靳国杰 张戈 胡伟武
2018年10月于龙芯公司