1、开源技术及应用Lecture-IV-使用开源软件许光全计算机科学与技术学院1感谢你的观赏2019-8-14目录 正确使用开源软件 语言和平台 框架和库 服务器软件 开发工具 桌面应用2感谢你的观赏2019-8-14开源软件管理体制p开源软件的应用战略 哪些系统适宜采用开源软件:很多企业用户在非关键业务系统使用开源软件,但也有很多用在核心业务系统的 哪些开源软件是允许引入:许可证类型界定 可以与开源社区进行哪些方式的协作。p引入流程 参考商业软件引入 根据开源软件的特点进行改造,特别是评估和批准步骤:加强对法律风险、软件成熟度和服务的考察,以便确定“使用该软件是否违法”“质量如何”“出了问题怎么
2、办” 单纯使用开源软件的风险小,但要在自己产品中包含一个开源软件则必须谨慎3感谢你的观赏2019-8-14开源软件管理体制p日常管理 最佳实践:建立一个中心目录,为每个已批准的开源软件建立档案,描述其重要信息:网站,下载地址,被批准的用途,当前部署情况,支持服务信息,内部联系人等,最好能够提供内部下载,保证版本的纯正。p配套系统 组织架构 审计机制 员工培训:开源并非“为所欲为”p很多开源企业用户缺失管理体制:整理现状并对使用的开源软件重新评估和批准。4感谢你的观赏2019-8-14开源软件之法律风险p开源并非“为所欲为”:误导的现状 著作权(著作权法):除公共领域外,著作权所有者通过软件许可
3、证将部分权利授权给用户,同时给出用户约束;著作权来源复杂,风险高;移花接木,好心办坏事。如2003年SCO公司对IBM的诉讼案。 许可证(合同法):权利和义务并存。OSI认证的有70多种许可证。案例很多:2002 MySQL控告Nusphere,2008 FSF诉讼Cisco。 专利(专利法):部分开源许可证对包含的软件专利使用权未做出明示。即使遵守许可证,也有可能会被专利持有人起诉:2007.5声称Linux等侵犯了其235专利。5感谢你的观赏2019-8-14问题解析p验证著作权,正本清源p调查专利,借力打力p解读许可证,明察秋毫。OSI网站列出了9种常用的开源许可证,分别是:GNU通用公
4、共许可证,GPLGNU宽通用公共许可证,LGPLMozilla公共许可证,MPL通用开发和发布许可证,CDDLEclipse公共许可证,EPL新版BSD许可证,MIT许可证Apache许可证6感谢你的观赏2019-8-147感谢你的观赏2019-8-14p版本号:与专有软件一样p此外,还有: 优秀的领导者:通过开源软件主页等获悉 多样化的开发者社区:雇用背景,技术领域,地域 庞大的优质用户群 健康的项目“脉动”:积极的邮件,论坛讨论,及时的缺陷修补,持续的代码更新,活跃的版本发布 健全的安全补丁机制 较完善的文档开源软件成熟度8感谢你的观赏2019-8-14开源软件服务p残酷的事实: 绝大部分
5、开源许可证免责条款!p并不是每个开源软件都有支持服务可买主流的开源软件都有第三方服务,如:Linux:RedHat、Novell等MySQL:Sun全方位支持:OpenLogic及SourceLabsp第三方有偿服务:越来越多的SP提供多样化的服务9感谢你的观赏2019-8-14寻找合适的开源软件p1983, 20多年洗礼,星星之火发展到燎原之势!p几乎每一款商业软件都可以找到开源的替代品p寻找途径 利器:谷歌、百度等搜索引擎 专业网站: 开源替代推荐:OSALT 搜索商业软件的同时,匹配开源软件 托管网站:SourceForge、Google Projects、Codehaus、GitHub
6、等 项目汇总:Freshmeat, open-10感谢你的观赏2019-8-14语言和平台-HarmonypHarmony:Java JDK Apache 2005年5月,目标是开发一个独立并且与现有 JDK 兼容的 Java SE 5 实现。 模块化架构,允许自由定制和替换特定的模块; 实现:独立的独立的两个接口层定义的运行时模块:虚拟机和类库。 非官方JRT:Sun公司不肯授予Apache基金会一个可接受的TCK使用权,无法通过Java标准版TCK测试。p使用指南 许可证:对商业公司和开源社区都比较友好,可将Harmony和Java应用程序打包发布。 邮件列表:4个,dev,commits
7、,alerts,privateharmony.apache.org 缺陷报告和功能需求管理:JIRA。11感谢你的观赏2019-8-14pAndroid:2005.7 google收购了Android Linux内核底层,并搭建了一个类Java JRT环境。p目的和优势: 打破垄断,手持设备业界、开发人员到最终用户手持设备业界、开发人员到最终用户都受益?p架构语言和平台-Android12感谢你的观赏2019-8-14语言和平台-Android 内核:Linux内核,解决手机平台硬件差异 运行时:Davik-ART(二者区别)+核心类库 应同程序框架:为应用程序提供基础服务,包括用户界面、资源
8、管理器、消息通知机制等 应用程序:常用程序都是google的产品,java编写p使用指南 许可证:Linux内核 GPL+Apache许可证。 讨论组:6个,初学者、开发细节、移植、发展、安全、漏洞发现和修复。http:/ 跨平台性:几乎所有平台都有移植版本 可扩展性:核心精简,提供丰富的标准函数库 混合型语言:不需要编译,解释器实时解析运行。编译型和解释型语言? 语法严谨:强类型 动态类型:运行期间才确定数据类型,提高了编程效率 语句块通过缩进来定义的。清晰美观,可读性强。 与Perl比较:Perl多种方法完成一件事,Python只有一种方法。15感谢你的观赏2019-8-1416感谢你的观
9、赏2019-8-14语言和平台-Pythonp使用指南 许可证:Python许可证,GPL兼容,允许修改Python的源代码以非开源的方式再发布 维护:Python基金会监管,众多活跃社区p背景介绍 1989年荷兰人Guido van Rossum为了打发圣诞节长假。用Python编写代码就像英语一样容易理解,且开发周期短。17感谢你的观赏2019-8-14语言和平台-Rubyp功能特点: “以人为本”,让开发成为程序员的乐趣,“执行效率”-“简单” 完全面向对象:Java中原生类型的数据不是对象。 有弹性的动态语言:修改定义过的类,定义实例特有方法(单例方法)。支持元数据编程-加入或修改标准
10、库的方法。 Ruby on Rails: 站在巨人的肩膀上18感谢你的观赏2019-8-14语言和平台-Rubyp使用指南 许可证:GPL+Ruby许可证,GPL兼容的自由软件 邮件列表:4个,Ruby-Talk,Core,Doc,CVSp背景: 日本人松本行弘(Yukihiro)1995.12发明的 目的:和Perl一样强大、比Python更面向对象的脚脚本语言本语言 2000年,Ruby传入美国,影响力由亚洲扩散到全世界。19感谢你的观赏2019-8-14语言和平台-PHPp功能特点 用途:动态网页设计 跨平台:运行在常见系统上,支持各种类型的数据库 丰富的第三方库:支持加密、多媒体、界面
11、、数学计算等各种扩展 执行效率:PHP4后一直到了Zend Engine,效率大大提高p使用指南 许可证:PHP许可证,但和GPL不兼容 Sites页面: 扩展管理: LAMP: Linux, Apache Web服务器, MySQL,PHP 2008.3, 30%以上web服务器使用了PHP20感谢你的观赏2019-8-14语言和平台-Perlp功能特点:弱类型的解释型动态语言 擅长处理文本数据:原因? 能调用C/C+编译的应用, 有丰富的扩展 跨平台:运行在常见和不常见系统上,支持各种类型的数据库 系统管理:弥补了shellawksed的不足。p使用指南 许可证:Artistic许可证+G
12、PL 综合Perl存档网络CPAN:几乎所有相关资料 活跃社区:Perl.org, use perl, perlchina等 邮件列表: Lists.perl.orgp背景: 1987年,拉里. 沃尔, Pearl 入门教程:拉里沃尔的骆驼书Perl编程21感谢你的观赏2019-8-14语言和平台-Flexp功能特点:Adobe 开发的web富客户端 良好的用户体验:出色的用户界面 提供功能强大方便易用的组件库:在Flash基础上做了一层封装,生成Flash文件 跨平台:运行在绝大多数浏览器 强大的可定制性:所有控制都是可定制的,重用和修改原有控件 优秀的整合支持:与JavaPHP.NETRu
13、byColdFusion等实现整合 支持全球化:默认使用行业标准Unicode,多语言支持,自动选择用户界面语言和显示风格p使用指南 许可证:Mozilla公共许可证 MPL 活跃社区和邮件列表等:Flex.org, 商业支持: 22感谢你的观赏2019-8-14框架和库p开发模式的转变 原因:软件开发规模不断扩大,构件思想的引领 转变:白手起家-模式、设计和代码的复用p如何选择合适自己的库和框架 琳琅满目:各种编程语言、编程领域, 开源社区:通信层的网络协议实现、中间层的企业信息总线、存储层的对象-关系映射、前台的AJAX23感谢你的观赏2019-8-14Springp功能特点:2004.3
14、, Rod Johnson, Spring 1.0 Java企业级平台,比JavaBean更轻量级 子框架设计:子框架着重解决特定领域的问题,可独立和配合使用 核心是称为反向控制的对象容器:提供统一方法管理和配置Java对象,管理对象生命周期。p使用指南 许可证:Apache许可证 获取Spring代码 : 问题提交:JIRA系统 研讨会:SpringOne,官方最大规模的技术研讨会。24感谢你的观赏2019-8-14Strutsp功能特点: Craig McClanahan 2000.5捐赠给Apache基金会 纯Java的web应用框架 对Java Servlet编程接口扩展:引入MVC设
15、计模式,构造以此为基础的开发框架,辅以标签库等前端技术 规范使用MVC:即使开发人员不了解MVC分离的概念p版本选择 Struts 1:最广泛使用的Java Web框架,成熟可靠,有完善的文档和广大的用户群 Strut 2:引入插件机制,编程接口与struts 1不兼容25感谢你的观赏2019-8-14Strutsp使用指南 许可证:Apache许可证 初学者:基础技术和概念struts.apache.org/primer.html 详细用户手册:struts.apache.org/1.x/userGuide/index.html FAQ、HOWTO文档:struts.apache.org/1
16、.x/faqs/index.html Struts 2: wiki形式,也有不错的教程struts.apache.org/2.x/docs/tutorials.html 邮件列表、用户群体 缺陷报告:JIRA,securitystruts.apache.org26感谢你的观赏2019-8-14Jboss Seamp功能特点: RedHat的Jboss社区领导开发,Gavin King,他同时也是Hibernate(流行的对象-关系映射框架)的主要创始人,因此与Hibernate有良好的集成。 Java语言的web应用开发平台 集成了众多流程技术:异步JavaScript和XML(AJAX)、J
17、ava Server Faces (JSF)、Java Persistence(JPA)、EJB、业务流程管理BPM等 最精简的整体架构和编程接口 所见即所得(WYSIWYG)开发环境:以Eclipse为基础的Jboss开发工具,命令行代码生成工具 ,帮助用户最快开发系统原型。27感谢你的观赏2019-8-14Jboss Seamp使用指南: 许可证:LGPL,有完善的文档和活跃社区 学习:下载样例程序、运行,然后学习其代码 问题讨论和报告:用户论坛讨论,大部分问题都是用户配置问题,而非Seam本身的缺陷。如果是,可以报告给社区,先搜索Seam的缺陷追踪系统。避免重复报告。 社区活动:包括功能
18、介绍、案例演示等,不少在中国 商业支持:RedHat28感谢你的观赏2019-8-14Equinoxp功能特点: Equinox是Eclipse旗下的一个开源项目 插件平台:在通用架构上组装模块方式搭建应用 Eclipse 3.0后,取代了原本的插件技术,成为Eclipse新的运行平台 降低复杂度、提高重用性:模块化开发,每个模块由清晰定义的开放接口,同时隐藏内部实现-强制封装保证了模块间的松散耦合,易维护、不易出错 动态更新:允许在运行时动态更新模块,启动和停止。这对于传统的Java程序来说近乎不可能,但却是存在这样的需求 简单易用:核心API非常精简,只有一个包,不到30个类和接口;开发模
19、块无须继承或者实现任何类和接口。29感谢你的观赏2019-8-14Equinoxp使用指南: 许可证:Eclipse公共许可证 底层架构:可用于任何Java系统的底层架构 文档支持:www.eclipse.org/equinox/documents 快速入门:发布形态JAR,方便地下载并运行最简单的程序www.eclipse.org/equinox/documents/quickstart.php 常用资源:www.eclipse.org/equinox/resouces.php 邮件列表 缺陷管理:Bugzilla系统30感谢你的观赏2019-8-14Hibernatep功能特点: Hibe
20、rnate是对象-关系映射框架(Object Relational Mapping,简称ORM)在Java上的典型代表之一 关系映射:JavaBean与数据库之间、Java数据类型与SQL数据类型之间建立和维护映射关系有何作用? HQL语言:帮助生成查询语句,将程序员从SQL解放以及数据库的可移植性p使用指南: 许可证:LGPL 缺陷跟踪系统:社区报告问题,也可向社区贡献代码 商业服务:RedHat, 24小时全天候,2小时内解决服务31感谢你的观赏2019-8-14Hibernatep背景介绍: Hibernate 2.1 获得2005年Jolt奖。 版本:最初只支持Java语言,后来.NE
21、T 发明人:Gavin King领导的一个全球化的开发团队,后来JBoss雇佣了主要的开发人员,继续维护和支持Hibernate32感谢你的观赏2019-8-14iBATISp功能特点:2001 Clinton Begin创始 多语言的存储层框架,支持Java、.Net和Ruby,致力于高效地访问关系数据库 是一个数据映射框架,简单易用,除了对象、XML和SQL外不需要学习其他 独立的数据访问层:提供Data Access Objects(DAO)抽象层,帮助应用封装存储层代码,并为应用的其他模块提供一个统一的调用接口 包含Ibator:专用的代码生成器,从关系数据库反射表设计,然后自动生成整
22、套iBATIS代码和配置文件,实现表的增、删、改、查等操作。33感谢你的观赏2019-8-14iBATISp使用指南: 许可证:Apache 简单易用,有完善的文档: Java:cvs.apache.org/dist/ibatis/ibatis.java/docs/iBATIS-SqlMaps-2-Tutorial_en.pdf .NET:O 缺陷管理:JIRA34感谢你的观赏2019-8-14Lucenep功能特点:创始人 Dough Cutting Apache基金会的一个专注信息搜索的开源项目群,包含一系列子项目,其中Lucene Java是最早也是最著名的一个。 Lucene Java
23、 :纯Java语言的信息搜索引擎,适用于所有需要全文检索的应用场合 高效可延展的建立索引:每分钟处理20MB数据以上,低内存消耗(1MB),与批量索引建立一样高速的增量索引,索引大小为原文的20%-30% 强大、准确且高速的查询:匹配度优先返回,各种查询方式(短语匹配、通配符、近似匹配、区间查询等),允许并发的更新和查询 有其他语言的移植版本35感谢你的观赏2019-8-14Lucenep使用指南: 许可证:Apache 简单易用:二进制形式只有一个JAR,加入到类路径就可使用 快速入门:发行版自带 WIKI网站:邮件列表,缺陷追踪系统JIRA36感谢你的观赏2019-8-14Webkitp功
24、能特点:管理者 Macos Forge Webkit是一个网页渲染引擎?,用于浏览器及富客户端应用 很多重量级的应用:safari跟chrome(后来opera跟进),以及Adobe公司的富客户端运行平台AIR等都是基于Webkit 跨平台性:起初只能用于linux平台,后来苹果公司apple对其源代码进行了扩展改造,使其能运行于mac跟windows 平台,后起之秀chrome对其有进行了一些列扩充与推广,使其越来越成为标准流行的渲染网页引擎 出色的用户体验p使用指南 许可证:LGPL+BSD Wiki网站:提供具体信息,丰富的邮件列表 IRC聊天室: Internet Relay Chat
25、 的英文缩写,中文一般称为互联网中继聊天。37感谢你的观赏2019-8-14服务器软件pWeb应用流行化 趋势:web应用越来越流行,需要部署在web服务器上 服务器软件丰富和多样化:从只支持静态页面的Http Server,到JSP/Servlet容器Tomcat;从嵌入式Jetty到功能完备的J2EE容器Jboss和Geronimo,开源web服务器满足各种需求。 除web服务器外,还有数据库服务器。38感谢你的观赏2019-8-14Apache HTTP服务器(AHS)p功能特点:管理者 Apache基金会 开源HTTP服务器最著名的一个,是Apache的开山之作 跨平台流行:绝大多数O
26、S都可以运行 成熟稳定,安全性高 模块化架构:许多特性,大部分通过各个子模块实现39感谢你的观赏2019-8-14Apache HTTP服务器(AHS)p使用指南 许可证:Apache 活跃社区 邮件列表:用户邮件列表和开发类邮件列表Users-subscribehttpd.apache.orgDev-subscribehttpd.apache.orgp背景介绍 开发者:美国国家超级电脑应用中心的Robert McCool,可说没有AHS,就没有Apache基金会 市场份额:1996.4以来,一直是最流行的HTTP服务器,2005.11 70%,后来很多主机域名商转到微软的IIS,但仍是老大4
27、0感谢你的观赏2019-8-14Tomcatp功能特点:管理者 Apache基金会 易用、功能强大的web应用服务器 运行时占用资源少,适合中小型应用 只是一个web容器,不支持所有的Java企业版规范,如EJB 可为Servlet/JSP提供动态页面支持,也支持静态HTML 登陆方案可通过Tomcat动态替换:可用JNDI Realm配置并利用LDAP进行用户验证 支持HTTP和HTTPS协议 支持服务器集群和负载均衡,提高web应用的可靠性和可伸缩性p使用指南 许可证:Apache 邮件列表:用户和开发者两个 发明者:1999,sun的James Duncan Davidson41感谢你的
28、观赏2019-8-14JBossp功能特点:创始人 Marc Fleury 最早的开源Java企业版服务器 实现了Java企业版所有功能 Web容器采用Tomcat或Jetty Portal技术的支持:Jboss Portal,包括界面、内容管理与发布、个人喜好设置p使用指南 许可证:LGPL 邮件列表:Jboss包含很多项目,每个项目都有自己的邮件列表,包括Jboss开发列表。 商业服务:Jboss公司2003年推出了专业级的产品支持服务42感谢你的观赏2019-8-14MySQLp功能特点:创始人 Michael Widenius, David Axmark 目前最流行的开源关系型数据库管理系统 体积小、速度快,易于使用 跨平台支持 为几乎所有主流编程语言提供API 良好的伸缩性 良好的工具支持:命令行工具mysqlmysqladmin以及图形化工具MySQL Administraor和MySQL Query Browser,还有第三方工具p使用指南 许可证:GPL 邮件列表:针对不同语言和操作系统提供不同的邮件列表 商业服务:Sun公司推出了专业级的产品支持服务43感谢你的观赏2019-8-1444感谢你的观赏2019-8-1445感谢你的观赏2019-8-14
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。