Summary: The Internet Chess ToolKit is a Java based set of libraries and widgets useful for performing common tasks such as reading SAN, PGN, FEN, and generating legal moves. The net libraries convert ICS (Internet Chess Server) output into java events. This library is licensed under the GPL v2.
About: The purpose of the Internet Chess ToolKit is to provide an extensible library to facilitate the development of internet server clients, bots, training programs, peer-to-peer players, and and various other programs useful for the game player. The library was designed with a high level of abstraction and utilization of object oriented design patterns to make it extensible; The model set up should allow for implementations of many games besides Chess, which is the main focus of this library. Such other games might include chess variants like BugHouse, or completely different games like scrabble and the Chinese game of Go. Another goal of the library is ease of use. A lot of effort has gone into comprehensive documentation and providing sensible names for methods, as well as providing many convenience methods.
The goal of this library has never been to facilitate the development of engines. The amount of objects created, and the delegation of legal move generation to each of the pieces is not conducive to the efficiency required to make a competitive engine. Of course if speed is not a goal of your engine it might be interesting to use this library. All that's really needed is an evaluation routine to chose which of the legal moves the computer prefers.
Much of this library is dedicated to providing support for accepted game notation formats such as PGN (a standard game history notation) and FEN (a position notation). In later releases the library will support less conventional notations such as Scid databases, XPGN, ChessGML and others (if anyone has the specs on the current ChessBase format please email me). As much as is possible the library also tries to support internationalization, with priority on presentation and then on archival.
The net libraries enable programs to connect to internet game playing servers. The primary focus at this point is on establishing support for FICS (a free as in beer server), but later versions will also support ICC (a pay server similar to FICS). The main purpose of the library is to remove the grunt work and screen-scraping tedium from the developer by translating all ICS output into Java event objects. In general you connect to the server and then objects register to listen for different types of events. All the data has already been parsed for you; all you need do is make some sort of use of it. Unfortunately, there are many different ICS events, but over time ictk hopes to support them all.
GUI widgets and other commonly useful objects will be added to the library as well, however this task is very low priority at the moment. Contributions in this area are more than welcome.
Features: as of the latest release v0.2
Documentation: Here is a link to the current javadoc documentation. It is also included in the download. The README file included in the download also gives some suggestions on usage. Sample code is also included to demonstrate how to use ICTK and its MVC structure.
Downloads: There are three distributions you can download. One is the "binary", which consists of the pre-compiled byte-code in a Jar file and the javadoc documentation. The source distribution contains, well, the source, the javadoc, and the JUnit test suite used to check the code. Ant is used to compile the source. I don't recommend downloading the CVS files, they might not even compile. And the third is the "nonet" Jar, which contians all the classes except the net libraries (for those who do not wish to connect to a server.
Mailing List: Subscribing to the mailing list is the best way to be kept apprised of new releases, the best forum for asking questions on usage, and reporting bugs. The mailing list is very low volume. You can also check out the archives.
Author: J. Varsoke. I can be reached at jvarsoke at users sourceforge net.