title: Java 2D library for paint programs
body: <p>I'm having difficulty locating a Java 2D based library for developing a paint program. </p>
  
  <p>All the libraries I find seem to be for:</p>
  
  <ul>
  <li>animation</li>
  <li>graphing</li>
  <li>games</li>
  </ul>
  
  <p>None of which are useful to me for a paint program. (This particular project is primarily for webcomics and print comic books.)</p>
  
  <p>I'm mostly interested in something that abstracts file IO for images that are practically too large to load into a BufferedImage object. </p>
  
  <p>Adobe's tools for example are probably not loading whole 10MB (compressed) image files into memory -- once decompressed, that's just too much physical memory to devote to caching the image (especially if you open a dozen of them at once), so there must be a framework in those applications for managing the files on disk and buffering just the currently relevant areas in memory. </p>
  
  <ul>
  <li>I imagine it would at least have an Image subclass that works the
  same way as BufferedImage while abstracting away the fact that the
  image is coming and going from the file instead of memory.</li>
  <li>An additional wrapper that allows me to zoom in on a rectangular 
  area or zoom out and buffer up the scaled, visible    portion (for
  display) would be extra nice.</li>
  <li>A layering system with blending modes would be super-sweet, although
  I expect I'll have to build that myself.</li>
  </ul>