PHP,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hypertext Preprocessor)的缩写。PHP 是一种HTML内嵌式的语言,PHP与微软的ASP颇有几分相似,都是一种在服务器端执行的嵌入HTML文档的脚本语言,语言的风格有类似于C语言,现在被很多的网站编程人员广泛的运用。PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法。它可以比 CGI 或者 Perl 更快速的执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;与同样是嵌入HTML文档的脚本语言Javascrīpt相比,PHP在服务器端执行,成分利用了服务器的性能;PHP执行引擎还会将用户经常访问的PHP程序驻留在内存中,其他用户在一次访问这个程序时就不需要重新编译程序了,只要直接执行内存中的代码就可以了,这也是PHP高效率的体现之一。PHP具有非常强大的功能,所有的CGI或者Javascrīpt的功能PHP都能实现,而且支持几乎所有流行的数据库以及操作系统。
PHP 最初是1994年Rasmus Lerdorf创建的,刚刚开始只是一个简单的用Perl语言编写的程序,用来统计他自己网站的访问者。后来又用C语言重新编写,包括可以访问数据库。在1995年以Personal Home Page Tools (PHP Tools) 开始对外发表第一个版本,Lerdorf写了一些介绍此程序的文档,并且发布了PHP1.0。在这早期的版本中,提供了访客留言本、访客计数器等简单的功能。以后越来越多的网站使用了PHP,并且强烈要且增加一些特性,比如循环语句和数组变量等等,在新的成员加入开发行列之后,在1995年中,PHP2.0发布了。第二版定名为PHP/FI(Form Interpreter)。PHP/FI加入了对mSQL的支持,从此建立了PHP在动态网页开发上的地位。到了1996年底,有15000个网站使用 PHP/FI;时间到了1997年中,使用PHP/FI的网站数字超过五万个。而在1997年中,开始了第三版的开发计划,开发小组加入了 Zeev Suraski 及 Andi Gutmans,而第三版就定名为PHP3。2000年,PHP4.0又问世了,其中增加了许多新的特性。
PHP的特性包括以下几点:
PHP是免费的,开放的源代码:所有的PHP源代码事实上都可以得到。基于服务器端:由于PHP是运行在服务器端的脚本,可以运行在UNIX、LINUX、WINDOWS下。嵌入HTML:因为PHP可以嵌入HTML语言,所以学习起来并不困难。简单的语言:PHP坚持脚本语言为主,与Java以C++不同。效率高:PHP消耗相当少的系统资源。图像处理:用PHP动态创建图像。
现在大多使用的是php5.0版本的,更多php相关信息请浏览php开源专栏。
【开源技术】标签文章列表
PHP语言介绍 让初学者了解什么是php语言
MySQL创始人寻求中国帮助 开心编程网加入全球拯救MySql行动
MySQL创始人向中国方面求援的邮件。全文如下:
亲爱的拯救MySQL的中国签名支持者:
欧盟可能无法拯救MySQL, 中国和俄罗斯可能是拯救MySQL的希望之所在。中国拥有强大、独立以及自信的反垄断主管机关,因此,我本人在此请求您的帮助。对于您在http://www.helpmysql.org/ru/petition的签名,我们深表感谢。如果可以的话,我们需要您的进一步帮助:
(1)商务部反垄断局是并购反垄断审查的主管机关,包括本次对甲骨文收购太阳微电子的反垄断审查。如果您正在使用MySQL,您的意见将对于商务部反垄断局的审查非常重要。我们不能详细的指示您该如何如何对主管机关反映情况,因为这是不妥当的。但是我们认为,如果您能告诉主管机关您的公司如何使用MySQL (什么项目,什么规模、数据流量以及使用者数量等)以及您认为甲骨文收购MySQL之后会产生什么样的影响,将会非常有用。如果您知道MySQL是昂贵的甲骨文数据库的免费替代品,举例向商务部反垄断局说明将会很有帮助。特别是,您知道或使用MySQL作为筹码,或声称将使用MySQL,以此要求甲骨文数据库降低价格的情况,请一定向商务部说明。我们希望您能直接写信给商务部反垄断局。
商务部反垄断局会保护MySQL以及您作为使用者,客户和消费者的利益。在与商务部的沟通过程中,请您简单明了地说明您具体需要什么样的帮助。
(2)感谢许许多多像您一样支持我们的人,我们在中国已经收集到了650 个签名,请见:http://helpmysql.org/cn/stats。 这是一个很好的开始。但是像中国这样一个支持开源的大国,应该会有更多人的签名。问题可能在于很多人可能认为这是欧盟委员会审查决定的事项,中国可能无法改变什么。事实上,中国商务部反垄断局可以做出自己的决定。
在中国,知道此事的人可能还不多,新闻报道也比较有限。如果您有兴趣,可以帮我们联系中国有影响力IT网站或杂志,告诉他们这次签名活动。
如果有更多的网站参与进来,就会有更多的人签署请愿书,虽然这只是第一步。切记确保文章中或网站中提到helpmysql.org,或者提供一个链接http://helpmysql.org/cn/theissue/customerspaythebill
对于您所做出的任何帮助,我在此预致感谢!
Michael Widenius
Creator of MySQL
广大技术技术编程爱好者,如果你见到了这篇文章,也请你加入到我们的行列,让我们一起拯救MySQL,将开源进行到底!
Spring 和EJB统一融合 Spring将支持EJB3.1标准
Spring 和EJB争吵终于即将结束:Spring将支持EJB3.1标准,Spring will also be a full featured EJB 3.1 implementation for use in the WebLogic application server.这场融合将在javaEE 6实现,这个融合和当初Hibernate与JPA融合一样水到渠成。
Spring创始人Rod Johnson 说Spring 2.5的dependency injection annotations是学习得益于EJB 3.0的 @Resource 和 Google’s Guice,我不知道他为什么没有提picocontainer,至少他的Spring 2.5开始直接大胆使用DI的auto wiring(而这个功能在Spring 1.X中还是可选功能),而2005年我的Jdon框架就完全是auto wiring。
Rod Johnson 鼓励开发者使用EJB标准,比如 @PostConstruct 和 @PreDestroy annotations,因为他们是标准化的,Spring已经支持他们(Spring才支持它们?今天才明白?),这些都意味着Spring和EJB争吵的结束。
其实EJB的@PostConstruct @PreDestroy @Resource 这样annotations都可以在EJB2中找到影子和原根,表现语法不一样,但是内部机制原理是一致的。所以,以前没有学过EJB的,看来还是要补这一课。
PostConstruct和PreDestroy都是在对象生命周期开始以及结束让程序员能够进行一些状态管理,比如开始一些场景准备和加载,或者结束后,释放一些资源,防止内存泄漏,这些都是从EJB1.X 无态Bean开始就有的功能,不过当初是使用XML配置,并且无论程序员实现与否,一定要写这几个方法,现在通过注解 annotation 加在你需要实现的方法上,更加简洁方便。
所以,我以前说:如果说EJB1/EJB2X是一个定型的女孩的话;那么EJB3引入IOC/DI依赖注射和annotation以后,就更漂亮,更加吸引程序员接近她,也非常容易和其打交道了。
EJB从开始诞生起,因为高低各种原因,被高端和低端各种人怀疑打击,真正是遭受了不公平待遇,
高端专家比如Martin Fowler因为其不宜测试,提出POJO思想,认为对象应该不依赖平台,应该是一个个光溜溜来去无牵挂的,不继承任何框架接口等。不可否认POJO促进了EJB3变得更漂亮,但是EJB内在分布式计算组件的重点没有变。
在低端程序员中,EJB以其深奥的原理和超前的设计思维,更不能被他们理解,他们甚至以一种僵化思维来看:现实80%不是大系统,不需要集群分布式计算。
[...]
详解JAVA spring相关jar包,以及java spring jar包依赖说明
spring.jar是包含有完整发布的单个jar包,spring.jar中包含除了 spring-mock.jar里所包含的内容外其它所有jar包的内容,因为只有在开发环境下才会用到spring-mock.jar来进行辅助测试,正式应用系统中是用不得这些类的。
除了spring.jar文件,Spring还包括有其它13个独立的jar包,各自包含着对应的Spring组件,用户可以根据自己的需要来选择组合自己的jar包,而不必引入整个spring.jar的所有类文件。
(1) spring-core.jar
这个jar文件包含Spring框架基本的核心工具类,Spring其它组件要都要使用到这个包里的类,是其它组件的基本核心,当然你也可以在自己的应用系统中使用这些工具类。
(2) spring-beans.jar
这个jar文件是所有应用都要用到的,它包含访问配置文件、创建和管理bean以及进行Inversion of Control / Dependency Injection(IoC/DI)操作相关的所有类。如果应用只需基本的IoC/DI支持,引入spring-core.jar及spring- beans.jar文件就可以了。
(3) spring-aop.jar
这个jar文件包含在应用中使用Spring的AOP特性时所需的类。使用基于AOP的Spring特性,如声明型事务管理(Declarative Transaction Management),也要在应用里包含这个jar包。
(4) spring-context.jar
这个jar文件为Spring核心提供了大量扩展。可以找到使用Spring ApplicationContext特性时所需的全部类,JDNI所需的全部类,UI方面的用来与模板(Templating)引擎如 Velocity、FreeMarker、JasperReports集成的类,以及校验Validation方面的相关类。
(5) spring-dao.jar
这个jar文件包含Spring DAO、Spring Transaction进行数据访问的所有类。为了使用声明型事务支持,还需在自己的应用里包含spring-aop.jar。
(6) spring-hibernate.jar
这个jar文件包含Spring对Hibernate 2及Hibernate 3进行封装的所有类。
(7) spring-jdbc.jar
这个jar文件包含对Spring对JDBC数据访问进行封装的所有类。
(8) spring-orm.jar
这个jar文件包含Spring对DAO特性集进行了扩展,使其支持 iBATIS、JDO、OJB、TopLink,因为Hibernate已经独立成包了,现在不包含在这个包里了。这个jar文件里大部分的类都要依赖 spring-dao.jar里的类,用这个包时你需要同时包含spring-dao.jar包。
(9) spring-remoting.jar
这个jar文件包含支持EJB、JMS、远程调用Remoting(RMI、Hessian、Burlap、Http Invoker、JAX-RPC)方面的类。
(10) spring-support.jar
(11) spring-web.jar
这个jar文件包含Web应用开发时,用到Spring框架时所需的核心类,包括自动载入WebApplicationContext特性的类、Struts与JSF集成类、文件上传的支持类、Filter类和大量工具辅助类。
(12) spring-webmvc.jar
这个jar文件包含Spring MVC框架相关的所有类。包含国际化、标签、Theme、视图展现的FreeMarker、JasperReports、Tiles、Velocity、 XSLT相关类。当然,如果你的应用使用了独立的MVC框架,则无需这个JAR文件里的任何类。
(13) spring-mock.jar
这个jar文件包含Spring一整套mock类来辅助应用的测试。Spring测试套件使用了其中大量mock类,这样测试就更加简单。模拟HttpServletRequest和HttpServletResponse类在Web应用单元测试是很方便的。
如何选择这些发布包,决定选用哪些发布包其实相当简单。如果你正在构建Web应用并将全程使用Spring,那么最好就使用单个全部的 spring.jar文件;如果你的应用仅仅用到简单的Inversion of Control / Dependency Injection(IoC/DI)容器,那么只需spring-core.jar与spring-beans.jar即可;如果你对发布的大小要求很高,那么就得精挑细选了,只取包含自己所需特性的jar文件了。采用独立的发布包你可以避免包含自己的应用不需要的全部类。当然你可以采用其它的一些工具来设法令整个应用包变小,节省空间的重点在于准确地找出自己所需的Spring依赖类,然后合并所需的类与包就可以了。Eclispe有个插件叫 ClassPath Helper可以帮你找找所依赖的类。
Spring包依赖说明:
1) spring-core.jar需commons-collections.jar,spring-core.jar是以下其它各个的基本。
2) spring-beans.jar需spring-core.jar,cglib-nodep-2.1_3.jar
3) spring-aop.jar需spring-core.jar,spring-beans.jar,cglib-nodep-2.1_3.jar,aopalliance.jar
4) spring-context.jar需spring-core.jar,spring-beans.jar,spring-aop.jar,commons-collections.jar,aopalliance.jar
5) spring-dao.jar需spring-core.jar,spring-beans.jar,spring-aop.jar,spring-context.jar
6) spring-jdbc.jar需spring-core.jar,spring-beans.jar,spring-dao.jar
7) spring-web.jar需spring-core.jar,spring-beans.jar,spring-context.jar
8) spring-webmvc.jar需spring-core.jar/spring-beans.jar/spring-context.jar/spring-web.jar
9) spring -hibernate.jar需spring-core.jar,spring-beans.jar,spring-aop.jar,spring- dao.jar,spring-jdbc.jar,spring-orm.jar,spring-web.jar,spring-webmvc.jar
10) spring-orm.jar需spring-core.jar,spring-beans.jar,spring-aop.jar,spring- dao.jar,spring-jdbc.jar,spring-web.jar,spring-webmvc.jar
11) [...]
Ubuntu桌面操作快捷键 ubuntu ADSL PPPOE拨号配置
最近没事情做,就给自己的电脑装了个Ubuntu系统,蛮好用的。只是刚开始操作不太习惯,桌面快捷键啊的都不太熟悉,琢磨了一段时间,又是google又是问朋友的,现在总算得心应手了,总结了下Ubuntu桌面操作快捷键,和大家分享下。还有大家提到的Ubuntu adsl pppoe拨号配置,一起分享给大家。
Ubuntu操作基本快捷键
* 打开主菜单 = Alt + F1
* 运行 = Alt + F2
* 显示桌面 = Ctrl + Alt + d
* 最小化当前窗口 = Alt + F9
* 最大化当前窗口 = Alt + F10
* 关闭当前窗口 = Alt + F4
* 截取全屏 = Print Screen
* 截取窗口 = Alt + Print Screen
默认特殊快捷键
* 展示所有窗口程序 = F10
* 展示当前窗口最上层程序 = F11
* 展示当前窗口所有程序 = F12
* [...]
编程技术 软件开发学习观念和技巧
我一直认为基础知识最重要,无论是对国家,还是对个人的后期发展,都是最重要的.有些人自以为是,以为会玩玩struts,hibernate之类的工具,就觉得自己不得了,其实,那算什么,一个用高级工具的用户而已,如果中国全是这样的高级用户,中国软件永远不会有出头之日,永远只能用别人做好的工具!非常遗憾的是,我搞这些基础知识的”研究”,常常引来一些讥讽声和嘲笑声,不过,这些讥讽声和嘲笑声并不能左右我的思想!我没必要为去迎合那些无知和没有远见的人(不是攻击别人,而我就是这么想的)而改变自己的立场和理念!
我现在不算精通struts,hibernate,spring,但是,还算学得明白,照着一些现有的书籍和别人的思路讲讲课,应该不会有什么问题.我并不觉得这样就有什么资本,我从未钦佩过那些使用struts,hibernate,spring的大虾们,而是只佩服当初开发struts,hibernate,spring这些框架的大侠们.佩服那些对这些框架的内部原理有深入研究的技术牛人们!我在学习struts和spring时,发现这些框架的设计师们对html,css,javascript,http协议,servlet,jsp,java等基础性知识掌握得都非常全面,并且细节都非常清楚,敢问国内那些看不上这些基础知识的人们,为何struts和spring设计师们都觉得这些知识重要,而你却认为不重要,说句不客气的话,因为你还连一点概念都没有,你永远到不了struts和spring设计师们的水平,我虽达不到他们的水平,至少我可以追随他们的思想,读懂他们的源码,知道他们为何要这么做!
每个人都可以有自己的想法,但没必要把自己的想法强加给其他人!
EJB 3.0持久化规范之实体类的要求
实体是一个可持久化的域对象。程序出来产物就是实体类,实体类可以作为一个辅助类,如可作为一个实体类的助手类或者作为代表实体类的状态的类。
实体类的要求
·实体类必须用entity标识符来声明,或者在配制文件中指明某个类为实体类。
·实体类必须有一个无参数的构造器。它也可以有其他的构造器。这个无参数的构造器必须是public或protected的。
·如果实体实例作为一个分离对象按值传递(如通过一个远程接口),则实体类必须实现serializable接口。
·实体类不允许是final的,它的所有方法都不允许是final的。
·实体支持继承,多义关联,多义查询。实体类可以是抽象的,也可以是具体的。实体类可以继承非实体类,非实体类也可以继承实体类。
·实体的状态由它的变量代表,这是和JavaBean的属性一样的。实体方法可以直接获得变量,但是实体的客户端必须通过获取变量的方法(getter/setter)来获取变量。实例变量必须是private,protected或包内可见的。
1、持久化字段和属性
实体的状态可以通过它的setter/getter方法或实例变量获得,这两种方式通称为运行时持久化提供器(指持久化实现的运行环境,在EJB环境中,可能是EJB容器,也可能是第三方提供的集成在EJB容器内的持久化实现):
·如果声明实体的标识符的元素值为access=FIELD,那么运行时持久化提供器直接获取实例变量,并且持久化所有non-transient实例变量(没有用Transient标识符标识的变量)。
·如果声明实体的标识符的元素值为access=PROPERTY,或者没有指定access的值,那么运行时持久化提供器通过getter/setter方法获取实例变量,并且持久化所有non-transient实例变量(没有用Transient标识符标识的变量)。所有的属性获取方法必须是public或protected。
·当使用FIELD类型时,O/R影射标识符用在变量上。当用PROPERTY时,O/R影射标识符用在getter/setter方法上。(注意:当在加载或存储持久化状态时,持久化提供者按照什么样的顺序来调用这些方法是不确定的。因此包含在这些方法内的业务逻辑不能依赖指定的调用顺序)。
当使用持久化属性时,要求实体遵循JavaBean的方法约定。在这种情况下,实体的类型T的每一个持久化属性property,都有一个getter方法getProperty和一个setter方法setProperty,对于boolean值则为isProperty。
对于简单值得持久化属性,这些方法如下形式:
对于集合类型的字段和属性,则必须用java.util.Collection接口定义,不管实体类是否遵循JavaBean的规范。下面的接口都是可以的:java.util.Collection,java.util.List,java.util.Set,java.util.Map。
对于集合类型的字段和属性,类型T必须是上述集合类型中的一个。也可以使用这些集合类型的泛型变量(如:Set)。
为了返回和设置实例的持久化状态,实例的属性获取方法内可以包含别的业务逻辑,如执行验证。注意:当属性的获取类型为PROPERTY时,持久化运行环境才会执行这些业务逻辑。但在增加的业务逻辑中应该有警告信息。
在属性获取方法内抛出的运行时异常会引起事务回滚。当持久化运行时环境使用这些属性获取方法加载或存储实例状态时,如果抛出应用异常,则会引起持久化运行环境回滚事务,并且会抛出封装了应用异常的PersitenceException。
实体的子类可以覆盖它的属性获取方法。然而,兼容性好的应用不需要覆盖应用在父类持久化字段和属性上的O/R影射元数据。
实体类的持久化字段和属性可以是原始类型、java.lang.String、也可以是其他可序列化类型(包括原始类型的封装类型,java.math.BigInteger,java.math.BigDecimal,java.util.Date,java.util.Calendar,java.sql.Date,java.sql.Time,java.sql.Timestamp,用户自定义类型,byte[],Byte[],char[]和Character[])、enum、实体类型和/或实体类型的集合、以及嵌套类型。
O/R影射元数据可以用来客户化O/R影射、实体状态和实体间关系的加载和存储。
2、创建实体实例
通过new操作符创建实体实例。当第一次创建实体实例时,这个实例是非持久化的。通过EntityManager的API可以将实例持久化。实体实例的生命周期在以后的文章中描述,在这里我就不再详细讲述了。
PHP数组全面总结 最全面的php数组学习资料
一、什么是数组
数组就是一组数据的集合,把一系列数据组织起来,形成一个可操作的整体。数组的每个实体都包含两项:键和值。
二、声明数据
在PHP中声明数组的方式主要有两种:一是应用array()函数声明数组,一是直接为数组元素赋值。
<1>array()函数声明的数组的方式array([mixed...]) 参数mixed的语法为key=>value
如,<?php
$array=array(“1″=>”编”,”2″=>”程”,”3″=>”词”,”4″=>”典”);
print_r($array);
echo “<br>”;
echo $array[1]; //注意:下标默认是从0开始
echo $array[2];
echo $array[3];
echo $array[4];
?>
<2>直接为数组元素赋值。如果在创建数组时不知所创建数组的大小,或在实际编写程序时数组的大小可能发生变化,采用这种数组创建的方法较好。
如,<?php
$array[1]=”I”;
$array[2]=”love”;
$array[3]=”PHP”;
print_r($array); //输出所创建数组的结构
?>
三、数组的类型
PHP支持两种数组:索引数组(indexed array)和联合数组(associative array),前者使用数字作为键,后者使用字符串作为键。
四、输出数组
在PHP中对数组元素输出,可以通过echo和print语句来实现,但这只能对数组中某一元素进行输出;要将数组结构输出则要使用print_r()函数,其语法:print_r(mixed expression),参数expression为普通的整形、字符型或实型变量则输出该变量本身,如果该参数为数组,则按一定键值和元素的顺序显示出该数组中的所有元素。
五、数组的构造
一维数组:
当一个数组的元素是变量时,则称其为一维数组。
声明一位数组: 类型说明符 数组名[常量表达式];
二维数组:
当一个数组的元素是一个一位数组时,则称之为二维数组。
如,<?php
$str = array (
“网络编程语言”=>array (“PHP”,”JSP”,”ASP”),
“体育项目”=>array (“m”=>”足球”,”n”=>”篮球”));
print_r ( $str) ;
?>
六、遍历数组
遍历数组中的所有元素是常用的一种操作,在遍历的过程中可以完成查询或其他功能。在PHP中遍历数组的方法有多种,下面介绍最常用的两种方法。
<1>使用foreach结构遍历数组;
<2>使用list()函数遍历数组,list()函数仅能用于数字索引的数组,且数字索引从0开始。
例:综合使用list()和each()认证用户登录:
<?php
//输出用户登录信息
while(list($name,$value)=each($_POST)){
if($name!=”submit”){
echo “$name=$value<br>”;
}
}
?>
七、统计数组元素个数
在PHP中,使用count()函数对数组中的元素个数进行统计,语法为:int coun(mixed array[,int mode]),其中参数array为必要参数,mode为可选参数,若选中COUNT——RECURSIVE(或1),本函数将递归地对数组数组。如,
<?php
$array = array(“php” => array(“PHP函数参考大全”,”PHP程序开发范例宝典”,”PHP数据库系统开发完全手册”),
“asp” => array(“ASP经验技巧宝典”)
); //声明一个二维数组
echo count($array,COUNT_RECURSIVE);//递归统计数组元素的个数,运行结果为6
?>
八、数组排序
<1>使用sort()和rsort()分别对数组进行升序和降序,如,
<?php
$array=array(5,26,37,18,9,42,88,66);
$array1=sort($array);
for($i=0;$i<count($array);$i++){
echo $array[$i].” ”;
}
echo “<br>”;
$array1=rsort($array);
for($i=0;$i<count($array);$i++){
echo $array[$i].”  ”;
}
?>
运行结果:
5 9 18 26 37 42 66 88
88 66 42 37 26 18 9 [...]
PHP的最佳实践就是“数组编程”
也研究了一段时间的PHP,使用过了一堆libraries,之后发现:原来PHP的最佳实践就是“数组编程”啊!
从以下几个角度来看:
1. 基本语法(foreach等、array函数库):对于数组的操作是最简便的,而且还支持literal样式的数组(类似于Java的Map),不用耗费多少时间就可以掌握。
2. 核心引擎(Zend Engine):面向对象的编程开发量比较繁琐,没有Java那么方便。更重要的是,PHP引擎处理对象的效率比较低。
3. 数据库访问(PHP原生):返回出来数组时效率最高,而且还最简单。
4. 模板引擎(Smarty等):使用数组时,对模板制作最方便(直接使用“.”就可以了)。
个人感觉,以后要做PHP项目时,首推的就是面向数组的编程,既快速又高效….
ZK 5.0 正式版发布,Ajax开发框架 免费下载
ZK是一套以 AJAX/XUL/Java 为基础的网页应用程式开发框架,用于丰富网页应用程式的使用接口。最大的好处是,在设计AJAX网络应用程式时,轻松简便的操作就像设计桌面程式一样。 ZK包含了一个以AJAX为基础、事件驱动(event-driven)、高互动性 的引擎,同时还提供了多样丰富、可重复使用的XUL与HTML组件,以及以XML为基础的使用接口设计语言 ZK User-interfaces Markup Language (ZUML)。
该版本发布的还包括一个以开发者为中心范式,其核心是CS模式融合和Ajax是服务的架构变革;集成最新的 jQuery 和 Java EE 6,同时还包含一些企业级应用功能。
点击这里下载 ZK 5.0正式版