Zur effizienten und speicherschonenden Verarbeitung großer Dokument-Datenmengen versucht die jadice® document platform, sofern es das Bildformat erlaubt, nur die für die aktuelle Seitendarstellung benötigten Dokument-Daten zu lesen, zu verarbeiten und dynamisch zu puffern, statt alle Bild-Daten komplett im Speicher zu halten.
Für dieses Vorgehen werden Datenströme benötigt, deren Dateizeiger beliebig
                positioniert werden kann. In jadice® stehen zu diesem Zweck die
                SeekableInputStreams zur Verfügung. Die Klasse SeekableInputStream ist eine
                abstrakte Basisklasse, welche die Klasse InputStream um
                folgende Methoden erweitert:
seek(long)Setzen der Leseposition im Datenstrom
length()Länge der Daten in Bytes. Falls die Länge nicht bekannt ist, wird der Wert
-1zurückgegeben.getStreamPosition()Aktuelle Leseposition innerhalb des Datenstroms
Die Verwendung von SeekableInputStreams stellt sich für Integratoren einfach
                dar. Für bestimmte Typen von Datenströmen stellt jadice® verschiedene Arten von
                SeekableInputStreams zur Verfügung, die den eigentlichen Datenstrom umhüllen.
                Abhängig vom Anwendungsfall und dem Typ des Eingangsdatenstroms sollte die passende
                Art von SeekableInputStream gewählt werden.
Die gebräuchlichsten SeekableInputStreams werden in den folgenden Abschnitten
                kurz erläutert.
RandomAccessFileInputStream stellt einen SeekableInputStream für lokal
                    (als Datei) verfügbare Bilddaten dar.
Die Klasse bietet einen Konstruktor mit einem
                    File-Objekt, das auf die Bilddatei zeigt, zur
                    Instantiierung an. Diese Datei wird mit einem bestimmten
                        FileInputStream geöffnet, der für die folgenden
                    Lesevorgänge gehalten wird. Während der Verarbeitung in jadice® bleibt der
                        FileInputStream zu der Bilddatei offen und ein
                    Lesezeiger wird innerhalb des Streams positioniert. Zu beachten ist hierbei,
                    dass die Quelldatei, während das Dokument im Viewer geöffnet ist, nicht
                    verändert werden darf. Dies führt, zum Beispiel unter Windows, gegebenenfalls
                    auch zur Sperrung des Zugriffes auf die betreffende Datei.
Zur Verarbeitung der Bilddaten in jadice® wird eine temporäre Datei erzeugt, in der bereits gelesene Daten abgelegt werden. Nach Gebrauch, spätestens jedoch beim nächsten Start der jadice® document platform, werden die nicht mehr benötigten temporären Dateien gelöscht. Falls durch den Integrator keine abweichende Konfiguration vorgenommen wird, werden die temporären Dateien im durch das System vorgegebenen Temporär-Verzeichnis abgelegt.
Zur Instantiierung bietet der FileCacheInputStream einen Konstruktor, der
                    einen gegebenen InputStream aufnimmt und eine
                    Bearbeitungsdatei im gesetzten Temporär-Verzeichnis anlegt.
Ein weiterer Konstruktor bietet die Möglichkeit neben dem
                        InputStream ein Temporär-Verzeichnis und ein Flag, ob
                    die erzeugte Datei nach Gebrauch zu löschen ist, anzugeben.
Bilddaten werden bei diesem Stream-Typ im Hauptspeicher gehalten. Ähnlich dem
                    FileCacheInputStream bietet diese Klasse einen Konstruktor, der einen
                    gegebenen InputStream aufnimmt und für Lesevorgänge hält.
                    Ein zweiter Konstruktor erlaubt zusätzlich eine Angabe der Blockgröße, in der
                    Daten im Hauptspeicher gepuffert werden sollen. Diese Art der internen
                    Datenverwaltung wird in Security-Relevanten Kontexten bevorzugt.
Ein Vorteil dieser Datenhaltung ist ein extrem schneller Zugriff auf die Dokumentrohdaten. Nachteilig ist ein erhöhter Speicherbedarf durch die Datenhaltung im Hauptspeicher.


