generic programming links
This is not meant to be complete: this is just the list of sources that I've
used along the line. Please feel free to email me with additions, deletions,
and corrections.
Generic Java
- JSR014 Prototype Current early access release of an implementation based on GJ.
- SinjDoc and other tools for working with GJ (along with javadoc for the collections and reflection packages that come with it).
- Retroweaver allows Java 1.5 bytecode to be executed on Java 1.4 JVM's. This is the mechanism jga uses to support Java 1.4, starting after release 0.5.
STL
- Phil Ottewell's STL Tutorial
- Byte article from 1995 by Alexander Stepanov
- SGI's Standard Template Library Programmer's Guide
Other Implementations along the same lines
Commercial
- JGL: Recursion Software, Inc. The original 'de-facto' standard collections and algorithns library. The version 3.0 that we all used back in the days before the Java Collections Framework is no longer available -- version 5.0 is now current, and they seem to be moving toward higher level mathematic and statistical applications.
- Kataba. GPL or Commercial License. Not really an STL adaptation, but a collection of functors wrapped around primitive operations. An algorithms and I/O library is apparantly forthcoming.
- Orbital Library. A high-end mathematic and computer science library with several applications.
Open Source
- Jakarta Commons Functor. One of several efforts under the apache umbrella, this one appears to be an attempt to refactor functor/predicate support out of several existing packages (collections, math, etc). Seems to in limbo as none of the existing packages want to add an external dependency on sandbox code, or to cede control of basic functors.
- Mango is a rather straitforward non-generic implementation based largely on static method facades: most of the standard set is present, but Mango doesn't use construction semantics (a common design choice).
- Lambda4j adds a lambda-calculus syntax to java via a preprocessor.
- dsh-lib includes a variety of functor interfaces (including procedures, and nary, tertiary, and quaternary functors).
- Colt includes an extensive set of mathematic functors tuned for use with primitives rather than objects, as part of a larger high-end math library.
- HOJ - Higher-Order Java is a very interesting looking adaptation of curried functions and tuples adapted from Haskell by Bjorn Bringert.
- FunctionalJ is a non-generic library by Frederic Daoud that takes a more functional programming oriented approach reflective of a Haskell background. It has solid support for variable numbers of function arguments, but binds arguments only from left to right and (from Frederic's examples) emphasizes reflection over composition.
- JFunctional by Ben Yu is a another non-generic library taking a Haskell-ish approach. Ben apparently published this code up during the discussion of FunctionalJ.
- MathEclipse by Axel C. Kramer is another STL derivitive that looks to be in the process of being genericized. At matheclipse.org, Axel has implemented an online symbolic math calculator that uses a language similar to Mathematica
- JavaUtils by Matti Jokipii, Vesa Karvonen, Janne Peltonen, and Nina Sharma of the University of Helsinki contains a non-generic framework for functional object and utilities for working with JDBC, Collections, and Graphs, all implemented as higher order methods.
Miscellaneous References
- WikiPedia:Function Object
- Functional Programming in Java by Mark Zander
- The Java Generic Programming System (pdf) by Chris Mueller and Scott Jensen
- 8 Simple Rules: Java Generics by Chakra Yadavalli
- Functional objects made easy with tiger by Alex Winston
- Using Function Objects as Strategies by Bruce Eckel
- Closures in Java by Keith Donald
- Functional programming in the Java language by Abhijit Belapurkar, Infosys Technologies Limited
- Lisp and Java by Dan Milstein, O'Reilly Network
- Blocks in Java a c2 wiki entry written largely by Robert DiFalco that includes the basic set of STL functors in pseudojava.
- Acyclic Visitor Pattern (pdf) by Robert C. Martin
- http://mini.net/cetus/oo_prolog.html The Prolog example in the JavaOne slides is taken from this page.