One thing I will need to consider is garbage collection. I want a good and simple garbage collector, but one which does not add complication and is not slow. I also want to potentially avoid having safe zones for threads to park when GC is happening. I want to avoid reference counting. I also want to avoid scanning the stack and register values for objects.


The non-bootstrap JARs in the target should be in their own directory. This would have far better results because I could potentially add third party JARs and such.


I do wonder how I will implement the StreamProcessor along with the supporting the helper classes needed for inflating compressed data.


I will need a simple but efficient stream processor.


I suppose a direct approach will work. Basically the StreamProcessor reads input bytes and stores them somewhere after they are processed. So the class then will just purely be for reading. The output stream can just be mapped similarly.


Actually, from StreamProcessor and StreamProcessorInputStream I am going to have the same code or just wrapped code. Read from some source and do stuff with it.


Ok so I have been thinking, StreamProcessor is a bad idea. It will just complicate things and right now only two classes will use it, for inflate and deflate. Also in the most common cases, one will never OutputStream inflate and InputStream deflate. So there is not much point in having these classes at all. The stream processing is just over engineered and will just complicate the implementation greatly.