2008年的5.1劳动节,SpringSource发布了策划已久的开源应用服务器-SpringSource Application Platform。JavaEye的新闻频道也有报道: SpringSource 宣布发布 SpringSource Application Platform Beta 总体来说,Spring的Application Platform就是一个根据Rod Johnson自己对于Java企业应用开发的理解,自行制订了一套应用服务器的标准,并且开发了这样一个专用的应用服务器出来。但是Spring的应用服务器也有自己的一些特色,让我们简单看看: 这是Spring应 ...
Warp framework 是最近刚刚发布的、基于Google Guice的轻量级Web开发框架,我也是在JavaEye网站的新闻频道看到的这条新闻: warp-persist 1.0: 为Google Guice专门提供持久层与事务处理的框架,通过这个新闻仔细阅读了Warp网站上面的文档,感觉到很振奋,Warp是一个相当棒的Java Web框架,而且前景非常看好。 Warp框架充分利用了JDK5.0的Annotation和泛型机制,并且基于Google Guice这个IoC框架,提供了full-stack的Web开发设施,他主要包含了四个部分: warp-persist框架:封装Hib ...
在过去的很多年,我以为关系模型就是传统的企业应用当中DBA设计的那些无数冗余字段,多个模型合并到一个表里面的数据库设计方式,这种数据库设计非常适合复杂的OLAP类型的查询,他可以有效的消除多表联合查询,而我们大家都知道,大表的复杂关联查询是性能杀手,一旦无法有效利用索引,导致了全表扫描,等待你的只有数据库服务器硬盘灯的狂闪不止,和无数进程阻塞在IO WAIT状态的无奈。 我前几个月订购了一本人邮图灵出版的《MySQL 5 权威指南》第三版中文版,买这本书只是因为有人送我China-Pub的优惠券,我就顺手买本MySQL的书,用来管理JavaEye服务器的时候备查的。其实这本书内容很一般,他说 ...
2007-08-02

AJAX与RIA技术之我见

关键字: ajax flex
DHH于6月底曾经发表过一篇文章,名为《我就喜欢HTML/CSS/JavaScript,那又怎么样!》,大意是说,目前热炒的RIA技术并不能够取代AJAX技术,而事实上我们还没有发挥出HTML的全部潜力,我本人很享受HTML/CSS/JS给给我的开发体验云云。 我比较赞成DHH的观点,从另外一些角度谈谈我对RIA技术,主要是Flex的看法。 我在2004年曾经指导一个企业应用系统的开发,这个系统提出了比较高的实时反馈和交互式要求。由于同时有两个flash高手加盟,我们决定采取基于flash的RIA技术: 对于交互要求非常高的部分使用flash开发,flash通过AMF协议和服务器端通讯, ...
在四年以前,当我开始鼓吹Hibernate,抨击EJB的时候,遭到的是群起而攻之的场面,但是不到一年之后,Hibernate已然得到了普及和大多数Java开发人员的认可; 在三年以前,当我开始赞誉spring的时候,spring还面临着EJB3的阴影,以及EJB2对其不登大雅之堂的指责,然而不到一年的时间,spring已经成为绝大多数Java开发人员的首选; 在两年以前,我极力希望宣传webwork,唱衰JSF,时至今日,webwork以Struts2.0的身份容登大雅之堂,而JSF还在靠厂商死挺着; 而当一年之前我开始采用RoR开发JavaEye的时候,RoR的置疑之声还甚嚣尘上,但当我在今 ...
上周末在杭州网侠大会做演讲的时候,我说:Java开源框架的革命浪潮已经结束了,未来几年,将是Java语言级别的革命。说实话,自从03年Hibernate火爆,04年spring流行之后,Java开源领域实在太缺乏亮点了。但是,Java的主流开源框架真的一点改进的余地都没有了吗? 先来说说Hibernate吧。Hibernate确实功能强悍,但是Hibernate不够易用,而且有一些明显的缺陷:one-to-one必须通过bytecode enhancement才能lazy loading;不支持多态关联;怪异的inverse配置和维护;DetachedCriteria有明显的bug;many ...
这篇文章源自于: http://www.javaeye.com/topic/77195 其中很多人谈到了缓存命中率的问题,应用缓存的命中率取决于很多的因素: 1、应用场景 是OLTP还是OLAP应用,即使是OLTP,也要看访问的频度,一个极少被访问到的缓存等于没有什么效果。一般来说,互联网网站是非常适合缓存应用的场景。 2、缓存的粒度 毫无疑问,缓存的粒度越小,命中率就越高,对象缓存是目前缓存粒度最小的,因此被命中的几率更高。举个例子来说吧:你访问当前这个页面,浏览帖子,那么对于ORM来说,需要发送n条SQL,取各自帖子user的对象。很显然,如果这个user在其他帖子里面也跟贴了,那 ...
缓存是有很多层次的,有web server前端缓存,有动态页面静态化,有页面片断缓存,有查询缓存,也有对象缓存。不同层面的缓存适用于不同的应用场景,作用也各自不同,如果可以,你全部一起用上,他们不矛盾,但这个话题比较大,现在不展开谈。 针对OLTP类型的web应用,只要代码写的质量没有问题,最终的性能瓶颈毫无疑问还是数据库查询。应用服务器层面可以水平扩展,但是数据库是单点的,很难水平扩展,所以如何有效降低数据库查询频率,减轻数据库压力,是web应用性能问题的根源。 以上所有的缓存方式都可以直接或者间接的降低数据库访问,但缓存是有应用场景的,虽然新闻网站非常适合使用动态页面静态化技术,但是例 ...
2007-03-30

