@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.aygfsteel.com/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
的確如此 :)