- 浏览: 4841112 次
- 性别:
- 来自: 上海
-
博客专栏
-
-
robbin谈管理
浏览量:138233
文章分类
最新评论
-
xly1981:
领导者是团队的灵魂。深入一线的过程,包括代码review,能帮 ...
robbin谈管理:改造团队的经验(2) -
jiehuangwei:
像这种总结比较性的ppt文档可以多发啊
Web并发模型粗浅探讨 -
linux1308:
看完学习到了很多东西,感谢推荐!
推荐一篇很好的RoR部署方案性能评测 -
zweite:
直接对搜索的结果进行缓存是不是会更快一点呢
漫谈应用缓存的命中率问题 -
kaogua:
现在已经是ruby2.0了, 不知道这个的效率是怎么样的, 是 ...
Ruby作为服务器端应用已经成熟了
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框架:封装Hibernate和JPA,提供事务管理和持久化资源管理
warp-dynamic-finder:提供了基于Annotation的动态查询功能,让数据库查询变得异常简单,不再需要DAO层
warp-mvc:借鉴了Tapestry5,提供了一个基于事件机制和组件化的Web层,并且组件注入方式高度IoC化
warp-servlet: 提供了一些Servlet的封装和附加的高级功能,例如URL过滤,和其他web框架集成等等
这几年来,Java在Web开发框架方面的进步显得很有限,Spring/Hibernate组合对撼JBoss Seam形成两大竞争的主流态势,但是这两个Web框架在Web快速开发方面的创新还显得不够好:Spring是越来越臃肿了,配置文件也是越来越复杂难懂了;JBoss Seam门槛又过高,而且集成的JSF一向受人垢病,并非完美的解决方案,特别是在Ruby on Rails横空出世之后,Java社区对于简洁易用的快速web开发框架的企盼也是一直很高的。
Warp在我看来是这方面做的最好的,它有以下几个鲜明的特点:
一、充分利用JDK5的annotation,简化编程和配置文件
Warp基于Google Guice并且发扬光大,自身无配置文件,所有功能完成均通过annotation,所以编程相当简洁
二、大量使用JDK5的泛型编程,提供强类型安全保证
虽说脚本语言的Duck Typing理念很流行,不过Java的优势也就是类型安全,Spring大量运用反射和XML配置等于是放弃了Java的优势。Warp在泛型方面做的很好,我相信在IDE的帮助下,Warp编程会更轻松
三、Warp-persist提供了声明式的事务管理,终于可以取代Spring了
Google Guice很好很强大,但是它没有事务管理能力和资源管理能力,所以无法取代spring,但是Warp-persist填补了这一缺憾,注入和管理Hibernate很容易:
要声明事务比spring可简单多了:
Warp支持Hibernate/JPA的所有事务管理策略,不但注入方式简单,而且声明事务方式更简单,代码看着简洁,写着更省心。
四、Dynamic Finder实在很酷!
还是直接看代码吧:
用annotation声明一下,一行查询代码都没有,你还要DAO干啥呢?
带参数的绑定变量查询,还是一行代码不用写,DAO是啥?
带分页的查询,还是一行代码不用写,谁用DAO我跟谁急 !
五、Web层也极其简单
Warp-MVC模仿了Tapestry 5的架构,但是作者做了大量的改良和简化,作者解释了一下为什么不直接使用Tapestry,而是自己开发的理由。
Warp-MVC看起来像一个Tapestry的简化版,有组件的概念,事件响应的方式,但是非常易用,非常简洁,URL映射也通过annotation方式声明,作者在自己的博客上面提供了相关的简单示例,可以参考:
http://www.jroller.com/dhanji/
Warp框架是最近几年来,我看到的第一个走在正确发展方向上的Java Web框架:结构简单、易用使用、但充分发挥了Java自身的语法优势,非常值得期待!
目前Warp框架还不是特别成熟,但是Warp-persistent已经相当稳定了,如果你是使用Hibernate/Spring/Struts来开发项目的话,不妨试试Warp,把spring换掉改成Hibernate/Warp/Struts2.0,也是一个不错的解决方案,全部运用annotation,让你的项目Zero Configuration。
友情提醒:Warp官方网站无法直接访问,建议在FireFox浏览器上面安装gladder插件,跨越GFW。
Warp Framework - 官方网站
如果你是一个有三年以上Java开发经验的程序员,我不相信学习一个Warp框架要花你几个月时间才能学会。这东西你找个周末钻研两个整天足够你熟练的上手编程了(其实在我看来一个晚上的学习时间已经足够)。学点新东西真的那么难吗?
学新技术并不是要逼你在项目当中立刻用上不可,但既然大家有时间泡JavaEye,我相信平时工作之余挤出时间学点新技术并不是啥为难的事情吧。而且随着你经验越来越丰富、知识越来越广博、学习的速度也会越来越快,一门新技术真正对你来说是新的知识是很少的,而正是这新的知识能给你带来很多新的思路。你学的越多,学的越快,就会发现单位学习成本越低,单位学习产出越大。反过来你越害怕学习,那你的单位学习成本越高,单位学习产出越小。
我强调的就是精通一个,了解一批。
如果做到精通,就必须在实际项目中应用。我冒昧的猜测,robbin用ROR作JavaEye也是这个目的吧。不在项目中使用,只是照搬quik start的代码,是没有用处的。这一年,我学习了ROR、GRails,ExtJS,PHP,iBatis等,因为没有在项目中实践,结果只能是泛泛的了解。项目中还是使用struts2+spring+hibernate,Widgets只能用dojo,看着Ext华丽的界面,只有干流口水。原因只有一个,我们对这些技术最熟悉,其中多数连源代码也学习过。只有这样,我们才能很好的把控项目的进度、成本、技术难点等等。
我们要做的是软件工程师,而不是技术狂人。
对现在需要用到技术钻研和精通,有时间的话多涉猎一些,有一些初步的了解,清楚他的特点、优势和劣势、应用的场合就可以了。
其实从兴趣角度来说,你涉猎的比我要广泛。我学技术是个实用主义者,不会因为兴趣去花时间,而是根据需要来学。什么技术可能会对我现在和将来用得上,那我就会去花时间了解,经过了解以后认为很有前景,那我就会继续花时间钻研下去,如果有什么技术刚好对我现在的事情有很大帮助,那我就会好好钻研一番。如果用不上的技术,我不会去学习,最多只是稍微了解一下,比方说你提到的iBATIS,EXT 我用不上就不会看它,Grails我不好,所以也不会学它。还比方说Python和Erlang现在也比较热门,但我用不上他们,所以也不会去看他们。
从svn里面checkout他的源代码,里面的example和test还是写的很清楚的,看一下就全明白了。
如果你是一个有三年以上Java开发经验的程序员,我不相信学习一个Warp框架要花你几个月时间才能学会。这东西你找个周末钻研两个整天足够你熟练的上手编程了(其实在我看来一个晚上的学习时间已经足够)。学点新东西真的那么难吗?
学新技术并不是要逼你在项目当中立刻用上不可,但既然大家有时间泡JavaEye,我相信平时工作之余挤出时间学点新技术并不是啥为难的事情吧。而且随着你经验越来越丰富、知识越来越广博、学习的速度也会越来越快,一门新技术真正对你来说是新的知识是很少的,而正是这新的知识能给你带来很多新的思路。你学的越多,学的越快,就会发现单位学习成本越低,单位学习产出越大。反过来你越害怕学习,那你的单位学习成本越高,单位学习产出越小。
我强调的就是精通一个,了解一批。
如果做到精通,就必须在实际项目中应用。我冒昧的猜测,robbin用ROR作JavaEye也是这个目的吧。不在项目中使用,只是照搬quik start的代码,是没有用处的。这一年,我学习了ROR、GRails,ExtJS,PHP,iBatis等,因为没有在项目中实践,结果只能是泛泛的了解。项目中还是使用struts2+spring+hibernate,Widgets只能用dojo,看着Ext华丽的界面,只有干流口水。原因只有一个,我们对这些技术最熟悉,其中多数连源代码也学习过。只有这样,我们才能很好的把控项目的进度、成本、技术难点等等。
我们要做的是软件工程师,而不是技术狂人。
如果你是一个有三年以上Java开发经验的程序员,我不相信学习一个Warp框架要花你几个月时间才能学会。这东西你找个周末钻研两个整天足够你熟练的上手编程了(其实在我看来一个晚上的学习时间已经足够)。学点新东西真的那么难吗?
学新技术并不是要逼你在项目当中立刻用上不可,但既然大家有时间泡JavaEye,我相信平时工作之余挤出时间学点新技术并不是啥为难的事情吧。而且随着你经验越来越丰富、知识越来越广博、学习的速度也会越来越快,一门新技术真正对你来说是新的知识是很少的,而正是这新的知识能给你带来很多新的思路。你学的越多,学的越快,就会发现单位学习成本越低,单位学习产出越大。反过来你越害怕学习,那你的单位学习成本越高,单位学习产出越小。
好的工匠精通各种工具的使用,他知道在什么情况下用什么工具适合做什么家具;
差的工匠永远只会手里拿着一把锤子,用这把锤子去锤所有的东西,你今天告诉他Java这把锤子做书柜好,他就拿Java这把锤子锤所有的家具,明天你告诉他Rails这把锤子做桌子好,他就把Java这把锤子扔掉,用Rails这把锤子锤所有的家具,后天你告诉他Java这把锤子做大衣柜很合适,他又把Rails锤子扔掉,一边用Java锤子锤桌子,一边疑惑的问你?你不是说要用Rails锤子的吗?怎么现在又用Java这把锤子了?然后他又不依不饶的问你,你给我比较比较究竟是Java锤子好用,还是Rails锤子好用?谁有前途,谁做家具的效率高?我究竟该用哪把锤子锤所有的家具呢,究竟该扔掉哪把锤子呢?
所以这种问题根本就是错误的问题,好的程序员要具备很强的快速学习能力,深入了解常用编程语言和框架优势劣势和适用的场景,然后根据实际情况去灵活的选择。而不是企图孤注一掷的寻找一种所谓的万金油编程语言,然后死抱着不放,企图用它干任何事情,眼睛里面容不下任何其他技术。
好的工匠应该精通一种工具的使用,而了解其他工具的使用。
不可能有哪个程序员什么都精通的,除非他不干活天天研究框架呀工具呀之类的。作为一个团队更是这样,试想一个几百人的开发队伍,今天用SSH,明天用ROR,后天又Warp...,就算程序员同意老板也不同意。如果综合考虑成本、学习曲线、性能、开发效率、可维护性(会用的人多)等方面,SSH仍然是目前最好的框架。不是每一个程序员都象robbin所说那样有很强的快速学习能力的,除非有一个团队,有50个LZ这样的大师...
我觉得学习对一个程序员来说很重要,真正花一些时间钻研一下,框架还是很容易学的,至少做到在实际项目中使用还是不难的。成本、学习曲线、性能、开发效率等等问题的确很重要,需要谨慎考虑。但是一个软件团队还是应该保持与时俱进,积极学习新技术的。存在即合理,SSH,ROR,Warp这些框架自然有其存在的道理,各有各的使用场合。
没有必要争论哪个更好,哪个更快之类的。多学一点总没有坏处的。
当初学习RoR的时候就期望Java能拥有一个简洁快速、开发效率高、不会让人陷入XML Hell的框架,现在我找到我的选择了。
准备好好学习了!
好的工匠精通各种工具的使用,他知道在什么情况下用什么工具适合做什么家具;
差的工匠永远只会手里拿着一把锤子,用这把锤子去锤所有的东西,你今天告诉他Java这把锤子做书柜好,他就拿Java这把锤子锤所有的家具,明天你告诉他Rails这把锤子做桌子好,他就把Java这把锤子扔掉,用Rails这把锤子锤所有的家具,后天你告诉他Java这把锤子做大衣柜很合适,他又把Rails锤子扔掉,一边用Java锤子锤桌子,一边疑惑的问你?你不是说要用Rails锤子的吗?怎么现在又用Java这把锤子了?然后他又不依不饶的问你,你给我比较比较究竟是Java锤子好用,还是Rails锤子好用?谁有前途,谁做家具的效率高?我究竟该用哪把锤子锤所有的家具呢,究竟该扔掉哪把锤子呢?
所以这种问题根本就是错误的问题,好的程序员要具备很强的快速学习能力,深入了解常用编程语言和框架优势劣势和适用的场景,然后根据实际情况去灵活的选择。而不是企图孤注一掷的寻找一种所谓的万金油编程语言,然后死抱着不放,企图用它干任何事情,眼睛里面容不下任何其他技术。
好的工匠应该精通一种工具的使用,而了解其他工具的使用。
不可能有哪个程序员什么都精通的,除非他不干活天天研究框架呀工具呀之类的。作为一个团队更是这样,试想一个几百人的开发队伍,今天用SSH,明天用ROR,后天又Warp...,就算程序员同意老板也不同意。如果综合考虑成本、学习曲线、性能、开发效率、可维护性(会用的人多)等方面,SSH仍然是目前最好的框架。不是每一个程序员都象robbin所说那样有很强的快速学习能力的,除非有一个团队,有50个LZ这样的大师...
开发效率肯定是Rails比Java要快的多,只不过开发效率并不一定是唯一的衡量因素,比方说程序员的编程语言熟悉程度、维护的成本都是要考虑的因素,所以最终用Java也不要觉得有啥不好意思的。
在一定要用Java的前提下,基于Google Guice/Warp显然要比Spring简单易用的多。
好的工匠精通各种工具的使用,他知道在什么情况下用什么工具适合做什么家具;
差的工匠永远只会手里拿着一把锤子,用这把锤子去锤所有的东西,你今天告诉他Java这把锤子做书柜好,他就拿Java这把锤子锤所有的家具,明天你告诉他Rails这把锤子做桌子好,他就把Java这把锤子扔掉,用Rails这把锤子锤所有的家具,后天你告诉他Java这把锤子做大衣柜很合适,他又把Rails锤子扔掉,一边用Java锤子锤桌子,一边疑惑的问你?你不是说要用Rails锤子的吗?怎么现在又用Java这把锤子了?然后他又不依不饶的问你,你给我比较比较究竟是Java锤子好用,还是Rails锤子好用?谁有前途,谁做家具的效率高?我究竟该用哪把锤子锤所有的家具呢,究竟该扔掉哪把锤子呢?
所以这种问题根本就是错误的问题,好的程序员要具备很强的快速学习能力,深入了解常用编程语言和框架优势劣势和适用的场景,然后根据实际情况去灵活的选择。而不是企图孤注一掷的寻找一种所谓的万金油编程语言,然后死抱着不放,企图用它干任何事情,眼睛里面容不下任何其他技术。
好像记者提问阿.尖锐.
回答往往是:适合你的项目和团队的,就是最好的.
Warp框架充分利用了JDK5.0的Annotation和泛型机制,并且基于Google Guice这个IoC框架,提供了full-stack的Web开发设施,他主要包含了四个部分:
warp-persist框架:封装Hibernate和JPA,提供事务管理和持久化资源管理
warp-dynamic-finder:提供了基于Annotation的动态查询功能,让数据库查询变得异常简单,不再需要DAO层
warp-mvc:借鉴了Tapestry5,提供了一个基于事件机制和组件化的Web层,并且组件注入方式高度IoC化
warp-servlet: 提供了一些Servlet的封装和附加的高级功能,例如URL过滤,和其他web框架集成等等
这几年来,Java在Web开发框架方面的进步显得很有限,Spring/Hibernate组合对撼JBoss Seam形成两大竞争的主流态势,但是这两个Web框架在Web快速开发方面的创新还显得不够好:Spring是越来越臃肿了,配置文件也是越来越复杂难懂了;JBoss Seam门槛又过高,而且集成的JSF一向受人垢病,并非完美的解决方案,特别是在Ruby on Rails横空出世之后,Java社区对于简洁易用的快速web开发框架的企盼也是一直很高的。
Warp在我看来是这方面做的最好的,它有以下几个鲜明的特点:
一、充分利用JDK5的annotation,简化编程和配置文件
Warp基于Google Guice并且发扬光大,自身无配置文件,所有功能完成均通过annotation,所以编程相当简洁
二、大量使用JDK5的泛型编程,提供强类型安全保证
虽说脚本语言的Duck Typing理念很流行,不过Java的优势也就是类型安全,Spring大量运用反射和XML配置等于是放弃了Java的优势。Warp在泛型方面做的很好,我相信在IDE的帮助下,Warp编程会更轻松
三、Warp-persist提供了声明式的事务管理,终于可以取代Spring了
Google Guice很好很强大,但是它没有事务管理能力和资源管理能力,所以无法取代spring,但是Warp-persist填补了这一缺憾,注入和管理Hibernate很容易:
Injector injector = Guice.createInjector(..., PersistenceService .usingHibernate() .across(UnitOfWork.TRANSACTION) .buildModule());
要声明事务比spring可简单多了:
public class MyService { @Inject Provider<Session> session; @Transactional public void createNewPerson() { session.get().saveOrUpdate(new Person(...)); } }
Warp支持Hibernate/JPA的所有事务管理策略,不但注入方式简单,而且声明事务方式更简单,代码看着简洁,写着更省心。
四、Dynamic Finder实在很酷!
还是直接看代码吧:
@Finder(query="from Person") public List<Person> listAll() { return null; }
用annotation声明一下,一行查询代码都没有,你还要DAO干啥呢?
@Finder(query="from Person where firstName = :firstName") Person find(@Named("firstName") String name);
带参数的绑定变量查询,还是一行代码不用写,DAO是啥?
@Finder(query="from Person") List<Person> listAll(@FirstResult int first, @MaxResults int max);
带分页的查询,还是一行代码不用写,谁用DAO我跟谁急 !
五、Web层也极其简单
Warp-MVC模仿了Tapestry 5的架构,但是作者做了大量的改良和简化,作者解释了一下为什么不直接使用Tapestry,而是自己开发的理由。
Warp-MVC看起来像一个Tapestry的简化版,有组件的概念,事件响应的方式,但是非常易用,非常简洁,URL映射也通过annotation方式声明,作者在自己的博客上面提供了相关的简单示例,可以参考:
http://www.jroller.com/dhanji/
Warp框架是最近几年来,我看到的第一个走在正确发展方向上的Java Web框架:结构简单、易用使用、但充分发挥了Java自身的语法优势,非常值得期待!
目前Warp框架还不是特别成熟,但是Warp-persistent已经相当稳定了,如果你是使用Hibernate/Spring/Struts来开发项目的话,不妨试试Warp,把spring换掉改成Hibernate/Warp/Struts2.0,也是一个不错的解决方案,全部运用annotation,让你的项目Zero Configuration。
友情提醒:Warp官方网站无法直接访问,建议在FireFox浏览器上面安装gladder插件,跨越GFW。
Warp Framework - 官方网站
评论
60 楼
ajoo
2008-03-11
好咚咚啊。
讨论一下哈。
我比较反感在domain代码里用Provider<Foo>。引入一些annotation也就罢了,毕竟单元测试的时候可以无视这些@的。而且即使将来放到Guice外面用,annotation的ClassNotFoundException也是无害的。但是用了Provider和实现FactoryBean也就相隔不远了。而且,读代码时候也有点别扭,明明我要的就是一个Foo,为什么需要注射一个Provider<Foo>? 单元测试也相应的麻烦一些。
所以我一般在需要注射一个所谓lazy的组件的时候,都是做一个lazy proxy。这样,domain里面还是注入Foo,只不过在module里面给注射了一个proxy。
那个第一个dynamic finder的例子,为什么会有{return null;}这个东西?难道不是一个接口么?
还有那个Person find(@Named("firstName") String name);
这个@Named是Guice的那个么?不过这里面应该用不到binding annotation了吧?
讨论一下哈。
我比较反感在domain代码里用Provider<Foo>。引入一些annotation也就罢了,毕竟单元测试的时候可以无视这些@的。而且即使将来放到Guice外面用,annotation的ClassNotFoundException也是无害的。但是用了Provider和实现FactoryBean也就相隔不远了。而且,读代码时候也有点别扭,明明我要的就是一个Foo,为什么需要注射一个Provider<Foo>? 单元测试也相应的麻烦一些。
所以我一般在需要注射一个所谓lazy的组件的时候,都是做一个lazy proxy。这样,domain里面还是注入Foo,只不过在module里面给注射了一个proxy。
那个第一个dynamic finder的例子,为什么会有{return null;}这个东西?难道不是一个接口么?
还有那个Person find(@Named("firstName") String name);
这个@Named是Guice的那个么?不过这里面应该用不到binding annotation了吧?
59 楼
robbin
2008-03-11
cats_tiger 写道
robbin 写道
如果你是一个有三年以上Java开发经验的程序员,我不相信学习一个Warp框架要花你几个月时间才能学会。这东西你找个周末钻研两个整天足够你熟练的上手编程了(其实在我看来一个晚上的学习时间已经足够)。学点新东西真的那么难吗?
学新技术并不是要逼你在项目当中立刻用上不可,但既然大家有时间泡JavaEye,我相信平时工作之余挤出时间学点新技术并不是啥为难的事情吧。而且随着你经验越来越丰富、知识越来越广博、学习的速度也会越来越快,一门新技术真正对你来说是新的知识是很少的,而正是这新的知识能给你带来很多新的思路。你学的越多,学的越快,就会发现单位学习成本越低,单位学习产出越大。反过来你越害怕学习,那你的单位学习成本越高,单位学习产出越小。
我强调的就是精通一个,了解一批。
如果做到精通,就必须在实际项目中应用。我冒昧的猜测,robbin用ROR作JavaEye也是这个目的吧。不在项目中使用,只是照搬quik start的代码,是没有用处的。这一年,我学习了ROR、GRails,ExtJS,PHP,iBatis等,因为没有在项目中实践,结果只能是泛泛的了解。项目中还是使用struts2+spring+hibernate,Widgets只能用dojo,看着Ext华丽的界面,只有干流口水。原因只有一个,我们对这些技术最熟悉,其中多数连源代码也学习过。只有这样,我们才能很好的把控项目的进度、成本、技术难点等等。
我们要做的是软件工程师,而不是技术狂人。
对现在需要用到技术钻研和精通,有时间的话多涉猎一些,有一些初步的了解,清楚他的特点、优势和劣势、应用的场合就可以了。
其实从兴趣角度来说,你涉猎的比我要广泛。我学技术是个实用主义者,不会因为兴趣去花时间,而是根据需要来学。什么技术可能会对我现在和将来用得上,那我就会去花时间了解,经过了解以后认为很有前景,那我就会继续花时间钻研下去,如果有什么技术刚好对我现在的事情有很大帮助,那我就会好好钻研一番。如果用不上的技术,我不会去学习,最多只是稍微了解一下,比方说你提到的iBATIS,EXT 我用不上就不会看它,Grails我不好,所以也不会学它。还比方说Python和Erlang现在也比较热门,但我用不上他们,所以也不会去看他们。
58 楼
robbin
2008-03-11
a3mao 写道
今天抽时间看了一下,官网上的文档太少了,很多东西都不知道改从何下手,只是看着例子做了一个Hello World,发现的确是有点意思,因为文档太少,也没明白到底是怎么个意思。光从例子上来看,我觉得是不错的,如果有点文档能看看就更好了。
从svn里面checkout他的源代码,里面的example和test还是写的很清楚的,看一下就全明白了。
57 楼
tiyi
2008-03-11
还不够成熟,特别是文档……
还有……事务声明没有了通配符,这个时候要注明在方法里有点费劲了……(舍去之前拥有的比 没有拥有过 还痛苦)
还有……事务声明没有了通配符,这个时候要注明在方法里有点费劲了……(舍去之前拥有的比 没有拥有过 还痛苦)
56 楼
cats_tiger
2008-03-11
robbin 写道
如果你是一个有三年以上Java开发经验的程序员,我不相信学习一个Warp框架要花你几个月时间才能学会。这东西你找个周末钻研两个整天足够你熟练的上手编程了(其实在我看来一个晚上的学习时间已经足够)。学点新东西真的那么难吗?
学新技术并不是要逼你在项目当中立刻用上不可,但既然大家有时间泡JavaEye,我相信平时工作之余挤出时间学点新技术并不是啥为难的事情吧。而且随着你经验越来越丰富、知识越来越广博、学习的速度也会越来越快,一门新技术真正对你来说是新的知识是很少的,而正是这新的知识能给你带来很多新的思路。你学的越多,学的越快,就会发现单位学习成本越低,单位学习产出越大。反过来你越害怕学习,那你的单位学习成本越高,单位学习产出越小。
我强调的就是精通一个,了解一批。
如果做到精通,就必须在实际项目中应用。我冒昧的猜测,robbin用ROR作JavaEye也是这个目的吧。不在项目中使用,只是照搬quik start的代码,是没有用处的。这一年,我学习了ROR、GRails,ExtJS,PHP,iBatis等,因为没有在项目中实践,结果只能是泛泛的了解。项目中还是使用struts2+spring+hibernate,Widgets只能用dojo,看着Ext华丽的界面,只有干流口水。原因只有一个,我们对这些技术最熟悉,其中多数连源代码也学习过。只有这样,我们才能很好的把控项目的进度、成本、技术难点等等。
我们要做的是软件工程师,而不是技术狂人。
55 楼
a3mao
2008-03-11
今天抽时间看了一下,官网上的文档太少了,很多东西都不知道改从何下手,只是看着例子做了一个Hello World,发现的确是有点意思,因为文档太少,也没明白到底是怎么个意思。光从例子上来看,我觉得是不错的,如果有点文档能看看就更好了。
54 楼
nazar
2008-03-11
一个好的工匠,应该是自己做自己的工具。学习别人的工具的优点,改造自己的。
你会用的工具再多,也就是一工人。
同时精通“几种工具”?我觉得对这里的绝大多人来说是不现实的,不要考虑了。或者,我们对“精通”的理解不同?
这种提法本身就是错误,好的程序员要学会专研,入门时可以选择些主流的东西,一路专下去,到了“精通”的时候能专出来。而不是一上手就给自己定位成“什么都懂,什么都不精”的项目经理,浪费青春。
ps.难怪说上层开发的人很痛苦,太多的“框架”,“模式”的选择了。呵呵。
你会用的工具再多,也就是一工人。
同时精通“几种工具”?我觉得对这里的绝大多人来说是不现实的,不要考虑了。或者,我们对“精通”的理解不同?
这种提法本身就是错误,好的程序员要学会专研,入门时可以选择些主流的东西,一路专下去,到了“精通”的时候能专出来。而不是一上手就给自己定位成“什么都懂,什么都不精”的项目经理,浪费青春。
ps.难怪说上层开发的人很痛苦,太多的“框架”,“模式”的选择了。呵呵。
53 楼
xyz20003
2008-03-11
照抄了博客上的例子,一个helloworld,一个blog,感觉还真简单。
就是有一个问题:html模板是在部署时候加载的,如果加载失败,整个应用都无法启动。
而且模板不支持热部署,修改以后要关掉tomcat,重启才能看到效果。速度倒是不错。就是有点儿玩人的意思,他要是不支持其他的模板引擎,真是没啥大发展。
就是有一个问题:html模板是在部署时候加载的,如果加载失败,整个应用都无法启动。
而且模板不支持热部署,修改以后要关掉tomcat,重启才能看到效果。速度倒是不错。就是有点儿玩人的意思,他要是不支持其他的模板引擎,真是没啥大发展。
52 楼
robbin
2008-03-11
引用
不可能有哪个程序员什么都精通的,除非他不干活天天研究框架呀工具呀之类的。作为一个团队更是这样,试想一个几百人的开发队伍,今天用SSH,明天用 ROR,后天又Warp...,就算程序员同意老板也不同意。如果综合考虑成本、学习曲线、性能、开发效率、可维护性(会用的人多)等方面,SSH仍然是目前最好的框架。不是每一个程序员都象robbin所说那样有很强的快速学习能力的,除非有一个团队,有50个LZ这样的大师...
如果你是一个有三年以上Java开发经验的程序员,我不相信学习一个Warp框架要花你几个月时间才能学会。这东西你找个周末钻研两个整天足够你熟练的上手编程了(其实在我看来一个晚上的学习时间已经足够)。学点新东西真的那么难吗?
学新技术并不是要逼你在项目当中立刻用上不可,但既然大家有时间泡JavaEye,我相信平时工作之余挤出时间学点新技术并不是啥为难的事情吧。而且随着你经验越来越丰富、知识越来越广博、学习的速度也会越来越快,一门新技术真正对你来说是新的知识是很少的,而正是这新的知识能给你带来很多新的思路。你学的越多,学的越快,就会发现单位学习成本越低,单位学习产出越大。反过来你越害怕学习,那你的单位学习成本越高,单位学习产出越小。
51 楼
moonranger
2008-03-11
cats_tiger 写道
robbin 写道
好的工匠精通各种工具的使用,他知道在什么情况下用什么工具适合做什么家具;
差的工匠永远只会手里拿着一把锤子,用这把锤子去锤所有的东西,你今天告诉他Java这把锤子做书柜好,他就拿Java这把锤子锤所有的家具,明天你告诉他Rails这把锤子做桌子好,他就把Java这把锤子扔掉,用Rails这把锤子锤所有的家具,后天你告诉他Java这把锤子做大衣柜很合适,他又把Rails锤子扔掉,一边用Java锤子锤桌子,一边疑惑的问你?你不是说要用Rails锤子的吗?怎么现在又用Java这把锤子了?然后他又不依不饶的问你,你给我比较比较究竟是Java锤子好用,还是Rails锤子好用?谁有前途,谁做家具的效率高?我究竟该用哪把锤子锤所有的家具呢,究竟该扔掉哪把锤子呢?
所以这种问题根本就是错误的问题,好的程序员要具备很强的快速学习能力,深入了解常用编程语言和框架优势劣势和适用的场景,然后根据实际情况去灵活的选择。而不是企图孤注一掷的寻找一种所谓的万金油编程语言,然后死抱着不放,企图用它干任何事情,眼睛里面容不下任何其他技术。
好的工匠应该精通一种工具的使用,而了解其他工具的使用。
不可能有哪个程序员什么都精通的,除非他不干活天天研究框架呀工具呀之类的。作为一个团队更是这样,试想一个几百人的开发队伍,今天用SSH,明天用ROR,后天又Warp...,就算程序员同意老板也不同意。如果综合考虑成本、学习曲线、性能、开发效率、可维护性(会用的人多)等方面,SSH仍然是目前最好的框架。不是每一个程序员都象robbin所说那样有很强的快速学习能力的,除非有一个团队,有50个LZ这样的大师...
我觉得学习对一个程序员来说很重要,真正花一些时间钻研一下,框架还是很容易学的,至少做到在实际项目中使用还是不难的。成本、学习曲线、性能、开发效率等等问题的确很重要,需要谨慎考虑。但是一个软件团队还是应该保持与时俱进,积极学习新技术的。存在即合理,SSH,ROR,Warp这些框架自然有其存在的道理,各有各的使用场合。
没有必要争论哪个更好,哪个更快之类的。多学一点总没有坏处的。
当初学习RoR的时候就期望Java能拥有一个简洁快速、开发效率高、不会让人陷入XML Hell的框架,现在我找到我的选择了。
准备好好学习了!
50 楼
cats_tiger
2008-03-11
robbin 写道
好的工匠精通各种工具的使用,他知道在什么情况下用什么工具适合做什么家具;
差的工匠永远只会手里拿着一把锤子,用这把锤子去锤所有的东西,你今天告诉他Java这把锤子做书柜好,他就拿Java这把锤子锤所有的家具,明天你告诉他Rails这把锤子做桌子好,他就把Java这把锤子扔掉,用Rails这把锤子锤所有的家具,后天你告诉他Java这把锤子做大衣柜很合适,他又把Rails锤子扔掉,一边用Java锤子锤桌子,一边疑惑的问你?你不是说要用Rails锤子的吗?怎么现在又用Java这把锤子了?然后他又不依不饶的问你,你给我比较比较究竟是Java锤子好用,还是Rails锤子好用?谁有前途,谁做家具的效率高?我究竟该用哪把锤子锤所有的家具呢,究竟该扔掉哪把锤子呢?
所以这种问题根本就是错误的问题,好的程序员要具备很强的快速学习能力,深入了解常用编程语言和框架优势劣势和适用的场景,然后根据实际情况去灵活的选择。而不是企图孤注一掷的寻找一种所谓的万金油编程语言,然后死抱着不放,企图用它干任何事情,眼睛里面容不下任何其他技术。
好的工匠应该精通一种工具的使用,而了解其他工具的使用。
不可能有哪个程序员什么都精通的,除非他不干活天天研究框架呀工具呀之类的。作为一个团队更是这样,试想一个几百人的开发队伍,今天用SSH,明天用ROR,后天又Warp...,就算程序员同意老板也不同意。如果综合考虑成本、学习曲线、性能、开发效率、可维护性(会用的人多)等方面,SSH仍然是目前最好的框架。不是每一个程序员都象robbin所说那样有很强的快速学习能力的,除非有一个团队,有50个LZ这样的大师...
49 楼
a3mao
2008-03-11
看楼主的介绍,的确值得一看,有时间要研究下
48 楼
dboylx
2008-03-11
如果用SEAM + JSF(Faclets, 开发自己业务模型组件) + JPA(HB) + EJB3 做项目,
开发效率即不高, 运行效率也不怎么样....
开发效率即不高, 运行效率也不怎么样....
47 楼
chenlb
2008-03-10
robbin写的文章都很有水平.介绍得好.
46 楼
robbin
2008-03-10
xpf7622 写道
说的好(我也承认不同技术就用于不同场合)。但是不管怎样,网上针对各种框架比较以及争执。目前Rais还不能成为主流,我只是想问一下,Warp框架开发效率会不会和Rails差不多(没用过,但感觉静态语言的框架再怎么优秀也不会赶上动态语言的效率:比如warp及Spring)?
另外,Rails框架和Java框架(Spring等)各自应用应该有个度。但这度往往把握不好。我还是比较看好一个观点,各种语言混和编程。
(目前有个小型 目,事务访问量等要求不那么严格,还是想试一下Rails)。
另外,Rails框架和Java框架(Spring等)各自应用应该有个度。但这度往往把握不好。我还是比较看好一个观点,各种语言混和编程。
(目前有个小型 目,事务访问量等要求不那么严格,还是想试一下Rails)。
开发效率肯定是Rails比Java要快的多,只不过开发效率并不一定是唯一的衡量因素,比方说程序员的编程语言熟悉程度、维护的成本都是要考虑的因素,所以最终用Java也不要觉得有啥不好意思的。
在一定要用Java的前提下,基于Google Guice/Warp显然要比Spring简单易用的多。
45 楼
xpf7622
2008-03-10
说的好(我也承认不同技术就用于不同场合)。但是不管怎样,网上针对各种框架比较以及争执。目前Rais还不能成为主流,我只是想问一下,Warp框架开发效率会不会和Rails差不多(没用过,但感觉静态语言的框架再怎么优秀也不会赶上动态语言的效率:比如warp及Spring)?
另外,Rails框架和Java框架(Spring等)各自应用应该有个度。但这度往往把握不好。我还是比较看好一个观点,各种语言混和编程。
(目前有个小型 目,事务访问量等要求不那么严格,还是想试一下Rails)。
另外,Rails框架和Java框架(Spring等)各自应用应该有个度。但这度往往把握不好。我还是比较看好一个观点,各种语言混和编程。
(目前有个小型 目,事务访问量等要求不那么严格,还是想试一下Rails)。
44 楼
robbin
2008-03-09
xpf7622 写道
问一下Robbin:
感觉你以前极力推荐Rails,现在又推荐warp,不知在实际项目中你会选择那个.
JavaEye3.0还是用Rails做,能不能用Warp做呢?
能否分析一下这两个框架各自优势么? Warp和Rails比,谁的效率高?
感觉你以前极力推荐Rails,现在又推荐warp,不知在实际项目中你会选择那个.
JavaEye3.0还是用Rails做,能不能用Warp做呢?
能否分析一下这两个框架各自优势么? Warp和Rails比,谁的效率高?
好的工匠精通各种工具的使用,他知道在什么情况下用什么工具适合做什么家具;
差的工匠永远只会手里拿着一把锤子,用这把锤子去锤所有的东西,你今天告诉他Java这把锤子做书柜好,他就拿Java这把锤子锤所有的家具,明天你告诉他Rails这把锤子做桌子好,他就把Java这把锤子扔掉,用Rails这把锤子锤所有的家具,后天你告诉他Java这把锤子做大衣柜很合适,他又把Rails锤子扔掉,一边用Java锤子锤桌子,一边疑惑的问你?你不是说要用Rails锤子的吗?怎么现在又用Java这把锤子了?然后他又不依不饶的问你,你给我比较比较究竟是Java锤子好用,还是Rails锤子好用?谁有前途,谁做家具的效率高?我究竟该用哪把锤子锤所有的家具呢,究竟该扔掉哪把锤子呢?
所以这种问题根本就是错误的问题,好的程序员要具备很强的快速学习能力,深入了解常用编程语言和框架优势劣势和适用的场景,然后根据实际情况去灵活的选择。而不是企图孤注一掷的寻找一种所谓的万金油编程语言,然后死抱着不放,企图用它干任何事情,眼睛里面容不下任何其他技术。
43 楼
lonlyleo
2008-03-09
xpf7622 写道
问一下Robbin:
感觉你以前极力推荐Rails,现在又推荐warp,不知在实际项目中你会选择那个.
JavaEye3.0还是用Rails做,能不能用Warp做呢?
能否分析一下这两个框架各自优势么? Warp和Rails比,谁的效率高?
感觉你以前极力推荐Rails,现在又推荐warp,不知在实际项目中你会选择那个.
JavaEye3.0还是用Rails做,能不能用Warp做呢?
能否分析一下这两个框架各自优势么? Warp和Rails比,谁的效率高?
好像记者提问阿.尖锐.
回答往往是:适合你的项目和团队的,就是最好的.
42 楼
xpf7622
2008-03-09
问一下Robbin:
感觉你以前极力推荐Rails,现在又推荐warp,不知在实际项目中你会选择那个.
JavaEye3.0还是用Rails做,能不能用Warp做呢?
能否分析一下这两个框架各自优势么? Warp和Rails比,谁的效率高?
感觉你以前极力推荐Rails,现在又推荐warp,不知在实际项目中你会选择那个.
JavaEye3.0还是用Rails做,能不能用Warp做呢?
能否分析一下这两个框架各自优势么? Warp和Rails比,谁的效率高?
41 楼
bottom
2008-03-08
another thought: to judge if a 开发框架 is 有前途, the key is to see what team is running behind and how it compares with other teams.
发表评论
-
WebObjects的来龙去脉
2012-06-08 15:30 7769在知乎上回答的一个问题:http://www.zhihu.co ... -
缓存技术浅谈
2010-09-24 18:08 21948有我在两年前写的一个培训的ppt,是介绍缓存知识的。有兴趣的可 ... -
对领域模型实现的总结性观点
2008-11-30 15:16 19680陶文发起的对领域模型 ... -
发现JBoss Seam很棒呀!有用Seam做过项目的吗?
2008-07-06 20:56 30714上周去见了一个朋友Mark,他应邀在Red Hat的研讨会上面 ... -
Spring Application Platform - SpringSource的应用服务器发布
2008-05-05 17:04 69762008年的5.1劳动节,Spring ... -
Google Android会成为手机领域的微软Windows吗?
2007-11-16 17:23 9713Google gPhone手机的传言已经沸沸扬扬好几个月了,然 ... -
Java已经过时了吗?
2007-07-02 15:43 59828在四年以前,当我开始 ... -
Java开源框架发展的遐想
2007-05-23 00:04 34924上周末在杭州网侠大会做演讲的时候,我说:Java开源框架的革命 ... -
漫谈应用缓存的命中率问题
2007-05-09 14:19 26732这篇文章源自于: http://www.iteye.com/ ... -
为什么ORM性能比iBATIS好?
2007-05-06 11:16 34677缓存是有很多层次的,有web server前端缓存,有动态页面 ... -
点评Grails vs RoR
2007-03-30 17:49 8349Grails的革新和RoR相比,非常不彻底,很多地方兼容Jav ... -
缓存简述
2007-03-30 09:55 12334缓存实现的层面有很多: 1、对象缓存 由ORM框架提供,透明 ... -
JRuby0.9.8,正式宣布支持ruby on rails
2007-03-07 10:35 15750http://jruby.codehaus.org/ 自从S ... -
domain model的延伸讨论
2007-03-03 01:17 40901domain model,又称为领域模型,是Java企业应用讨 ... -
可以开始用Struts2.0了
2007-02-27 14:56 56216http://struts.apache.org/ Apac ... -
Google Guice - 比Spring快100倍的IoC容器
2007-02-27 14:46 58404http://code.google.com/p/google ... -
Spring2.0和EJB3.0随谈
2007-02-08 14:26 18521Spring自从2003年发布以来 ... -
Java程序员的推荐阅读书籍
2007-02-07 20:12 101545《Java程序员的推荐阅读 ... -
应该如何正确使用Quartz
2006-12-27 11:40 34352对于Web容器来说,最忌讳应用程序私自启动线程,自行进行线程调 ... -
静态类型语言的优势究竟是什么?
2006-11-13 10:03 33686在参与这个讨论的过程中,产生了一个新的话题,很想和大家探讨一下 ...
相关推荐
warp-persist-2.0是最近刚刚发布的、基于Google Guice的轻量级Web开发框架。 Warp是一个相当棒的Java Web框架,而且前景非常看好。 Warp框架充分利用了JDK5.0的Annotation和泛型机制,并且基于Google Guice这个...
Cloudflare WARP Release-x64 安装包
Warp Framework 是一个用Python编程语言开发的高效应用程序框架,其设计理念在于提供一种简洁而强大的方式来构建各种类型的应用。这个框架的核心特性是它的智能属性和对象管理机制,这些机制基于元数据进行操作,...
Cloudflare_WARP_Release-x64.msi
Themes-Warp-Framework-7 一款快速和简洁的主题框架,它提供了丰富的工具集,用于开发跨平台的主题。 适用于YOOtheme出品的基于 Warp 7 框架的所有 Wordpress 主题和 Joomla 模板。 中文语言包:
资源分类:Python库 所属语言:Python 资源全名:warp10-jupyter-0.1.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
本文将深入探讨"rust-web-framework-comparison"项目,它提供了一个对比不同Rust Web框架和库的资源,帮助开发者选择最适合他们需求的工具。以下是关于Rust Web开发的一些关键知识点: 1. Rust语言基础: Rust是一...
Grafana Warp 10:trade_mark:数据源插件 安装插件 使用grafana-cli sudo grafana-cli plugins install ovh-warp10-datasource installing ovh-warp10-datasource @ 2.2.0 from: ...
提供的压缩包名为`warp-cli-master`,这可能是一个包含了warp-cli源代码的完整版本,包括所有必要的文件和目录,如源码、测试文件、配置文件等。开发者可以查看源代码以了解其内部工作原理,甚至可以根据自己的需求...
【百度硅谷warp-CTC】是百度公司在其硅谷研发中心推出的一种优化的连续标注计算(Connectionist Temporal Classification, CTC)实现,旨在提升在现代高性能计算硬件上的运行效率。CTC是一种常用的序列到序列模型的...
为Arch_Linux提供可安装的Cloudflare_Warp_ArchLinux-Warp-deb
资源分类:Python库 所属语言:Python 资源全名:warp_rnnt-0.0.3.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
这一版本提供相当充足的各种驱动程序,并改进了不少功能,还加入了对TCP/IP的支持(InternetAccessKit),包含拨号网络、一套浏览器(WebExplorer)、一堆TCP/IP工具。更重要的是增加了一套BonusPak光盘,提供好几套OS/2...
标题 "Go-warp让您通过一个简单的命令安全地共享您的终端" 涉及到的是一个基于Go语言开发的工具——Warp,它提供了一种便捷且安全的方式,让用户能够通过命令行分享自己的终端会话。这个工具对于远程协作、演示或者...
标题中的"Python库 | sol-warp-0.2.4.tar.gz"指的是一个特定版本的Python库,名为sol-warp,版本号为0.2.4,并且它被压缩成一个tar.gz文件进行分发。在Python编程环境中,库(Library)是用于扩展其功能的模块集合,...
借助Guice+Struts2+Warp-persist来构建一个比较轻盈的web开发框架,目的是想抛砖引玉。随后还会将Scala部分整合进来,目的就是唯恐框架不烂!(*^__^*)。 对于代码的不妥之处欢迎各路高手斧正。 mail to : meconsea@...
Java_非官方的WARP客户端Android项目是一个针对Android平台的第三方实现,允许用户在移动设备上使用WARP技术。WARP(Wireless Application Protocol)是一种通信协议,旨在提高无线网络上的数据传输效率和安全性。非...
2016年新年伊始,百度硅谷实验室向 GitHub上传了 Warp-CTC C 代码库,并在一篇博客文章中鼓励开发者使用这些代码。据悉,CTC 代码结合了多个不同的神经网络设计,以处理不完美的数据集,并采用更复杂的数据模式,...
meta-warp7-distro 该自述文件包含有关构建meta-warp7-distro DISTRO层的信息。 有关详细信息,请参见下面的相应部分。 快速开始 要获取BSP,您需要安装回购协议并将其用作: 安装回购实用程序: $: mkdir ~/bin...
Warp是一款用Rust编程语言编写的高效、轻量级且极其灵活的Web服务器框架。它以其易于使用、高性能和高度可组合性著称,为开发人员提供了一种编写Web服务的新方式。在了解Warp之前,我们先来看看Rust本身——一种系统...