Branch merged
I’ve just merged the contents of my branch of Classpath that I was doing the SSL/NIO work in back into the generics branch. This completes three of the four objectives I set out for my Summer of Code project, with the fourth being optional. These objectives were:
- That the SSL library in GNU Classpath be rewritten to use the NIO model of the JSSE (that is, to write an implementation of the SSLEngine class).
- That the blocking-IO SSL classes in GNU Classpath be rewritten to use the NIO classes.
- That a complete unit test suite be written, which exercises the library with both partial and complete sample SSL connections. These tests should be integrated into the Mauve test suite (see http://sourceware.org/mauve/).
- (Optional, if there is time) That we augment a free Java servlet container (such as GNU Gumdrop) as a test-bed for this library, set up such an instance on a public web server, and run some performance and scalability tests on this server.
The last on the list will have to wait, because Classpath’s non-blocking IO is not in good enough shape to handle a project like this, in my opinion. I’m going to be working on fixing that when I get a chance.
This is good enough to satisfy me for this project. All things considered, it went remarkably well. One major factor in it all coming together so well is the environment that I did my coding in: when I wrote the original version of Jessie, I was unemployed, just out of college (undergrad), and typing on a laptop on my mom’s couch. For the Summer of Code, I took a month of vacation off of work, and sat on my mom’s couch again and coded on my (now much faster, and with a keyboard and battery that works) laptop. The comfort and total lack of distraction really helped, and I was able to finish the bulk of the work in only a few weeks.
I’m pretty satisfied with how the code turned out. A big problem with the original implementation was that it did a lot of work in one class, meaning that class was thousands of lines long, and hard to understand. Now, that work is split between a server and a client class, and it does this inside a switch statement, so it’s pretty easy to tell what block of code is doing what.
This was a lot of fun, and I hope I’ll do it again next year!

Loading...