Technologies that groovy itself is made up of

3 views
Skip to first unread message

Roshan Dawrani

unread,
Sep 6, 2010, 1:16:38 AM9/6/10
to bangalor...@googlegroups.com
Hi,

Good morning.

I thought I will use this mail to share some information about the technologies groovy itself is made up of/depends on. There are many more than I am listing down below, but below are the some of the bigger tools/libraries used inside core groovy.

May be some of this info could be useful to you outside Groovy context - who knows. Please feel free to extend this list, or share alternative technologies, anything else interesting you want to share :-)

I find them all interesting, so here they are in no particular order:

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1)  Jansi - It is a java library that used to give groovy shell command line a consistent look and feel and behavior across operating systems. It handles the ANSI escape sequences to control the output on console terminals. - http://jansi.fusesource.org/

2)  Commons CLI - Apache Commons library to process command line options. Groovy makes its usage nicer and easier by providing a CliBuilder on top of it - http://commons.apache.org/cli/

3)  Apache Ivy - Dependency manager framework behind the groovy feature @Grab (Grape) that allows you to mention in a script what libraries it requires and then transitively fetches them from a central repo like maven repo - http://ant.apache.org/ivy/features.html

4)  Retrotranslator - It makes your java 5+ application compatible with JDK 1.4 (and lower) - through bytecode manipulations. Until Groovy 1.6, groovy runs on JDK 1.6/1.5/1.4 even though its own Java code is written in JDK 1.5. For groovy on JDK 1.4 environments, groovy code gets retro-translated using this library. - http://retrotranslator.sourceforge.net/

5)  bnd - It is used to turn groovy-*.jar and groovy-all-*.jar into OSGi compliant bundles - http://www.aqute.biz/Code/Bnd

6)  JarJar - It embeds all the basic libraries needed by groovy at runtime into its fat groovy-all version so that this fat version needs no external libraries at runtime and avoid version conflict - http://code.google.com/p/jarjar/

7)  Maven - If you are setting up development environment for groovy, there are a lot of libraries it depends on - for compile time, runtime, etc. Maven is used to manage these dependencies. - http://maven.apache.org/

8)  Ant / Gradle - The build system of groovy is currently in transition from Ant to Gradle - soon, it should be all Gradle based, which itself is written in Groovy - http://www.gradle.org/

9)  ANTLR - Groovy grammar is defined using ANTLR syntax. Groovy source parser is generated by ANTLR - http://www.antlr.org/

10) ASM - Its the bytecode manipulation library that groovy uses to generate JVM compliant classes. - http://asm.ow2.org/ ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

--
rgds,
Roshan
http://roshandawrani.wordpress.com/

Nibin Varghese

unread,
Sep 6, 2010, 1:30:38 AM9/6/10
to bangalor...@googlegroups.com
Hi,

Currently I am doing my research on understanding the internals of JVM. I am reading the book "Inside the Java 2 Virtual Machine" by Bill Venners. I find this book to be very interesting. Is this the only book that explains Java 2 virtual machine internals ? I tried to look for other resources, but could't find anything.

The purpose of my study is to better understand the internals of JVM and how dynamic language support is implemented on top of it. I know that there is a lot to study. Some of the resources that's been shared by Roshan such as ASM, ANTLR etc should be the next topics I should explore.


Regards,
Nibin

Roshan Dawrani

unread,
Sep 6, 2010, 3:26:46 AM9/6/10
to bangalor...@googlegroups.com
Hi Nibin,

Great to know about what you are doing. Very interesting!

I have read the very same book and liked it - had to have at least some idea about JVM internals before I could even think of working on Groovy++ project.

I suggest that to know more useful resources in this area, you could simply drop a mail on groovy dev mailing list - guys like Alex and Jochen should point you to good resources in no time.

Then, here are the videos of the recently completed JVM Language Summit, 2010, (whose whole purpose of existence is to discuss how to better support non-Java, dynamic, scripting languages on top of JVM): http://java.about.com/b/2010/09/01/jvm-language-summit-sessions-online.htm. I am sure you will find most of the talks relevant and may get some pointers there as well.

Tags like - John Rose, Project Coin, JSR 292, Charles Nutter, invokedynamic, java method handles - may be helpful too.

regards,
Roshan

Nibin Varghese

unread,
Sep 6, 2010, 9:13:27 AM9/6/10
to bangalor...@googlegroups.com
Thanks Roshan for the pointers. Last weekend I saw Doug Lee's keynote address and some part of "Mixed language support in Eclipse". I was interrupted at some point and couldn't resume. Should watch it.

-nibin
Reply all
Reply to author
Forward
0 new messages