The "Practically Groovy" series was a highly influential collection of technical articles originally
published on the IBM developerWorks platform. The series was designed to advocate for the Groovy
programming language, a dynamic language for the Java Virtual Machine (JVM), and to teach developers
how to use it to simplify traditional Java tasks.
In the mid-2000s, the Java development community was searching for ways to reduce boilerplate code
and speed up the development lifecycle. Groovy emerged as a powerful solution: an agile, dynamic
language for the Java Virtual Machine (JVM) that seamlessly integrated with all existing Java
objects and libraries.
Recognizing this shift, IBM developerWorks launched the "Practically Groovy" article series. The
objective was to provide practical, hands-on tutorials showing developers how to smoothly integrate
Groovy into their existing Java applications, highlighting its ability to simplify testing, database
access, and GUI creation. Because IBM has since retired the developerWorks platform, the original
live articles are no longer officially available, but their architectural lineage is preserved here.
Series Archive
Unit test your Java code faster with Groovy
Introduces the concept of using Groovy's dynamic typing and scripting flexibility to write robust
unit tests for existing, statically-typed Java codeframes.
Archival Document Available A preserved copy of this installment is available
for review.
Explores Groovy's native integration with Apache Ant through AntBuilder, demonstrating how
developers can write complex build logic programmatically instead of relying on verbose XML.
Archival Document Available A preserved copy of this installment is available
for review.
Demonstrates Groovy's simplified approach to database connectivity. By utilizing closures and string
interpolation, Groovy drastically reduces the boilerplate code typically required by traditional
Java Database Connectivity (JDBC).
Archival Document Available A preserved copy of this installment is available
for review.
Discusses how to leverage Groovy's built-in templating engines to generate dynamic web views,
effectively implementing the presentation tier of the Model-View-Controller (MVC) design pattern.
Archival Document Available A preserved copy of this installment is available
for review.
Looks at embedding Groovy scripts into server-side web environments, allowing developers to enjoy
rapid, iterative development without the constant need for JVM recompilation.
Archival Document Available A preserved copy of this installment is available
for review.
A deep dive into Groovy's MarkupBuilder, which provides a streamlined, programmable, and highly
readable syntax for generating hierarchical data structures like XML and HTML.
Archival Document Available A preserved copy of this installment is available
for review.
Acts as a mid-year update on the evolution of the Groovy language, chronicling changes to its syntax
and expanded capabilities as the language matured toward its official 1.0 release.
Archival Document Available A preserved copy of this installment is available
for review.
Explores functional programming paradigms within Groovy, specifically detailing how to utilize
curried closures for partial function application—a concept somewhat foreign to standard Java at the
time.
Archival Document Available A preserved copy of this installment is available
for review.
Discusses Groovy's Meta-Object Protocol (MOP), which enables runtime metaprogramming and dynamic
method dispatch, allowing developers to write their own highly expressive Domain Specific Languages
(DSLs).
Archival Document Available A preserved copy of this installment is available
for review.
Examines the concept of operator overloading in Groovy, showing how developers can overload standard
mathematical and logical operators to make custom objects behave more intuitively.
Archival Document Available A preserved copy of this installment is available
for review.
Introduces the foundational concepts of utilizing Groovy's flexible syntax to construct expressive,
domain-specific languages (DSLs) that seamlessly run on the JVM.
Archival Document Available A preserved copy of this installment is available
for review.
Examines Groovy's native collection closures, illustrating how methods like "each" dramatically
simplify iteration and list manipulation compared to traditional Java loops.
Archival Document Available A preserved copy of this installment is available
for review.
Demonstrates Groovy's unparalleled power in handling XML, showcasing how XmlSlurper and
MarkupBuilder render complex parsing and generation tasks practically effortless.
Archival Document Available A preserved copy of this installment is available
for review.
Metaprogramming with closures, ExpandoMetaClass, and categories
Takes a deep dive into Groovy's metaprogramming capabilities, revealing how developers can
dynamically inject new behavior into existing Java classes at runtime.
Archival Document Available A preserved copy of this installment is available
for review.
Elevates your testing strategy by integrating GroovyTestCase and GMock, providing a fluid,
mock-driven approach to verifying complex interactions in your Java applications.
Archival Document Available A preserved copy of this installment is available
for review.
Explored Groovy's Abstract Syntax Tree (AST) transformations. The article specifically covered how
the @Delegate annotation can be used to implement the delegation design pattern at compile-time,
entirely eliminating boilerplate routing code.
Archival Document Available A preserved copy of this installment is available
for review.
Based on the existence of the subsequent part, this initial article likely introduced the
foundational setup required to build a desktop Graphical User Interface (GUI) using Groovy's
SwingBuilder class.
Archival Document Available A preserved copy of this installment is available
for review.
Demonstrated how to write a functional, declarative Groovy GUI client capable of communicating
securely with the Twitter API using HTTP Basic Authentication and Base64 encoding.
Archival Document Available A preserved copy of this installment is available
for review.