点评Grails vs RoR

关键字: Grails
Grails的革新和RoR相比,非常不彻底,很多地方兼容Java习惯的痕迹很明显,所以使用起来,远远没有RoR快速和方便;Grails和传统Java编程相比,毕竟是动态脚本语言,因此又不具备传统的编译器检查的好处。总之,就是Grails这种中庸的态度导致Grails从快速开发角度既不如RoR,从类型安全的角度又丧失了Java静态类型的好处。 另外,虽然Grails作者因为rhtml可以嵌入ruby代码,所以对rhtml不爽,但是我更不爽JSP Tag。可以这样说,JSP Tag是Java有史以来web编程发展历史上的最大败笔。jsp tag导致了难以进行页面局部重用,难以动态切换页面实现,这 ...
2007-03-30

缓存简述

关键字: cache
缓存实现的层面有很多: 1、对象缓存 由ORM框架提供,透明性访问,细颗粒度缓存数据库查询结果,无需业务代码显式编程。当软件结构按照ORM框架的要求进行针对性设计,使用对象缓存将会极大降低web系统对于数据库的访问请求。因为类似Hibernate这样的ORM,良好的设计数据库结构和利用对象缓存,在大负载网站,能够提供极高的性能。因为使用对象缓存也无需显式编程,所以适用范围也最广泛。 2、查询缓存 对数据库查询结果行集进行缓存,适用于一些耗时,但是时效性要求比较低的场景。iBATIS就只能使用查询缓存,而无对象缓存。查询缓存和对象缓存适用的场景不一样,是互为补充的。 3、片断缓存 针对动态 ...
http://jruby.codehaus.org/ 自从Sun雇佣了JRuby团队之后,JRuby团队的进展确实非常迅速阿。3月5号,JRuby发布了0.9.8版本,在该版本上面,rails1.2.1的98%的单元测试得到通过,可以认为JRuby正式支持rails了。此外0.9.8版本在IO方面性能也有了很大的提高,貌似提高了6.5倍之多。 预计JRuby在扫除了最后2%的不兼容问题之后,很快就会发布JRuby1.0正式版本。 有了Sun公司的大力推动,JRuby还是很值得期待的。
2007-03-03

