`
philix
  • 浏览: 82013 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

放弃groovy这个玩具(关于scala, groovy, jruby,jython,等动态语言)

 
阅读更多

http://hi.baidu.com/knowise/blog/item/cfbba9246f91961b4c088dcb.html

 

放弃groovy这个玩具 ,因为它只是一个玩具, 无法应用于实际.

之前我用groovy写了一个网站, deploy到tomcat上.

运行一段时间之后,tomcat就开始失控,内存占用大的出奇 , 最后导致服务器死机!

为什么会这样呢? 我的理解->

原因大概在于groovy为了实现动态类型, 大量使用了反射,

并且在很大程度上侵入了java基础类 .

加上groovy现在的开发者水平不高,

导致程序的表现往往不合预期 , 内存的管理上存在问题!

即时GC不出问题时,groovy编译出来的类也需要消耗更多的内存 ,

多到实在无法使用, 甚至限制代码规模!

如果你在groovy项目用了许多类(比如通过.jar包来引入),并在代码中import并使用, 你就会发现一般的机器内存显然不足了.

因为groovy会对几乎所有用到的类,都做一遍侵入性改造 ,以使它们表现得动态 !

最终的结果就是, groovy号称与java无缝集成,却恰恰因为无缝集成而侵入了java本身, 使得整个系统变得混乱, 甚至不可用 !

结果是: groovy 中看,不中用! 

所以另一种:可以编译到.class,并且使用java 类, 但不侵入java本身的动态语言,可能是更好的选择!

保持一定的层次, 避免太紧的耦合, 看来是非常必要的.

不然,出了问题,如何确定问题的原因呢?

#

分享到:
评论
1 楼 flashing 2012-02-12  
groovy这么差劲吗。。。
不过jvm上的全动态的确有很多问题。。。

相关推荐

    java脚本编程

    不过,Java生态系统中有多种脚本语言可以运行在Java平台上,例如Groovy、JRuby等。下面将详细介绍这些概念和技术。 ### Java与脚本语言 #### Java简介 Java是一种广泛使用的通用编程语言,由Sun Microsystems开发...

    基于Java平台的多语言混合编程.pdf

    Java平台的多语言混合编程是指在Java虚拟机(JVM)上运行多种语言,包括静态类型语言和动态类型语言、命令式语言和声明式语言等。这种混合编程方式可以充分发挥Java平台的优势,实现跨平台、跨语言的开发。 Java...

    聊聊Java平台上的非Java语言共3页.pdf.zip

    Groovy是一种动态、灵活的语言,其语法比Java更简洁,允许开发者快速编写脚本和原型。Groovy对Java库有很好的支持,可以无缝地与Java代码混合使用。此外,它在构建工具如Grails和Gradle中广泛应用,提供了一种更...

    EvolvingTheJavaPlatform-OlaBini.pdf

    在 Java 平台演进中,作者还对 Java 语言的新特性进行了介绍,包括 Clojure、Groovy、Scala 等语言的特点和优点。Clojure 是一种 Lisp 方言,具有动态的、代码作为数据的特点,良好的 Java 互操作性、函数式编程语言...

    【Java】超越 Java

    此外,也可能提到了跨语言集成,如使用Jython或JRuby实现动态脚本,或是使用 GraalVM 进行高性能的多语言运行时环境。 从【压缩包子文件的文件名称列表】"cy-java"来看,这个文件可能是教程的主索引或者目录,里面...

    ava程序员的未来_走向混合编程时代

    JVM平台经历了编程语言的巨大变化,出现了许多新的语言,包括动态语言如Javascript、Jruby、Jython、Groovy,以及函数式与面向对象兼具的Scala。这些语言为Java平台上多语言混合编程的发展提供了坚实的技术基础。每...

    GIAC 2016 - Java生态圈与微服务-丁雪丰-1.1.pdf

    这一平台为各种其他语言如Groovy、Scala、JRuby、Jython、Clojure、Ceylon和Kotlin等提供了运行环境,形成了丰富的生态系统。这些语言在保留Java平台优势的同时,也引入了各自的特性和语法糖,满足不同开发者的需求...

    jdk-7u76-linux-x64.tar.gz.zip

    4. **动态类型语言支持**:如Groovy、Scala等,可以通过JRuby或Jython支持动态语言。 5. **字符串改进**:如`switch`语句支持字符串,`String`的`split()`方法性能提升等。 了解和掌握JDK的使用是成为Java开发者的...

    软件架构的趋势

    JVM(Java虚拟机)的出现促进了基于JVM的语言发展,如Jython、JRuby、Groovy和Scala等,这些语言利用JVM的优化特性,如垃圾收集、异步I/O和即时编译,实现了更好的性能和开发体验。 #### 系统架构的变迁 软件架构...

    jdk1.7.0_80.zip

    1. **多语言支持**:Java 7增加了对其他编程语言的支持,如Scala、Groovy等,通过JVM上的语言互操作性(JRuby, Jython等),使得开发者可以更灵活地选择编程语言。 2. **类型推断**:Java 7引入了钻石操作符(),...

    jvmscripter:servlet webapps的远程脚本

    脚本编写器 用于 servlet webapps 的 REST 远程脚本。 支持的语言:Javascript (Rhino)、Groovy、BeanShell ... 即将推出:Scala、JRuby、Jython。 使用 Spray.io、Akka、AngularJS 和 Ace 编辑器在 Scala 中实现。

    [JavaFX.2.0:Introduction.by.Example].Carl.Dea.文字版.pdf

    - **多语言支持**:除了Java之外,JavaFX 2.0还支持其他运行在Java虚拟机(JVM)上的语言,如Visage、Jython、Groovy、JRuby和Scala等,这增加了其灵活性和适用范围。 - **企业级应用**:Oracle公司明确表示,JavaFX...

    基础篇.pdf

    除了Java,JVM还支持Kotlin、Groovy、JRuby、Jython、Scala等其他语言。值传递和引用传递是参数传递的两种方式,Java中所有参数传递都是值传递,即使是对象也是对象引用的副本。 Java的基本数据类型有8种,包括整型...

    javafx_2.0_introduction_by_example

    JavaFX 2.0的关键架构策略包括对现有Java库的再利用和与其他运行在Java虚拟机(JVM)上的语言(如Visage、Jython、Groovy、JRuby和Scala)之间的通信桥接。这种设计思路使得JavaFX能够更好地融入现有的Java生态系统...

    javaeye月刊2008年5月 总第3期.pdf

    8. **Groovy, JRuby, Jython, Scala:谁是胜利者?**: - 这篇文章可能分析了这些JVM上的动态语言,讨论了各自的优缺点,以及它们在不同场景下的适用性。 9. **《Effective Java》:Joshua Bloch访谈**: - ...

    Java 工程师成神之路!.docx

    - JVM还支持其他语言,如Kotlin、Groovy、JRuby、Jython和Scala。 2. **基础知识**: - **基本数据类型**包括整型(byte、short、int、long)、浮点型(float、double)、布尔型(boolean)和字符型(char)。...

    The_Dalvik_Virtual_Machine

    例如Scala、Groovy、JRuby、Jython和Clojure等众多语言都可以在JVM上运行,并能够充分利用JVM的许多特性以及标准Java库和无数由个人和组织创建的定制库。 然而,近年来Google却逐渐偏离了这一趋势,开始创建非标准...

    Meetings:收集各种会议的会议记录

    可以/包含在此列表中的一些语言是 C、C++、Java、C#、Scala、Clojure、F#、Ruby(本机、IronRuby 和/或 JRuby)、Python(本机、IronPython 或 Jython)、JavaScript、Groovy 、Kotlin、Haskell、Erlang、Go、Dart...

Global site tag (gtag.js) - Google Analytics