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本身的动态语言,可能是更好的选择!
保持一定的层次, 避免太紧的耦合, 看来是非常必要的.
不然,出了问题,如何确定问题的原因呢?
#
分享到:
相关推荐
不过,Java生态系统中有多种脚本语言可以运行在Java平台上,例如Groovy、JRuby等。下面将详细介绍这些概念和技术。 ### Java与脚本语言 #### Java简介 Java是一种广泛使用的通用编程语言,由Sun Microsystems开发...
Java平台的多语言混合编程是指在Java虚拟机(JVM)上运行多种语言,包括静态类型语言和动态类型语言、命令式语言和声明式语言等。这种混合编程方式可以充分发挥Java平台的优势,实现跨平台、跨语言的开发。 Java...
Groovy是一种动态、灵活的语言,其语法比Java更简洁,允许开发者快速编写脚本和原型。Groovy对Java库有很好的支持,可以无缝地与Java代码混合使用。此外,它在构建工具如Grails和Gradle中广泛应用,提供了一种更...
在 Java 平台演进中,作者还对 Java 语言的新特性进行了介绍,包括 Clojure、Groovy、Scala 等语言的特点和优点。Clojure 是一种 Lisp 方言,具有动态的、代码作为数据的特点,良好的 Java 互操作性、函数式编程语言...
此外,也可能提到了跨语言集成,如使用Jython或JRuby实现动态脚本,或是使用 GraalVM 进行高性能的多语言运行时环境。 从【压缩包子文件的文件名称列表】"cy-java"来看,这个文件可能是教程的主索引或者目录,里面...
JVM平台经历了编程语言的巨大变化,出现了许多新的语言,包括动态语言如Javascript、Jruby、Jython、Groovy,以及函数式与面向对象兼具的Scala。这些语言为Java平台上多语言混合编程的发展提供了坚实的技术基础。每...
这一平台为各种其他语言如Groovy、Scala、JRuby、Jython、Clojure、Ceylon和Kotlin等提供了运行环境,形成了丰富的生态系统。这些语言在保留Java平台优势的同时,也引入了各自的特性和语法糖,满足不同开发者的需求...
4. **动态类型语言支持**:如Groovy、Scala等,可以通过JRuby或Jython支持动态语言。 5. **字符串改进**:如`switch`语句支持字符串,`String`的`split()`方法性能提升等。 了解和掌握JDK的使用是成为Java开发者的...
JVM(Java虚拟机)的出现促进了基于JVM的语言发展,如Jython、JRuby、Groovy和Scala等,这些语言利用JVM的优化特性,如垃圾收集、异步I/O和即时编译,实现了更好的性能和开发体验。 #### 系统架构的变迁 软件架构...
1. **多语言支持**:Java 7增加了对其他编程语言的支持,如Scala、Groovy等,通过JVM上的语言互操作性(JRuby, Jython等),使得开发者可以更灵活地选择编程语言。 2. **类型推断**:Java 7引入了钻石操作符(),...
脚本编写器 用于 servlet webapps 的 REST 远程脚本。 支持的语言:Javascript (Rhino)、Groovy、BeanShell ... 即将推出:Scala、JRuby、Jython。 使用 Spray.io、Akka、AngularJS 和 Ace 编辑器在 Scala 中实现。
- **多语言支持**:除了Java之外,JavaFX 2.0还支持其他运行在Java虚拟机(JVM)上的语言,如Visage、Jython、Groovy、JRuby和Scala等,这增加了其灵活性和适用范围。 - **企业级应用**:Oracle公司明确表示,JavaFX...
除了Java,JVM还支持Kotlin、Groovy、JRuby、Jython、Scala等其他语言。值传递和引用传递是参数传递的两种方式,Java中所有参数传递都是值传递,即使是对象也是对象引用的副本。 Java的基本数据类型有8种,包括整型...
JavaFX 2.0的关键架构策略包括对现有Java库的再利用和与其他运行在Java虚拟机(JVM)上的语言(如Visage、Jython、Groovy、JRuby和Scala)之间的通信桥接。这种设计思路使得JavaFX能够更好地融入现有的Java生态系统...
8. **Groovy, JRuby, Jython, Scala:谁是胜利者?**: - 这篇文章可能分析了这些JVM上的动态语言,讨论了各自的优缺点,以及它们在不同场景下的适用性。 9. **《Effective Java》:Joshua Bloch访谈**: - ...
- **Groovy**: 一种面向对象的动态语言,语法接近Java。 - **JRuby**: Ruby语言的一种实现,可以运行在JVM上。 - **Jython**: Python语言的一种实现,同样可以在JVM上运行。 - **Scala**: 一种混合了面向对象和...
- JVM还支持其他语言,如Kotlin、Groovy、JRuby、Jython和Scala。 2. **基础知识**: - **基本数据类型**包括整型(byte、short、int、long)、浮点型(float、double)、布尔型(boolean)和字符型(char)。...
例如Scala、Groovy、JRuby、Jython和Clojure等众多语言都可以在JVM上运行,并能够充分利用JVM的许多特性以及标准Java库和无数由个人和组织创建的定制库。 然而,近年来Google却逐渐偏离了这一趋势,开始创建非标准...
可以/包含在此列表中的一些语言是 C、C++、Java、C#、Scala、Clojure、F#、Ruby(本机、IronRuby 和/或 JRuby)、Python(本机、IronPython 或 Jython)、JavaScript、Groovy 、Kotlin、Haskell、Erlang、Go、Dart...