domain model的延伸讨论

关键字: domain model
domain model,又称为领域模型,是Java企业应用讨论的一个热门话题,JavaEye也曾经多次围绕这个话题讨论,我们来看个简单的例子: 引用 一个简单的公司工时管理系统,记录员工的个人信息,每个员工的工作任务分配,以及工作所属类别(例如开发,还是测试,还是培训等等),其中每个员工有n个任务,员工和任务是一对多关系,每个员工也分别隶属于多个不同的工作类别,员工和类型是多对多关联关系,而每个任务也分别隶属于唯一的工作类别,任务和类别是多对一关系。另外系统不要求对部门信息进行维护,不需要department表。因此,在这个系统中使用四张数据库表: users表保存员工信息,有name, ...
2007-02-27

可以开始用Struts2.0了

关键字: struts
http://struts.apache.org/ Apache已经发布了Struts2.0的正式版,即2.0.6GA版本。这个版本已经可以在项目中正式使用了。当然大家一定很关心,从webwork2.2迁移到struts2.0麻烦不麻烦,请看Struts2.0的FAQ: 引用Essentially, Struts 2.0 is the technical equivalent of WebWork 2.3. Aside from the package and property renaming, it isn't much different than, say, migrating f ...
http://code.google.com/p/google-guice/ Google公司的Bob lee开发的轻量级IoC容器,其特点是: 1、速度快,号称是spring的100倍速度 2、无配置文件,实用JDK5.0的annotation描述组件依赖,简单,而且有编译器检查和重构支持 3、简单,代码量很少 http://code.google.com/p/google-guice/wiki/SpringComparison 这是Google guice和spring IoC容器的对比 另外xwork2.0已经集成了Google guice容器了。 http://docs.g ...
Spring自从2003年发布以来,一直是Java开源框架的奇迹之一。从2000年开始,伴随着B/S架构逐渐引入企业应用软件开发的领域,Java就逐渐成为企业应用开发的主流技术,一直到2003年,Struts+EJB一直是Java技术架构的不二选择,然而这一切随着2003年Spring以without EJB的面目出现之后,一切都开始改变。 大概从2003年下半年开始,Spring+Hibernate就开始甚嚣尘上,似乎那时候的Spring和Hibernate尚且不足以动摇J2EE规范以EJB为核心的领袖地位。但是2004年5月份,吸收了Spring/Hibernate框架优点的EJB3 J ...
2007-02-07

Java程序员的推荐阅读书籍

