http://server.zol.com.cn/270/2700037_all.html
随着数据时代的来临,开源软件越来越被重视,尤其在Web应用服务器、应用程序架构和大数据处理方面更是应用广泛,其中Hadoop、Apache 、MYSQL等开源软件更是家喻户晓,在企业大型网络应用中承担重要作用。免费、运行速度快等优点使开源软件迅速发展,近一年在服务器领域应用更是越加广泛,下面我们来看一下未来将一段时间内服务器行业的软件主角。
一、HBase
HBase是一个分布式的、面向列的开源数据库,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。
HBase(Hadoop Database)是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。
HBase是Google Bigtable的开源实现,类似Google Bigtable利用GFS作为其文件存储系统,HBase利用Hadoop HDFS作为其文件存储系统;Google运行MapReduce来处理Bigtable中的海量数据,HBase同样利用Hadoop MapReduce来处理HBase中的海量数据;Google Bigtable利用 Chubby作为协同服务,HBase利用Zookeeper作为对应。
上图描述了Hadoop EcoSystem中的各层系统,其中HBase位于结构化存储层,Hadoop HDFS为HBase提供了高可靠性的底层存储支持,HadoopMapReduce为HBase提供了高性能的计算能力,Zookeeper为HBase提供了稳定服务和failover机制。
此外,Pig和Hive还为HBase提供了高层语言支持,使得在HBase上进行数据统计处理变的非常简单。Sqoop则为HBase提供了方便的RDBMS数据导入功能,使得传统数据库数据向HBase中迁移变的非常方便。
二、Node
Node是一个Javascript运行环境,实际上它是对GoogleV8引擎进行了封装。V8引 擎执行Javascript的速度非常快,性能非常好。Node对一些特殊用例进行了优化,提供了替代的API,使得V8在非浏览器环境下运行得更好。因此,Node不仅仅简单的使用了V8,还对其进行了优化,使其在各环境下更加给力。
V8引擎本身使用了一些最新的编译技术。这使得用Javascript这类高级语言编写出来的代码与用C这类高级语言写出来的代码性能相差无几,却节省了开发成本。对性能的苛求是Node的一个关键因素。 Javascript是一个事件驱动语言,Node利用了这个优点,编写出可扩展性高的服务器。Node采用了一个称为“事件循环(event loop)”的架构,使得编写可扩展性高的服务器变得既容易又安全。提高服务器性能的技巧有多种多样。Node选择了一种既能提高性能,又能减低开发复杂 度的架构。这是一个非常重要的特性。并发编程通常很复杂且布满地雷。Node绕过了这些,但仍提供很好的性能。
Node采用一系列“非阻塞”库来支持事件循环的方式。本质上就是为文件系统、数据库之类的资源提供接口。当 你向文件系统发送一个请求时,无需等待硬盘(寻址并检索文件),硬盘准备好的时候非阻塞接口会通知Node。该模型以可扩展的方式简化了对慢资源的访问, 直观,易懂。尤其是对于熟悉onmouseover、onclick等DOM事件的用户,更有一种似曾相识的感觉。
虽然让Javascript运行于服务器端不是Node的独特之处,但却是其一强大功能。不得不承认,浏览器环境限制了我们选择编程语言的自由。任 何服务器与日益复杂的浏览器客户端应用程序间共享代码的愿望只能通过Javascript来实现。虽然还存在其他一些支持Javascript在服务器端 运行的平台,但因为上述特性,Node发展迅猛,成为事实上的平台。
在Node启动的很短时间内,社区就已经贡献了大量的扩展库(模块)。其中很多是连接数据库或是其他软件的驱动,但还有很多是凭他们的实力制作出来的非常有用的软件。
最后,不得不提到的是Node社区。虽然Node项目还非常年轻,但很少看到对一个项目如此狂热的社区。不管是新手,还是专家,大家都围绕着项目,使用并贡献自已的能力,致力于打造一个探索、支持、分享、听取建议的乐土。
三、Nginx
Nginx 是一个高性能的反向代理 服务器,也是一个IMAP/POP3/SMTP 代理服务器。 Nginx是由Igor Sysoev为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。
优点:
Nginx可以在大多数Unix like OS上编译运行,并有Windows移植版。目前 Nginx的1.0.9稳定版已经于2011年11月1日发布,开发版本已完成的为1.1.8,如果新建站点,建议使用最新稳定版作为生产版本,已有站点升级急迫性不高。 Nginx的源代码使用2-clause BSD-like license。
Nginx是一个很牛的高性能Web和反向代理服务器,它具有很多非常优越的特性:
在高连接并发的情况下,Nginx是Apache服务器不错的替代品:Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达 50,000个并发连接数的响应,感谢Nginx为我们选择了epoll and kqueue作为开发模型。
Nginx作为负载均衡服务器:Nginx 既可以在内部直接支持Rails和PHP程序对外进行服务,也可以支持作为 HTTP代理服务器对外进行服务。Nginx采用C进行编写,不论是系统资源开销还是CPU使用效率都比Perlbal要好很多。
作为邮件代理服务器:Nginx同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器),Last. fm 描述了成功并且美妙的使用经验。
Nginx是一个安装非常的简单,配置文件非常简洁(还能够支持perl语法),Bugs非常少的服务器:Nginx 启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够不间断服务的情况下进行软件版本的升级。
四、Hadoop
Hadoop一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。Hadoop实现了一个分布式文件系统简称HDFS。HDFS有着高容错性的特点,并且设计用来部署在低廉的硬件上。而且它提供高传输率来访问应用程序的数据,适合那些有着超大数据集的应用程序。HDFS放宽了POSIX的要求这样可以流的形式访问文件系统中的数据。
Hadoop是一个能够对大量数据进行分布式处理的软件框架。但是 Hadoop 是以一种可靠、高效、可伸缩的方式进行处理的。Hadoop是可靠的,因为它假设计算元素和存储会失败,因此它维护多个工作数据副本,确保能够针对失败的节点重新分布处理。Hadoop是高效的,因为它以并行的方式工作,通过并行处理加快处理速度。Hadoop还是可伸缩的,能够处理 PB 级数据。此外,Hadoop依赖于社区服务器,因此它的成本比较低,任何人都可以使用。
Hadoop带有用Java语言编写的框架,因此运行在Linux生产平台上是非常理想的。Hadoop上的应用程序也可以使用其他语言编写,比如 C++。
五、Ruby on Rails
Ruby on Rails是一个可以使你开发,部署,维护web应用程序变得简单的框架。
当然了,所有的web框架都有同样的目标。是什么使得Rails如此不同呢?我们可以通过几个途径来回答这个问题。
第一是看架构。在过去的时间里,许多开发者在严谨的web应用程序上使用 MVC 架构。他们发现MVC架构可以使他们的程序变得更清晰,在java中像Tapestry和 Struts这些框架都是基于MVC 。Rails也是一个MVC框架。当你使用Rails进行开发,应用程序的所有代码以一种标准方式互相作用。在开始开发之前,整个应用程序的骨架已经搭好的。
回答这个问题的第二个是看编程语言。Rails程序是使用Ruby编写的,它是一门现代,面向对象的脚本语言。Ruby简洁,不难理解。它可以让你快速地用代码自然 , 清晰表达想法。让你的程序能很简单被编写并且在几个月后还能很容易读懂。
Ruby on Rails是一个Web应用程序框架,是一个相对较新的Web应用程序框架,构建在Ruby语言之上。它被宣传为现有企业框架的一个替代,而它的目标,简而言之,就是让生活,至少是Web开发方面的生活,变得更轻松。
J2EE是一种利用Java 2平台来简化企业解决方案的开发、部署和管理相关的复杂问题的体系结构。J2EE技术的基础就是核心Java平台或Java 2平台的标准版,J2EE体系结构提供中间层集成框架用来满足无需太多费用而又需要高可用性能高可靠性以及可扩展性的应用的需求。
Java 2平台有3个版本,它们是适用于小型设备和智能卡的Java 2平台Micro版、适用于桌面系统的Java 2平台标准版、适用于创建服务器应用程序和服务的Java 2平台企业版。
Ruby on Rails和 J2EE堆栈的比较
可以看到,Rails堆栈和构成普通的基于 J2EE的Web应用程序的组件之间的基本区别很小。两者都有用来执行应用程序代码的容器;都有帮助分离应用程序的模型、视图和控件的MVC框架;以及持久存储数据的机制。
六、MongoDB
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。
它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有:
●面向集合存储,易存储对象类型的数据。
●模式自由。
●支持动态查询。
●支持完全索引,包含内部对象。
●支持查询。
●支持复制和故障恢复。
●使用高效的二进制数据存储,包括大型对象(如视频等)。
●自动处理碎片,以支持云计算层次的扩展性。
●支持RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。
●文件存储格式为BSON(一种JSON的扩展)。
●可通过网络访问。
所谓“面向集合”意思是数据被分组存储在数据集中,被称为一个集合。每个集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档。集合的概念类似关系型数据库里的表,不同的是它不需要定义任何模式。
模式自由,意味着对于存储在mongodb数据库中的文件,我们不需要知道它的任何结构定义。如果需要的话,你完全可以把不同结构的文件存储在同一个数据库里。
存储在集合中的文档,被存储为键-值对的形式。键用于唯一标识一个文档,为字符串类型,而值则可以是各种复杂的文件类型。我们称这种存储形式为BSON。
MongoDB服务端可运行在Linux、Windows或OS X平台,支持32位和64位应用,默认端口为27017。推荐运行在64位平台,因为MongoDB在32位模式运行时支持的最大文件尺寸为2GB。
七、Tomcat
Tomcat是Apache软件基金会的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4和JSP 2.0规范。因为Tomca 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。目前最新版本是7.0。
Tomcat很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感兴趣的程序员都可以更改它或在其中加入新的功能。
Tomcat是一个轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache服务器,可利用它响应对HTML页面的访问请求。实际上Tomcat部分是Apache服务器的扩展,但它是独立运行的,所以当你运行tomcat时,它实际上作为一个与Apache独立的进程单独运行的。
这里的诀窍是,当配置正确时,Apache为HTML页面服务,而Tomcat实际上运行JSP 页面和Servlet。另外,Tomcat和IIS、Apache等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Apache服务器。目前Tomcat最新版本为7.0.22 Released。
八、MySQL
MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购。而2009年,SUN又被Oracle收购。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内。这样就增加了速度并提高了灵活性。MySQL的SQL“结构化查询语言”。SQL是用于访问数据库的最常用标准化语言。MySQL软件采用了GPL。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
系统特性:
1.使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性。
2.支持AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统。
3.为多种编程语言提供了API。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。
4.支持多线程,充分利用CPU资源。
5.优化的SQL查询算法,有效地提高查询速度。
6.既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名。
7.提供TCP/IP、ODBC和JDBC等多种数据库连接途径。
8.提供用于管理、检查、优化数据库操作的管理工具。
9.可以处理拥有上千万条记录的大型数据库。
10.支持多种存储引擎。
九、Apache HTTP Server
HTTP服务器软件之一,可通过简单的API扩展Perl/Python解释器可被编译到服务器中,完全免费,完全源代码开放。可以创建一个每天有数百万人访问的Web服务器。
Apache支持许多特性,大部分通过编译的模块实现。这些特性从服务器端的编程语言支持到身份认证方案。一些通用的语言接口支持Perl,Python, Tcl, 和 PHP。流行的认证模块包括 mod_access, mod_auth 和 mod_digest。Apache日志可以通过网页浏览器使用免费的脚本AWStats或Visitors来进行分析。
《PC Magazine》2004年8月评出了近30年以来的10款最佳软件产品。他们其中或者是有过最辉煌的历史,或者是最具创意。其对Apache的评价是:第三名:Apache(阿帕奇,1995年推出)Apache目前已经演变成了“LAMP”,即Linux、Apache、MySQL和PHP的联合体。这是一个开放源代码软件项目,已经对微软的“.NET”战略构成严重威胁。尤其是Apache网络服务器,让用户充分体验到开发源码软件的稳定性、可靠性和可定制性。
Apple.com评价Apache时说:Apache是服务器软件始终不断进化的大块部件,它免费但又是无价之宝。Apache是在资源开放运动中出现的绝对珍品,因为不属于个人专利而是对公共免费。一旦拥有这些源码,程序员能够自由完成所想——能在其它程序员接替工作时被赋予同样的权限来改变 和修改自己的源代码。
十、 Spring Framework
Spring Framework是什么呢?首先它是一个开源的项目,而且目前非常活跃;它是一个基于IoC和AOP的构架多层j2ee系统的框架,但它不强迫你必须在每一层 中必须使用Spring,因为它模块化的很好,允许你根据自己的需要选择使用它的某一个模块;它实现了很优雅的MVC,对不同的数据访问技术提供了统一的 接口,采用IoC使得可以很容易的实现bean的装配,提供了简洁的AOP并据此实现Transcation Managment,等等......
特性:
●强大的基于JavaBeans的采用控制翻转原则的配置管理,使得应用程序的组建更加快捷简易。
●一个可用于从applet到Java EE等不同运行环境的核心Bean工厂。
●数据库事务的一般化抽象层,允许插件式事务管理器,简化事务的划分使之与底层无关。
●内建的针对JTA和单个JDBC数据源的一般化策略,使Spring的事务支持不要求 Java EE环境,这与一般的JTA或者EJB CMT相反。
●JDBC 抽象层提供了有针对性的异常等级, 简化了错误处理, 大大减少了程序员的编码量. 再次利用JDBC时,你无需再写出另一个 '终止' 模块。 并且面向JDBC的异常与Spring通用数据访问对象异常等级相一致。
●以资源容器,DAO实现和事务策略等形式与Hibernate,JDO和iBATIS SQL Maps集成。利用众多的翻转控制方便特性来全面支持, 解决了许多典型的Hibernate集成问题. 所有这些全部遵从Spring通用事务处理和通用数据访问对象异常等级规范。
●灵活的基于核心Spring功能的MVC网页应用程序框架。开发者通过策略接口将拥有对该框架的高度控制,因而该框架将适应于多种呈现技术,值得注意的是,Spring 中间层可以轻易地结合于任何基于 MVC 框架的网页层,
●提供诸如事务管理等服务的面向方面编程框架。
在设计应用程序Model时,MVC 模式(例如Struts)通常难于给出一个简洁明了的框架结构。Spring却具有能够让这部分工作变得简单的能力。程序开发员们可以使用Spring的 JDBC 抽象层重新设计那些复杂的框架结构。
十一、PostgreSQL
PostgreSQL是以加州大学伯克利分校计算机系开发的 POSTGRES,版本 4.2为基础的对象关系型数据库管理系统(ORDBMS)。PostgreSQL支持大部分 SQL标准并且提供了许多其他现代特性:复杂查询、外键、触发器、视图、事务完整性、多版本并发控制。同样,PostgreSQL 可以用许多方法扩展,比如, 通过增加新的数据类型、函数、操作符、聚集函数、索引方法、过程语言。并且,因为许可证的灵活,任何人都可以以任何目的免费使用,修改,和分发PostgreSQL, 不管是私用,商用,还是学术研究使用。
优点:
事实上, PostgreSQL的特性覆盖了SQL-2/SQL-92 和 SQL-3/SQL-99,首先,它包括了可以说是目前世界上最丰富的数据类型的支持,其中有些数据类型可以说连商业数据库都不具备, 比如 IP 类型和几何类型等;其次,PostgreSQL是全功能的自由软件数据库,很长时间以来,PostgreSQL是唯一支持事务、子查询、多版本并行控制系统、数据完整性检查等特性的唯一的一种自由软件的数据库管理系统。直到最近才有 Inprise的InterBase以及SAP等厂商将其原先专有软件开放为自由软件之后才打破了这个唯一。最后,PostgreSQL拥有一支非常活跃的开发队伍,而且在许多黑客的努力下,PostgreSQL的质量日益提高。
从技术角度来讲,PostgreSQL采用的是比较经典的C/S(client/server)结构,也就是一个客户端对应一个服务器端守护进程的模式,这个守护进程分析客户端来的查询请求,生成规划树,进行数据检索并最终把结果格式化输出后返回给客户端。为了便于客户端的程序的编写,由数据库服务器提供了统一的客户端 C 接口。而不同的客户端接口都是源自这个C接口,比如 ODBC,JDBC,Python,Perl ,Tcl,C/C++,ESQL等, 同时也要指出的是,PostgreSQL 对接口的支持也是非常丰富的,几乎支持所有类型的数据库客户端接口。这一点也可以说是PostgreSQL一大优点。
缺点:
从Postgres开始,PostgreSQL就经受了多次变化。
首先,早期的 PostgreSQL继承了几乎所有Ingres, Postgres, Postgres95 的问题:过于学院味,因为首先它的目的是数据库研究,因此不论在稳定性, 性能还是使用方便方面,长期以来一直没有得到重视,直到PostgreSQL项目开始以后,情况才越来越好,目前,PostgreSQL已经完全可以胜任任何中上规模范围内的应用范围的业务。
目前有报道的生产数据库的大小已经有TB级的数据量,已经逼近32位计算的极限。不过学院味也给 PostgreSQL带来一个意想不到的好处:大概因为各大学的软硬件环境差异太大的缘故,它是目前支持平台最多的数据库管理系统的一种,所支持的平台多达十几种,包括不同的系统,不同的硬件体系。至今,它仍然保持着支持平台最多的数据库管理系统的称号。
其次,PostgreSQL的确还欠缺一些比较高端的数据库管理系统需要的特性,比如数据库集群,更优良的管理工具和更加自动化的系统优化功能 等提高数据库性能的机制等。
十二、Grails
如今的Java Web开发对于需求来说已经变得过于复杂。当今众多Java领域的Web开发框架不仅使用复杂,而且并没有很好的遵循Don’t Repeat Yourself(DRY)原则。像Rails,Django和TurboGears这样的动态框架在Web开发领域开辟了一条新的道路,Grails基于这些概念之上,采用动态方法减小了Java平台上进行Web开发的复杂度,不过与那些框架不同的是,Grails是构建在Spring和Hibernate等Java已有的技术之上的。
Grails是一个full-stack框架,它借助于核心技术与相关的插件来解决Web开发中方方面面的问题,其中包括: 易于使用的基于Hibernate的对象-关系映射(ORM)层 称为Groovy Server Pages的表现层技术 基于Spring MVC的控制器层 构建于Gant 上的命令行脚本运行环境 内置Jetty服务器,不用重新启动服务器就可以进行重新加载 利用内置的Spring 容器实现依赖注入 基于Spring的MessageSource核心概念,提供了对国际化的支持 基于Spring事务抽象概念,实现事务服务层 借助于功能强大的Groovy动态语言和领域特定语言,以上那些特性变得非常易用。
十三、Struts
Struts是开源软件。使用Struts的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间。如果我们想混合使用Servlets和JSP的优点来建立可扩展的应用,Struts是一个不错的选择。
框架
Struts框架具有组件的模块化,灵活性和重用性的优点,同时简化了基于MVC的web应用程序的开发。
Struts可以清晰地区分控制,事务逻辑和外观,从而简化了开发应用程序的过程。Struts提供的类使得开发工作更加简单,这些类包括:
●控制程序流程的类
●实现和执行程序事务逻辑的类
●自定义的标记库使得创建和验证HTML表单更加容易
十四、JBoss
JBoss是全世界开发者共同努力的成果,一个基于J2EE的开放源代码的应用服务器。 因为JBoss代码遵循LGPL许可,可以在任何商业应用中免费使用它,而不用支付费用。2006年,Jboss公司被Redhat公司收购。JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3.0的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与Tomcat或Jetty绑定使用。
优点概述:
1、JBoss是免费的,开放源代码J2EE的实现,通过LGPL许可证进行发布。但同时也有闭源的,开源和闭源流入流出的不是同一途径。
2、JBoss需要的内存和硬盘空间比较小。
3、安装便捷:解压后,只需配置一些环境变量即可。
4、JBoss支持"热部署",部署BEAN时,只拷贝BEAN的JAR文件到部署路径下即可自动加载它;如果有改动,也会自动更新。
5、JBoss与Web服务器在同一个Java虚拟机中运行 JBoss运行后后台管理界面,Servlet调用EJB不经过网络,从而大大提高运行效率,提升安全性能。
6、用户可以直接实施J2EE-EAR,而不是以前分别实施EJB-JAR和Web-WAR,非常方便。
7、Jboss支持集群。
十五、GlassFish
GlassFish是一款强健的商业兼容应用服务器,达到产品级质量,可免费用于开发、部署和重新分发。
优点:
在遵守通用开发和发布许可版本 1.0 的前提下,开发者可以免费获得源代码,还可以对代码进行更改。要申请 Java Compatibility,商业分发的开发者需要签署 Java Developer License ,并在重新分发代码前验证代码已通过兼容性测试套件的测试。任何人均可签署分发协议,对代码进行审阅以贡献更改、错误修复和功能。
GlassFish 的更新版本将于每晚发布。发布的代码已经过了非常基本的测试以确保它们能够进行构建并执行,但这些代码并没有象产品发行版那样经过完整测试。
GlassFish 将实现最新版本的Java EE平台Java EE 5,这两者将大约同时成为最终版本。同时,Sun 还将基于GlassFish发行最终的受支持的兼容Sun Java System Application Server PE 9.0。
在2005年6月,Sun将GlassFish项目的Web站点向公众开放,从而发布了GlassFish 项目。开发者可以访问源代码、每晚构建、讨论组和电子邮件列表。这是开发者首次能够了解并参与应用服务器的开发过程。最初,访问仅限于Web 层,随着GlassFish 的开发,访问也将扩大到其他模块。
GlassFish 项目将Java EE呈现在更多爱好者面前,这些人最终将成为 Java EE 许可证持有者的客户。GlassFish不会更改许可证持有者的任何许可证条款。在遵守其许可证条款的前提下,许可证持有者仍可以销售或分发代码,并对已通过TCK的产品使用Java Compatibility品牌。在遵守授予开发者的CDDL许可证条款的前提下,他们可以使用、编辑、更改代码,并可以分发代码或将其用于生产。但他们没有得到使用CTS 的许可,也不能使用Java Compatibility品牌。
GlassFish虽然是一个标准的JavaEE服务器,但是它同样具有轻便的Web容器的优点,它和Tomcat一样是优秀的Servlet容器,同时,它具备延迟加载的功能,也就是说,GlassFish在启动时只会启动一些必需的核心服务项,如LocalJNDI服务,用于管理的JMX服务等,而对于暂时用不到的服务通通不予加载,直到需要的时候再说,而且这个特性不需要额外的配置。这样GlassFish的启动时间是以前的一半,内存占用也只有以前的一半。 GlassFish的另外一个秘密武器,就是Grizzly,Grizzly是一个基于JavaNIO技术,并完全以Java实现的一个HTTP的Listener,有了Grizzly,GlassFish在静态文件传输方面的性能比Tomcat要强得多,而且可以支持更多的并发访问。我们可以抛弃JBoss+Tomcat和Apache+Tomcat这样的组合了。
十六、CouchDB
CouchDB是用Erlang开发的面向文档的数据库系统,最近刚刚发布了1.0版本(2010年7月14日)。CouchDB不是一个传统的关系数据库,而是面向文档的数据库,其数据存储方式有点类似lucene的index文件格式,CouchDB最大的意义在于它是一个面向web应用的新一代存储系统,事实上,CouchDB的口号就是:下一代的Web应用存储系统。
特点:
一、CouchDB是分布式的数据库,他可以把存储系统分布到n台物理的节点上面,并且很好的协调和同步节点之间的数据读写一致性。这当然也得以于Erlang无与伦比的并发特性才能做到。对于基于web的大规模应用文档应用,然的分布式可以让它不必像传统的关系数据库那样分库拆表,在应用代码层进行大量的改动。
二、CouchDB是面向文档的数据库,存储半结构化的数据,比较类似lucene的index结构,特别适合存储文档,因此很适合CMS,电话本,地址本等应用,在这些应用场合,文档数据库要比关系数据库更加方便,性能更好。
三、CouchDB支持REST API,可以让用户使用JavaScript来操作CouchDB数据库,也可以用JavaScript编写查询语句,我们可以想像一下,用AJAX技术结合CouchDB开发出来的CMS系统会是多么的简单和方便 。
其实CouchDB只是Erlang应用的冰山一角,在最近几年,基于Erlang的应用也得到的蓬勃的发展,特别是在基于web的大规模,分布式应用领域,几乎都是Erlang的优势项目。