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.

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.