关键字: 读书
《Java程序员的推荐阅读书籍》 JavaEye (http://www.javaeye.com) 范凯(http://robbin.javaeye.com) 作为Java程序员来说,最痛苦的事情莫过于可以选择的范围太广,可以读的书太多,往往容易无所适从。我想就我自己读过的技术书籍中挑选出来一些,按照学习的先后顺序,推荐给大家,特别是那些想不断提高自己技术水平的Java程序员们。 一、Java编程入门类 对于没有Java编程经验的程序员要入门,随便读什么入门书籍都一样,这个阶段需要你快速的掌握Java基础语法和基本用法,宗旨就是“囫囵吞枣不求甚解”,先对Java熟悉起来再说。用很短的 ...
2006-12-27

应该如何正确使用Quartz

关键字: quartz job
对于Web容器来说,最忌讳应用程序私自启动线程,自行进行线程调度,像Quartz这种在web容器内部默认就自己启动了10个线程进行异步job调度的框架本身就是很危险的事情,很容易造成servlet线程资源回收不掉,所以我一向排斥使用quartz。 quartz还有一个问题就是不支持cluster。导致使用quartz的应用都没有办法做群集。 那么应该如何正确的使用quartz的同时,又不影响web容器自身的线程调度呢? 办法就是自己单独启动一个Job Server,来quartz跑job,不要部署在web容器中。 其他web节点当需要启动异步任务的时候,可以通过种种方式(DB, JMS ...
http://www.javaeye.com/topic/17785 buaawhl同学在2005年底发起了这个针对2006年的软件行业大预测。此时此刻2006年将近尾声了,那么这一年当中究竟在我们的行业当中发生了些什么呢?有哪些预测已经应验,又有哪些预测将在未来一年当中发生呢?让我们大胆的预测一下2007吧: 一、Java开源会带来什么? Java开源的意义非常深远,仿佛解除了套在Java身上的枷锁,任何厂商都可以在遵循GPL的前提下自行改造Java和JDK。在未来的一年当中,我们必将看到很多基于Java的有趣的产品和创意诞生。事实上我认为07年对Java来说,是至关重要的一年,这一年 ...
http://www.javaeye.com/topic/17785 buaawhl同学在2005年底发起了这个针对2006年的软件行业大预测。此时此刻2006年将近尾声了,那么这一年当中究竟在我们的行业当中发生了些什么呢?有哪些预测已经应验,又有哪些预测将在未来一年当中发生呢?先让我们来回顾一下吧: 一、Red Hat收购了JBoss 这是三四月份发生的事情,收购对于JBoss来说是件好事情,傍上了一颗大树,可以借助Red Hat的力量把JBoss的服务拓展到全球,而这对于只有几十个人的小公司JBoss来说是无能为力的。 对于Red Hat来说,喜忧掺半,喜则产品线齐全,忧则Orac ...
在参与这个讨论的过程中,产生了一个新的话题,很想和大家探讨一下: http://www.javaeye.com/topic/33890 引用是像Java或者C#这样强类型的准静态语言在实现复杂的业务逻辑、开发大型商业系统、以及那些生命周期很长的应用中也有着非常强的优势 这是一个存在于大家心里常识了。我承认我自己在潜意识里面也觉得静态强类型语言适合开发复杂,大型系统。而弱类型脚本语言不适合开发太复杂,太大型的项目。但是在参与这个讨论过程中,我突然开始置疑这个观点,事实究竟是不是这样的呢? 先定义一下标准: 强类型语言(静态类型语言)是指需要进行变量/对象类型声明的语言,一般情况下需要编 ...
http://jyaml.sourceforge.net/ YAML的Java库,现在可以用Java来读取YAML。YAML是ruby常用的配置文件,对象序列化格式,比XML轻便,易读,比properties表达能力丰富。在ruby世界很受欢迎。现在有了Java的库了。我觉得值得好好看一下,说不定以后可以用YAML取代Java世界的XML配置文件了。 我是通过bd7lx的博客了解到这玩意的: http://bd7lx.javaeye.com/blog/29511
2006-10-17

Hibernate3.2版本正式发布了

关键字: Hibernate
前几天Spring2.0刚刚大张旗鼓发布,现在Hibernate3.2正式版,连同annotation和entitymanager就一起静悄悄的发布了,要不是因为我订阅了Hibernate的blog,还不知道呢。 从sourceforge上面拉东西总是很慢,在慢慢等待过程中把3.2的文档扫了一下。Hibernate3.2开始,annotation和JPA算是正式推出了,虽然以前也不少公司早就开始用了,不过现在算是一个正式的开始。 我不知道annotation会不会得到大家的认可和喜爱,我自己在Eclipse3.2里面试了试,发现现在Eclipse对于annotation的支持实在是太弱了。 ...
2006-10-03

Spring2.0的新特性点评

关键字: spring
Spring2.0的发布恐怕算得上2006年Java社区的一件大事了。在Spring2.0发布附带的文档里面对2.0新特性做了概要的介绍,2.0的新特性是自然是我们最关注的方面: 一、Spring的XML配置引入XML Schema语法简化配置 在Spring1.x系列中,bean的配置文件使用DTD,没有namespace的分隔。2.0的一个非常大的改进是引入了XML Schema的namespace,因而可以将bean的配置文件做大幅度的简化。这些简化包括了对bean属性的各种简化,AOP配置的简化,事务配置的简化,JNDI配置的简化等方面。当然,在简化配置的同时,新的XML Sche ...
2006-09-18

选择Hibernate还是iBatis?

关键字: hibernate ibatis
选择Hibernate还是iBATIS都有它的道理: Hibernate功能强大,数据库无关性好,O/R映射能力强,如果你对Hibernate相当精通,而且对Hibernate进行了适当的封装,那么你的项目整个持久层代码会相当简单,需要写的代码很少,开发速度很快,非常爽。 Hibernate的缺点就是学习门槛不低,要精通门槛更高,而且怎么设计O/R映射,在性能和对象模型之间如何权衡取得平衡,以及怎样用好Hibernate方面需要你的经验和能力都很强才行。 iBATIS入门简单,即学即用,提供了数据库查询的自动对象绑定功能,而且延续了很好的SQL使用经验,对于没有那么高的对象模型要求的项目 ...
http://www.javaeye.com/topic/24436 我不想打断ozzzzzz接下去的发言,所以另外开一贴,应和一下ozzzzzz的帖子。 说Java将死,我觉得结论不能下的这么早。虽然外部的商业模式在迅速改变,但是Java本身也在迅速的改变,现在还不能下断言就说Java一定会在新的商业模式崛起之后就被淘汰,也很有可能Java能够迅速适应新的商业模式,并且找到自己的新的定位和扮演的新角色。 当前在Java领域有几个值得关注的发展方向: 1、SOA SOA与其说是一种技术,不如说一个商业词汇。今年初参加BEA SHUG,BEA的consult讲SOA,他自己就很坦白的说 ...
2006-09-14

谈谈Hibernate令人不爽的地方

关键字: Hibernate rails
对于Hibernate,有两点值得反思: 1、HQL创造出来一种语言,目的是以对象方式类SQL去查询数据库,但是为什么不像rails那样,干脆直接定义COC让数据库schema 和对象的schema吻合在一起呢?这样,SQL不就是直接变成了对象查询语言了吗?缺点就是放弃更多更复杂的对象映射模型。但是我的经验表明,项目中要尽量避免复杂的对象映射,这样性能很糟糕,也很容易出错,实际上我仅仅只用n:1就可以表达很多种映射模型了。化繁为简,大巧若拙实为最高境界。 2、现在极其厌恶Hibernate生成的SQL,又臭又长,极难阅读。
9月初,Sun公司雇佣了JRuby开源项目的两个核心开发人员Charles Nutter和Thomas Enebo,专职从事JRuby开源项目的开发工作。从Charles Nutter和Thomas Enebo的私人博客的字里行间,我们可以感受到他们对Sun公司对于JRuby项目认可,以及对JRuby项目提供了大力支持而无比振奋。 这是Charles的blog http://headius.blogspot.com/2006/09/jruby-steps-into-sun.html 单纯从web项目的开发效率上衡量,Java已经无法和ruby on rails相提并论,但有趣的是Java并 ...
2006-09-11

点评Java full-stack框架

关键字: full-stack
2005年ruby on rails横空出世般的流行刺激了Java开源框架整合的大趋势,ruby on rails这个号称“full-stack”的框架能做的我们都能做,它就是整合的更好,省略了配置文件,提供了快速代码生成器,暂且不论ruby on rails本身,但是诸多Java开发人员把目光从只做好一件事情上面挪到了“提供最方便的full-stack框架”上面,因此我们可以看到整个Java开源社区雨后春笋般的出现了一批又一批的full-stack框架,Java社区的开源软件哲学已经修改为:“要做最方便好用的full-stack框架”,那么就让我们来一一细数这些full-stack框架吧: ...
robbin
搜索本博客
我的相册
213cbb75-7dae-37b2-b9ce-9e7b49f784d3-thumb
游乌镇
共 33 张
其他分类
存档
最新评论