`
manyinjin
  • 浏览: 92220 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

被Groovy震的第一下

阅读更多

    呵呵,下面这段代码,看起来很眼熟吧?猜猜输出的是什么?

println new URL("http://manyinjin.iteye.com").openConnection().getInputStream().getText(); 

    简单的一行语句,blog里面的东西都print了,重要的是,我只需要知道java里怎么做就行了。。。

    你甚至可以这样:

 

public class Person{
    String name;
    String idCard;
}
Person p = new Person(name:"manyinjin", idCard:"my idcard #");
println p.getAt("name");
println p.getName();

    没有学习曲线,和java完全交融,在享受java强大的服务器端技术的同时也简化了语法和显著减少了代码行数,pretty cool!

分享到:
评论
36 楼 csc365kl 2009-04-01  
没有学习曲线
太假了!!!
35 楼 mathgl 2009-03-27  
python 出现貌似是 1990年前后

81年那个 可能abc都还没出现。
34 楼 d_eye 2009-03-27  
manyinjin 写道
tinyyea 写道

概念很酷!groovy只是语法表面上动态而已,语法上充斥着魔法,最终还是要编译成java class文件,在一个JVM静态的容器中运行,本质上还是静态的。 groovy倒像是java语法动态化的一个极端。说groovy可以和java无缝结合到一起,真的,这太理想,当我在java里修改一个类的名字,我得到groovy里找到引用的地方一个个改掉,这真得很郁闷。动态语法给IDE支持造成困难,特别是重构方面,简便快捷的重构也意味着良好的维护,反之亦然,说来说去又说到动态语法不容易维护的通病。编程简单,维护困难。编程困难,维护简单。平衡一点,希望java变得再动态一点。

嗯,我看了一下它最终生成的字节码,该有什么还是有什么,有点类似cglib做的事情。Groovy用在特定的场合还是很有优势的,比如,写写测试脚本和用例什么的。但是如果真要用来做大的应用,确实会存在很多问题,比如,效率问题,维护问题等。

说的对!
33 楼 shiren1118 2009-03-26  
实现Expando类,扩展元对象协议(MOP:Meta Object Protocol)和创建DSLs

这才是它真正强大的地方吧?
32 楼 night_stalker 2009-03-26  
其实比历史的话……

python 1981
perl 1987
ruby 1995
java 1995
php 1995

动态语言出现的时间也不短了,但要被普遍接受还需要很长时间。

OOP在上世纪60年代就出现了,流行起来也花了几十年。
31 楼 linliangyi2007 2009-03-26  
coolnight 写道

例子很多,随便给个:

facebook/php...


linliangyi2007 写道
语法嘛,一切皆表象啊~~~~

看看有那么多牛人发明各种动态语言,特别这两年跟爆炸似的,然而有几个“实现良好"的互联网大型应用,或者企业级应用是跑在这些语言上面的呢?

看看每年的程序语言排行就明白了!这些排行直接说明使用各种语言人数的多少,间接说明企业招聘岗位的多少,从而也能看出在各个行业中,这些语言使用情况的多少。

发明这些语言的人不可谓不聪明,其中的原因值得思考!!




兄弟啊,表吧像PHP这样的老前辈拿出来好不好,LAMP是什么年代就流行的了?跟Java几乎同时期啊。
如果你一定要为了跟我抬杆,说明我错了,那我错了!
过渡关注与语法表象,就好比“回”字有四中写法的,这个是一种悲哀!
30 楼 coolnight 2009-03-25  

例子很多,随便给个:

facebook/php...


linliangyi2007 写道
语法嘛,一切皆表象啊~~~~

看看有那么多牛人发明各种动态语言,特别这两年跟爆炸似的,然而有几个“实现良好"的互联网大型应用,或者企业级应用是跑在这些语言上面的呢?

看看每年的程序语言排行就明白了!这些排行直接说明使用各种语言人数的多少,间接说明企业招聘岗位的多少,从而也能看出在各个行业中,这些语言使用情况的多少。

发明这些语言的人不可谓不聪明,其中的原因值得思考!!

29 楼 hatedance 2009-03-25  
Bernard 写道
就算是动态语言也应该有一套严格的语法。
就如前几楼说的URL获取内容一样。
过于灵活会让人觉得无所适从。
...
...
看看《java解惑》,java里令人抓狂的陷阱也不少。

日常说话聊天比动态语言灵活多了,也无所适从么?


Chatting is different from programming.
We want plain and straight meaning from code.
28 楼 dch1287 2009-03-24  
linliangyi2007 写道
dch1287 写道
linliangyi2007 写道
语法嘛,一切皆表象啊~~~~

看看有那么多牛人发明各种动态语言,特别这两年跟爆炸似的,然而有几个“实现良好"的互联网大型应用,或者企业级应用是跑在这些语言上面的呢?

看看每年的程序语言排行就明白了!这些排行直接说明使用各种语言人数的多少,间接说明企业招聘岗位的多少,从而也能看出在各个行业中,这些语言使用情况的多少。

发明这些语言的人不可谓不聪明,其中的原因值得思考!!


这些并不是动态语言适用的地方

你的说法换个话题:
  。。。 然而有几个“设计良好"的大型建筑,或者世界级建筑是音乐家设计的呢? 。。


你的言辞一方面透露出严重的语言歧视啊,另一方面。。(我就不说啦)

你可以继续你我的企业应用coding之路, 但是没有必要无视, 甚至歧视那些scirpting的兄弟们. 大家的目标不太一样, 怎可一概而论


哇靠,咋就上升到“歧视”的高度了?俺只是觉得各位不用过于沉醉在语言的表面而已。
难道JE上不能发表一下不同的意见?

没有歧视最好啦 就当是我误解了你的想法
27 楼 bonny 2009-03-23  
女巫の微笑 写道
真不明白 弄这么多语言出来干什么 好好的把一门语言弄通了就不错了
这样搞 永远只在皮毛上下功夫


嘿嘿。不争论不争论。我爽我自己的。
26 楼 女巫の微笑 2009-03-23  
真不明白 弄这么多语言出来干什么 好好的把一门语言弄通了就不错了
这样搞 永远只在皮毛上下功夫
25 楼 Javabengou 2009-03-23  
tinyyea 写道
概念很酷!

groovy只是语法表面上动态而已,语法上充斥着魔法,最终还是要编译成java class文件,在一个JVM静态的容器中运行,本质上还是静态的。

groovy倒像是java语法动态化的一个极端。

说groovy可以和java无缝结合到一起,真的,这太理想,当我在java里修改一个类的名字,我得到groovy里找到引用的地方一个个改掉,这真得很郁闷。

动态语法给IDE支持造成困难,特别是重构方面,简便快捷的重构也意味着良好的维护,反之亦然,说来说去又说到动态语法不容易维护的通病。

编程简单,维护困难。
编程困难,维护简单。
平衡一点,希望java变得再动态一点。


这个并不是表面的动态

动态就在于编译时不进行检查,而在运行时检查,groovy就是这样的,至于最终的文件,是因为他要在jvm上运行

至于IDE,netbeans能对ruby支持这么好,我相信对Groovy的良好支持也是时间上的问题

你说的不容易维护就不是很明白了
24 楼 ahua3515 2009-03-23  
脚本语言有脚本语言适用的环境 

有的场景真的很适用 比如做统计  跑几个临时数据分析


语言真的很精炼  会上瘾
速度方面感觉不是很慢   当你用脚本去跑统计这种事情的时候

一个统计可能跑个10分钟或几个小时

这时脚本语言本身的速度性能问题几乎不用考虑 
23 楼 jnoee 2009-03-23  
从前面的列子来看,只是语法魔法而已,没什么出彩的东西。
能不能介绍点新鲜玩意...
22 楼 linliangyi2007 2009-03-23  
dch1287 写道
linliangyi2007 写道
语法嘛,一切皆表象啊~~~~

看看有那么多牛人发明各种动态语言,特别这两年跟爆炸似的,然而有几个“实现良好"的互联网大型应用,或者企业级应用是跑在这些语言上面的呢?

看看每年的程序语言排行就明白了!这些排行直接说明使用各种语言人数的多少,间接说明企业招聘岗位的多少,从而也能看出在各个行业中,这些语言使用情况的多少。

发明这些语言的人不可谓不聪明,其中的原因值得思考!!


这些并不是动态语言适用的地方

你的说法换个话题:
  。。。 然而有几个“设计良好"的大型建筑,或者世界级建筑是音乐家设计的呢? 。。


你的言辞一方面透露出严重的语言歧视啊,另一方面。。(我就不说啦)

你可以继续你我的企业应用coding之路, 但是没有必要无视, 甚至歧视那些scirpting的兄弟们. 大家的目标不太一样, 怎可一概而论


哇靠,咋就上升到“歧视”的高度了?俺只是觉得各位不用过于沉醉在语言的表面而已。
难道JE上不能发表一下不同的意见?
21 楼 smilerain 2009-03-22  
自己写个函数也是一句话调用了,有什么差别。
20 楼 dch1287 2009-03-22  
linliangyi2007 写道
语法嘛,一切皆表象啊~~~~

看看有那么多牛人发明各种动态语言,特别这两年跟爆炸似的,然而有几个“实现良好"的互联网大型应用,或者企业级应用是跑在这些语言上面的呢?

看看每年的程序语言排行就明白了!这些排行直接说明使用各种语言人数的多少,间接说明企业招聘岗位的多少,从而也能看出在各个行业中,这些语言使用情况的多少。

发明这些语言的人不可谓不聪明,其中的原因值得思考!!


这些并不是动态语言适用的地方

你的说法换个话题:
  。。。 然而有几个“设计良好"的大型建筑,或者世界级建筑是音乐家设计的呢? 。。


你的言辞一方面透露出严重的语言歧视啊,另一方面。。(我就不说啦)

你可以继续你我的企业应用coding之路, 但是没有必要无视, 甚至歧视那些scirpting的兄弟们. 大家的目标不太一样, 怎可一概而论
19 楼 linliangyi2007 2009-03-22  
语法嘛,一切皆表象啊~~~~

看看有那么多牛人发明各种动态语言,特别这两年跟爆炸似的,然而有几个“实现良好"的互联网大型应用,或者企业级应用是跑在这些语言上面的呢?

看看每年的程序语言排行就明白了!这些排行直接说明使用各种语言人数的多少,间接说明企业招聘岗位的多少,从而也能看出在各个行业中,这些语言使用情况的多少。

发明这些语言的人不可谓不聪明,其中的原因值得思考!!
18 楼 luolonghao 2009-03-21  
看Perl代码会更让你震
17 楼 JohnnyJian 2009-03-21  
xmpp 写道
看下面的代码:
class Module {
    static def abc = {return "打印测试"}
    static def hij = {person->return person.name}
}
class Person {String name;}

def d = new Person(name:"123");
d.metaClass.abc = {->
   Module.abc()
}
d.metaClass.hij = {person->
   Module.hij(person)
}
println d.abc()
println d.hij(d)


Groovy 1.6支持更简单的mixin:
class Person { String name }

@Category(Person)
class Module {
    def abc() { 'abc' }
    def hij() { name }
}

def p = new Person(name: '123')
p.metaClass.mixin Module
println p.abc()
println p.hij()

相关推荐

    Groovy入门]第一讲.项目演示与搭建Groovy开发环境

    为了进一步学习,你可以通过阅读"第一讲 项目演示与搭建Groovy开发环境"的文档,或者查看"µÚÒ»½² ÏîÄ¿ÑÝʾÓë´î½¨Groovy¿ª·¢»·¾³"的资料。这些资源将详细解释如何从零开始构建一个Groovy...

    apache-groovy-3.0.8.zip apache官网的groovy3.0.8版本

    apache-groovy-3.0.8.zip apache官网的groovy3.0.8版本,希望大家多多下载,apache-groovy-3.0.8.zip apache官网的groovy3.0.8版本,希望大家多多下载,apache-groovy-3.0.8.zip apache官网的groovy3.0.8版本,希望...

    groovy

    Groovy是一种基于Java平台的、动态的、强大的编程语言,它设计的目标是增强开发者的生产力。Groovy结合了Java的静态类型系统和Python、Ruby等动态语言的灵活性,使得开发者可以更加高效地编写代码。本篇文章将深入...

    groovy安装包-win(第一部分)

    groovy安装包-win(第一部分)groovy安装包-win(第一部分)

    Groovy Script 入门

    ##### 3.2 编写第一个Groovy脚本 ```groovy // hello.groovy println "Hello, Groovy!" ``` 1. **创建Groovy文件**:使用文本编辑器创建一个名为hello.groovy的文件,并输入以上代码。 2. **执行脚本**:打开...

    groovy-2.3.6-installer

    Groovy是一种动态、开源的编程语言,它是Java平台上的一个JVM(Java Virtual Machine)语言。Groovy结合了Python、Ruby和Perl等脚本语言的简洁性和灵活性,并且完全兼容Java,可以无缝地与Java代码集成。在"groovy-...

    精通 Groovy--下一代开发语言

    Groovy 是 JVM 的一个替代语言 — 替代 是指可以用 Groovy 在 Java 平台上进行 Java 编程,使用方式基本与使用 Java 代码的方式相同。在编写新应用程序时,Groovy 代码能够与 Java 代码很好地结合,也能用于扩展现有...

    Java调用Groovy,实时动态加载数据库groovy脚本

    1. 引入Groovy库:在Java项目中添加Groovy的相关依赖,通常是`groovy-all`,确保Java能够访问Groovy运行时环境。 2. 创建GroovyClassLoader:使用这个类加载器可以动态加载和执行Groovy脚本。它继承自Java的...

    groovy入门经典,groovyeclipse 插件

    闭包是Groovy的一个核心特性,它类似于函数指针,可以被用作参数传递或者作为返回值。闭包在Groovy中的定义形式通常为`{参数列表 -> 代码块}`。闭包的this指针在闭包内部指向创建它的上下文对象,而`@delegate`注解...

    groovy速查手册

    #### 一、Groovy简介与特性 Groovy是一种为Java虚拟机(JVM)设计的动态语言。它具备完全的对象导向性、可选的类型系统、操作符定制能力、简洁的数据类型声明、闭包(Closures)、范围表达(Ranges)、紧凑的属性...

    groovy-sdk-4.0.3

    Groovy SDK 4.0.3 是一个针对Groovy编程语言的软件开发工具包,它包含了Groovy语言的运行环境和开发所需的各种组件。Groovy是一种动态、灵活的面向对象编程语言,它与Java语法兼容,但提供了更简洁的语法和更强的...

    eclipse安装groovy插件的步骤

    1. **下载 GroovyEclipse.zip 文件**:访问 Groovy 的官方网站或 GitHub 仓库获取最新版本的 GroovyEclipse.zip 文件。确保选择与您的 Eclipse 版本兼容的插件版本。 2. **解压 GroovyEclipse.zip 文件**:将下载的...

    groovy经典_资料

    Groovy是一种基于Java平台的动态脚本语言,它在设计时考虑了简洁性和生产力的提升。Groovy之所以受到青睐,主要是因为它比Java更加抽象和高效,允许开发者编写更少的代码来实现同样的功能。以下是对Groovy的一些核心...

    groovy in action 中文版 2017.11

    闭包(closures)是Groovy中非常重要的一个概念,闭包是一种可以作为参数传递、可以从其被定义的作用域外调用的代码块。Groovy的闭包提供了非常强大的功能,比如高阶函数的能力,它们可以用来实现迭代、排序和其他...

    groovy-all

    Groovy是一种动态、开源的编程语言,它是Java平台上的一个重要的补充。Groovy结合了Python、Ruby和Smalltalk等语言的特性,同时保留了与Java的无缝集成能力,使得它在脚本编写、Web开发、自动化测试等领域有着广泛的...

    apache-groovy-sdk-4.0.1下载

    1. **groovy-all.jar**:这是一个包含了Groovy库所有模块的集合,你可以通过引入这个单一的jar文件来快速地在项目中使用Groovy。 2. **bin**目录:包含了一系列可执行脚本,如`groovy`, `groovyc`, 和 `groovysh`,...

    Groovy入门教程[参照].pdf

    Groovy 是一种基于 Java 语言的脚本语言,运行在 JVM 中,语法与 Java 相似,但抛弃了 Java 的一些烦琐的语法规则,提供了更加简洁和灵活的编程体验。 Groovy 的特点 1. 简洁的语法:Groovy 语法简洁,减少了代码...

Global site tag (gtag.js) - Google Analytics