@lgx522
嗯,您说的的确很有道理。
我补充几点:
1,从语言方面看,各个学校,凡是教授计算机的专业,一般都以C语言入门,然后要么C++,要么Java,好不容易能熟练用Java开发项目了,要这些学生去学非"C语系"的语言,无异于让他们从头学过,没几个学生会放弃自己已经熟练使用的语言的。更别说从事Java多年的开发人员了。
2,从框架方面看,虽然Grails现在还没RoR那么成熟,但它是标准的J2EE项目,可以跑在任何Web Server上面,而且可以用Groovy和Java混合开发,性能方面绝对没有问题。此外今年10月份Grails就要发布1.0版本了,也就标志着它达到了一定的成熟度,据我所知,RoR现在是1.2.x版本。
3,从开发工具方面看,JetBrains的IntelliJ IDEA 7和Sun的NetBeans 6都将支持Groovy和Grails的开发,之前仅仅是支持一些基本的功能(如语法高亮),支持Groovy的Eclipse插件也快完成,而支持Grails的Eclipse插件正在开发中,从“Groovy好事连连”可以看到效果图。
re: web客户端技术展望 山风小子 2007-04-25 14:27
如果Applet的启动速度与Flash一样快的话,用Java实现胖客户端是个不错的选择 :)
听说Java7要‘瘦身’,希望能达到预期目标吧 :)
@Rondy.F
不好意思,您猜错了 :)
?. 是‘安全引用符’,举例来说:
在Java中,为了程序的鲁棒性(robust),在对一个对象进行操作之前,我会判断它是否为null
if (null != obj) {
obj.doSomething();
}
而在Groovy就方便多了,你可以用?.来达到上面的目的
obj?.doSomething()
等价于
obj == null ? null : obj.doSomething()
如果obj为null,则obj?.doSomething()的结果为null,否则就正常执行与Java无异:)
实例:
def obj = null
println obj?.hello() // 打印出null
由于obj为null,所以就不执行hello(),即便obj中没有定义hello这个方法也不会报错 :)
@flyisland
如果是在Eclipse启动Grails的话,的确是要将tools.jar加到Eclipse的classpath中的。
但由于我是利用命令行启动的,所以tools.jar已经在系统的classpath环境变量中了,自然省事不少 :)
@Rondy.F
您或许没有取消官方GroovyEclipse插件的"Enable Groovy Compiler Generating Class Files"
设置路径在Window -> Preferences -> Groovy Preferences -> Enable Groovy Compiler Generating Class Files, 取消checkbox的选择即可
您看看是否是这个问题 :)
@刘明
随时欢迎您与我一起探讨Groovy和Grails :)
@静儿
嗯,接触的多了,对错误的敏感度也高了,加油咯 :)
re: 注意MySQL的保留字陷阱 山风小子 2007-04-23 01:15
这个问题我也遇到过,花了好长时间才发现问题的根源的 :)
@flyisland
嗯,多谢您的补充,
对于您所提及的问题1,我一般都是手动将log4j.properties复制到<Your project root>/web-app/WEB-INF/classes
您的方法更方便 :)
而问题2,我没碰到过,请看下您的环境设置是否正确 :)
re: 大自然,多美妙 山风小子 2007-04-22 05:47
第一张图的‘阳元石’跟大象有点像
鼻子高翘,后面是头和高耸的身体 :)
re: 2007年Groovy好事连连 山风小子 2007-04-21 14:14
re: 创意柱状图 山风小子 2007-04-20 23:44
有意思 :)
re: java中几个关键字 山风小子 2007-04-20 21:12
匆匆看了下,
"static成员不能通过对象实例来访问,它必须通过类名来访问"
static成员是可以通过对象实例来访问的,但不建议这么做 :)
public class A {
public static void print() {
System.out.println("A");
}
}
public class StaticTest {
public static void main(String[] args) {
A a = new A();
a.print();
}
}
加油噢~
re: spring IOC容器实现探讨 山风小子 2007-04-20 15:32
师傅领进门,修行靠自身。
谢啦 :)
@我为J狂
您说的很对,但如果全都画出来的话,我可能就心有余而力不足了 :)
@〓梦の魔〓
分享知识,使大家一起进步不是很好吗 :)
re: jsp基础案例 山风小子 2007-04-19 15:47
@静儿
高人可不敢当噢 :)
re: jsp基础案例 山风小子 2007-04-19 14:43
学习JSP就好和Servlet结合起来学。
JSP中最好不要有Java代码。
呵呵~你不会嫌我烦吧,几乎每写一篇文章,我都来唧唧歪歪 :)
@zhangjinglin
非常期待您接下来的一系列文章 :)
@xyz20003
groovy的预编译会将.groovy文件编译为优化过的.class,在编译的时候会消耗点时间,但以后运行起来就快很多了,所以也不能完全否定了,您说对吧 :)
至于reload,我想您不会频繁的改数据库配置吧,一旦定了用什么数据库,username和password,url,driver也就定下来了,而修改这些配置的几率很小,因此reload这个功能在开发调试中能很好的发挥作用的 :)
groovy1.1会对compiler的性能进行调优,到时您或许就不会感觉到预编译了 :)
Grails将在Groovy完全支持Annotation(Groovy1.1将支持Annotation)之后,集成Guice,提高整体性能,包括启动速度,到时您不妨再试试,体验一下Grails的乐趣 :)
re: 排序问题 山风小子 2007-04-19 05:45
再补充一句,
Java对类名,接口名,方法名,变量名都有规范
类名,接口名:首字母大写,且用驼峰命名法命名,比如 HelloWorld
方法名,变量名:首字母小写,且用驼峰命名法命名,比如 sayHello()
re: 排序问题 山风小子 2007-04-19 05:41
如果作为对数据结构和算法的温习,自己实现排序算法是一个很不错的途径。
但如果在实际开发中,我建议你使用Arrays类中的sort方法,和Collections类中的sort方法。
@xyz20003
您说的不无道理,但我想补充几句:
Groovy的预编译有一个好处您或许没有体会到,那就是防止程序运行到一半才报coding错误,这样其实已经为您节省了很多时间了 :)
当然您也可以将Groovy文件编译为class文件,这样就可以省去运行前的编译了。
至于grails的启动比较慢,这的确是一个事实,但我们也不可忽视Grails的reload功能,也就是说,只要运行了你的程序之后,无需重启web server,你的修改可以立刻生效,所以Grails实施的是‘先苦后甜’的策略。您如果用它开发过项目的话,就可以体会到了 :)
至于语法的灵活性,我持保守态度,过于灵活的语法使程序很难维护,这相信您也有所体会吧 :) Java的语法过于笨拙,而Ruby,Python的语法过于灵活,所以Groovy做个折衷,以Java的语法为基础,将Ruby和Python中真正有用的特性添加进来,所以可以这么说,Groovy是动态Java,但由于‘Java’这个商标问题,不能叫Dynamic Java.
Groovy继承了Java的所有资源,并以自身强大的语法特性使开发更高效。
Grails基于极为成熟的经典框架,并对其进行了extreme封装(extreme封装,引用了‘江南白衣’的术语),使用户感觉不到底层实现,无需配置,高效开发。而且性能比RoR好很多。
下面是Grails和RoR的性能比较:
http://www.blogjava.net/BlueSUN/archive/2007/03/24/106002.html事实胜于雄辩。
re: Spring2.0.4发布了 山风小子 2007-04-18 15:24
@BeanSoft
呵呵~不要因为Spring的一次失误,而全盘否定嘛 :)
re: Spring2.0.4发布了 山风小子 2007-04-18 01:58
@αβγ
长夜漫漫,无心睡眠 :)
re: newxy的简单之美 山风小子 2007-04-17 22:52
胡立新——中国一位可敬的开源先驱!
有个不情之请,能否把插件中的Google广告去掉?
re: = =和equals有何区别 山风小子 2007-04-17 17:39
温故而知新,可以为师矣 :)
re: [转载]Java开源软件六大帮派 山风小子 2007-04-17 09:26
@静儿
文章的主人多半是金庸迷 :)
re: 简单 . 静 山风小子 2007-04-17 07:48
"希望有一天我也可以信手拈来,挥洒自如吧"
有志者,事竟成!
@交口称赞
您说得有些道理 :)
但是我们要调用其他人写的程序,只要知道接口就可以了,
内部实现再怎么糟糕,我们都不关心的,
所以他乱用的话,苦的还是他自己,您说呢 :)
@kitsionlee
呵呵~这仅仅是分享乐趣罢了 :)
re: 在Struts 2中实现CRUD 山风小子 2007-04-13 03:45
一直关注着您的这一系列教程,辛苦了 :)
‘不管黑猫白猫,会抓老鼠就是好猫!’,谁的好用就用谁的 :)
re: [转载]Java开源软件六大帮派 山风小子 2007-04-10 16:19
@unknow
的确如此 :)