Development Notes

 

General Ranting About the Jail Code

When I first got into artificial intelligence I recognized that Java was a desirable language and platform for this development. Most of my programming experience prior to Jail was Visual Basic and C++ but I decided to go with Java for artificial intelligence work anyway. The key reasons for this selection being (in order of importance):

1) Object oriented development. I can't stress enough how this has helped with neural network development. To be able to create abstract implementations of neurons, layers, and neural networks has made it very simple to implement various types of neural networks.  

Object diagram for neural networks:

2) High precision data types.

3) Easy to implement multi-threaded applications as opposed to other languages. Yeah, I still don't have threads working quite how I want to.. but I'm years ahead of where I'd be if I wrote this in C++. 

4) API which provides many commonly needed utilities such as file I/O and serialization. This isn't directly related to artificial intelligence but has helped development of Jail considerably. For example, one of the things I wanted to have was the ability to save objects once they're in a working state. Once a neural network is trained and producing desired results it's obviously advantageous to be able to save it to disk and reload it at a later time. The Java serialization classes made this a very simple task.

5) Platform independence. Most academic institutions and research labs really on UNIX or some close variant for their operating system. Most businesses and personal computer users prefer Windows. Software that appeals to all these communities must be written in a platform independent language.

I'd be remiss not to mention some of the disadvantages to using Java for artificially intelligence development (also in order of importance):

1) Java runs as an interpreted language causing slowing execution vs. compiled code.. I have not personally hit a point in development where this has been an issue though, the AI components I've built in Java to date have been very efficient.

2) API is still volatile, in theory new JDK releases should be backwards compatible but I swear to you they are not. Yeah, the "important" things work 99% of the time and are at least kind enough to notify you when you use a deprecated method. However, when I switched from JDK 1.3.1 to 1.4, suddenly FocusListener events stopped being generated in places they used to be. Some components stopped receiving focus events entirely. It doesn't sound like much but it caused a rewrite of significant portions of the JailBreak interface. Some functionality was totally lost and I haven't found a way to replicate it yet. Alright, this really has nothing to do with AI but it illustrates a degree of instability with the JDK.

 










< Welcome

API Reference >