龙芯软件白皮书 - Loongson · 等方面的最新进展。通过“源码开放、免费下载”的方式,支持品牌操作系统 企业、整机企业及科研院所等机构在龙芯平台上研发其品牌或专用操作系统版
《龙芯应用开发标准教程》 重点导读 · 第一章 龙芯电脑...
Transcript of 《龙芯应用开发标准教程》 重点导读 · 第一章 龙芯电脑...
page 1
《龙芯应用开发标准教程》
重点导读
2
声 明
本文内容仅供一般技术参考,不作为龙芯中科技术有限公司的市场推广材
料。对于文中所出现的厂商、产品名称,仅陈述所获取的信息,对信息的
时效性和准确性不负有责任,一切内容以原厂商提供的材料和信息为准。
对于出现顺序不带有推荐优先级的倾向性。
本文中的信息若有更改,恕不另行通知。虽然已尽力确保本文的完整性和
准确性,但龙芯中科技术有限公司对本文的内容不作任何保证。龙芯中科
技术有限公司对本文中包含的错误或遗漏,或者因使用本文引发的任何损
失概不负责。
page 3
内容特色
首次全面介绍龙芯电脑、操作系统和软件环境的书籍
• 推动开发者掌握从X86向龙芯电脑进行应用软件迁移、适配、优化技术
全面汇集了Linux开源领域的主流开发语言和工具
• Web,数据库,云计算
技术理论和实践相结合
• 对每一种开发语言提供至少一个实际案例
素材大部分来自于龙芯团队原汁原味的开发资料
• 大部分案例都基于实际使用的产品
不仅重视功能开发,还提供了性能优化的思路
• 每一种开发语言都有一个“性能优化”的案例
page 4
章节体系
❶ 龙芯电脑简介龙芯电脑概述
龙芯应用开发
❿ 云平台(Docker)
❷ 龙芯操作系统
❸ 龙芯应用开发环境概述
❹ Java编程
❺ 数据库
❻ 浏览器
❼ 本地图形程序(Qt)
❽ 新型语言(PHP/Python/Ruby)
❾ 3D应用
前提知识
国内操作系统均来源于Linux的衍生版,其软件开发环境
符合一般的Linux开发标准。本书不再专门阐述Linux的通
用软件开发方法,阅读本书的读者应提前具备下列技术知
识:
Linux的命令行工具;Linux操作系统使用和配置管理;Shell、
Python等脚本编程语言;文件系统目录结构组织;C/C++语言,
GCC编译器和链接器;POSIX标准编程库,包括文件读写、进
程管理、内存管理、进程间通讯、多线程、网络通讯等;Linux
设备驱动程序开发;Qt等图形界面编程库。
page 6
第一章 龙芯电脑
龙芯和X86是“不兼容”的
• “指令集”是指一种CPU上运行的机器指令的二进制编码格式
• 龙芯基于MIPS
龙芯电脑不能运行Windows
• 龙芯操作系统来源于Linux的衍生版
很多开源软件可以变更Windows上的应用软件
X86电脑 龙芯电脑
Windows
GIMP图像处理工具
QQ网页版
Loongnix
龙芯CPU和主板
CPU是“电脑之心”
• 从地位上来看,CPU负责控制着电脑中的其它部件
• 从复杂度上来看,CPU是整个主板上速度最快、计算量最大的芯片
page 8
第二章 龙芯操作系统
龙芯社区版操作系统——Loongnix
• 开放源代码,免费下载
• 基于Fedora21
• 可供开发验证
• 可供定制形成商业操作系统
• 与中标麒麟二进制兼容
• 支持U盘、光盘安装
page 9
桌面环境
page 10
常用软件
办 公 编 程 附 件
互联网 图 形
系统工具
影 音
page 11
第三章 软件开发环境
龙芯支持完整的软件开发环境
• 编程语言
• 全部Linux开源编程语言
• 函数库
• 平台引擎
• Web服务器
• 数据库服务器
• 云平台
• 分布式文件系统
• ……
• 浏览器
• 性能分析工具
• 集成开发环境(IDE)
page 12
编程语言一览
❿ 云平台
❹ Java编程 ❺ 数据库 ❻ 浏览器
❼ 本地图形程序 ❽ 新型语言 ❾ 3D应用
page 13
应用迁移“两步走”策略
❶ 操作系统:从Windows到Linux
❷ CPU:从X86到龙芯
page 14
第四章 Java编程
龙芯支持OpenJDK 8
• 集成开发环境:Eclipse、
Netbeans
• Java软件可以直接迁移到龙芯电脑
Specjvm98
Specjvm2008
Eclipse
Netbeans IDE
Tomcat
Jetty中间件
JBoss中间件
Structs框架
Spring框架
Hibernate框架
MySQL JDBC
JeeCMS
Jira 4.1.1
Xwiki
page 15
运行Tomcat
下载并解压缩apache-tomcat-7.0.29.zip
$ export JAVA_HOME=/opt/j2sdk-image
$ export JAVA_OPTS=' -Xmx512M -Xms512M '
$ ./catalina.sh run
page 16
JNI:Java本地接口
• 作用
• Java语言调用C/C++语言编写的函数库
• 优点:
• 提高热点函数的性能
• 实现Java语言标准库不支持的功能
• 缺点:
• 降低可移植性
page 17
Java程序的可迁移程度
技术特征 从X86向龙芯的可迁移程度
1. 纯Java软件 无需重新编译,直接运行
2. 使用JNI 需要重新编译C/C++代码
为了方便在不同平台上移植软件,
强烈建议应用程序不要使用JNI
应用服务器集群
典型部署模式——负载均衡
• 对外部Web访问请求进行分发
• 平均分配到多个应用服务器分别
响应处理
• 提高Web并发性能
page 18
page 19
第五章 数据库
龙芯支持各种数据库
• Mysql
• 广泛使用的开源数据库,功能可以满足
很多中小型企业应用
• MongoDB
• 非关系数据库,面向互联网应用
• 国内数据库
• 神通、达梦、金仓、南大通用等
兼容SQL标准,但是迁移时会遇到各种语法差
异
• 查询函数,存储过程,视图,触发器
• 建议:只使用最保守的公共SQL语法
page 20
Java语言访问Mysql
JDBC
• Java DataBase Connectivity
• 一组标准函数库,适用于所有数据库
• 龙芯上有完善支持
JSP/servlet应用
HTML页面
MySQL
JDBC库
Oracle
SQL Server
浏览器 应用服务器 数据库
数据库服务器:两种集群
双机热备
• 一主一备:主服务器出现故障
时,另一台服务器接管服务
• 提高可靠性
page 21
读写分离
• 主服务器提供“写”服务
• 其它服务器提供“读”服务
• 提高并发读性能
page 22
第六章 浏览器
龙芯电脑支持两款浏览器
• 兼容W3C协议
• HTML,CSS,JavaScript
• 支持各种流行前端页面编程框架
• Ajax,jQuery,AngularJS,Bootstrap
• 全面支持新型Web标准
• HTML5
• WebGL
• 支持Flash插件
Bootstrap
page 23
浏览器应用迁移的主要问题
龙芯电脑支持两款浏览器
• 兼容性问题多数由HTML/CSS引发
• 即使是X86上的Firefox和IE也不兼容
• 浏览器插件移植难度大
• 插件不属于W3C标准
• 插件和操作系统紧密关联,
插件类型 龙芯支持情况
ActiveX 只用于Windows
Java Applet 官方不再支持
Adobe Flash 官方不再支持
Chrome Native Client 官方不再支持
PPAPI、NPAPI 支持
建议应用程序尽量不使用插件,全面转向HTML5
page 24
浏览器应用迁移的主要问题
龙芯电脑支持两款浏览器
• 兼容性问题多数由HTML/CSS引发
• 即使是X86上的Firefox和IE也不兼容
• 浏览器插件移植难度大
• 插件不属于W3C标准
• 插件和操作系统紧密关联,
插件类型 龙芯支持情况
ActiveX 只用于Windows
Java Applet 官方不再支持
Adobe Flash 官方不再支持
Chrome Native Client 官方不再支持
PPAPI、NPAPI 支持
建议应用程序尽量不使用插件,全面转向HTML5
page 25
网页性能分析工具
精确统计网页的下载、执行、渲染时间第一时间找到性能瓶颈
page 26
第七章 Qt开发
龙芯电脑支持Qt图形库
• 编写本地窗口界面程序:例如WPS、360杀毒
• 可视化界面设计,丰富的控件库
• 比肩Visual Studio
page 27
Qt控件库
数据输入 数据显示 表格、树、标签页
page 28
丰富的第三方Qt组件
QCustomPlot
数据图表
QtWebkit
嵌入浏览器
Phonon
视频播放
方便开发者快速创建应用程序
page 29
第八章 PHP/Python/Ruby
龙芯电脑完全支持• 3种语言在互联网开发中广泛使用
• 编程语言排行榜前10名
• 都是“脚本型语言”
• X86的应用不需要重要编译,直接在龙芯上运行
• 基本不存在迁移问题
• 完善支持流行开源框架
• Django,Ruby on Rails
page 30
第九章 3D开发
桌面应用的“制高点”• 架构复杂
• 显卡
• 操作系统
• 图形库
• 平台引擎
• 业务复杂
• 地理信息(GIS)
• 交通信息
• 海洋信息
• 人机交互
• 性能要求高
page 31
龙芯电脑全面兼容AMD显卡
系列 型号
HD系列
HD4690 HD5450 HD6570 HD6770 HD6670HD6850 HD7470 HD7870 HD8470
R5系列 R5-230 R7系列 R7-240 R7-300 R7-350R9系列 R9-280X R9-370
嵌入式显卡 E6460 E6760 E8860
page 32
龙芯运行大型3D应用
SuperTuxKart
3D卡通赛车游戏
Blender
三维建模软件
page 33
3D编程
OpenGL所有显卡支持的3D函数库标准
QtOpenGLQt封装的OpenGL类库
OSG三维地球引擎
PyOpenGLPython封装的OpenGL类库
OGRE三维游戏引擎
page 34
第十章 Docker云平台
龙芯电脑完全支持Docker• 提供云平台管理工具
• 资源集成
• 故障容错
• 弹性扩容
• 状态监视
• 可变更KVM方案
35
龙芯Docker架构
容器1 容器2 容器3
龙芯服务器(3B3000双路/四路)
国内操作系统(中标,普华,深度,……)
龙芯D o c k e r功能简介
容器管理工具
36
一个容器 = 一套独立的文件系统
通常是一个软件项目(应用软件 + 中间件 +数据库)
37
Docker的优点
• 提高服务器利用率• 常见问题:不同的应用软件使用不同版本的中间件、数据库• 如果都安装到一台服务器,很容易造成管理混乱• 如果使用多台服务器,则机房很快不够用• 使用容器平台,则可以共享一台服务器,同时保持管理清晰
• 安全性• 各个容器之间,不能相互访问文件,实现安全性隔离• 一个容器中的文件或者数据损坏,对其它容器没有影响
• 便于部署• 一个容器封装了应用程序、中间件、数据库• 将来更换新的服务器,“免搭建”——直接运行容器
• 便于升级• 将来CPU、操作系统升级,容器还可以直接运行,不需要重新部署
应用程序
38
典型Docker集群:政务云
服务器1
服务器2
服务器3
服务器N
管理节点
容器仓库
服务器1
服务器2
服务器3
服务器N
共享存储
Web服务器 数据库服务器
39
Docker集群的优点1:弹性扩容
• 管理员在集群中加入新的服务器• 服务器自动从容器仓库下载应用程序,立即运行• 节省部署时间
服务器1
服务器2
服务器N
容器仓库
服务器3
新服务器
应用程序
40
Docker集群的优点2:自动容错
• 自动容错:提高可靠性• 管理员预留一定数量服务器,平时处于空闲状态• 如果一台服务器发生损坏,容器管理工具自动挑选一台空闲服务器,
从容器仓库下载应用程序,立即运行• 任何时刻保证有足够数量的服务器在运行• 节省故障处理时间
预留1
预留2
预留3
服务器1
服务器2
服务器N
容器仓库
服务器3
应用程序
预留N
41
Docker的使用和管理
• 管理工具:命令行/图形界面• 制作虚拟机镜像• 运行虚拟机• 查看虚拟机运行状态• 对有故障的虚拟机进行迁移
汇总龙芯电脑上各
种类型应用程序的
实际开发经验
page 42
项目案例
① 第4章:龙芯电脑移植Hadoop
② 第5章:Qt访问神通数据库
③ 第5章:龙芯移植RethinkDB
④ 第6章:龙芯应用公社客户端
⑤ 第6章:浏览器插件的通用变更方案
⑥ 第7章:安装程序制作工具
⑦ 第8章:动态壁纸
⑧ 第9章:龙芯移植OGRE游戏引擎
⑨ 第9章:龙芯移植NASA WorldWind
⑩ 第10章:龙芯电脑移植Portainer
⑪ 第10章:专用云平台的典型架构