omni.ja (formerly omni.jar)

Firefox and Thunderbird achieve performance improvements by moving many of their internal parts from being standalone files or sets of JAR files into just one JAR file called omni.ja; this reduces the amount of I/O needed to load the application. This article covers the contents of the archive and techniques for inspecting those contents.

Note: Starting with Firefox 10 and Thunderbird 10, the file extension .ja is used because Windows System Restore does not back up files with the .jar extension, but it does back up .ja files. This change was needed to prevent Firefox from becoming corrupted.

Inspecting and repacking omni.ja

Note: When extracting omni.ja, you may incorrectly get false warnings from some virus protection software.

Several unzip tools and archives (except for the latest version of 7-Zip) currently cannot read omni.ja, due to the optimization that is applied to the file. It is suggested that Windows 7 users unzip the file by renaming it to omni.zip and using Windows Explorer to extract all files. Users of older versions of Windows can use InfoZip's UnZip tool to extract files - make a copy of omni.ja, and drag-and-drop it onto unzip.exe. Linux users can simply use unzip command to inflate files of omni.ja.

omni.ja is also incompatible with Zip files in the other direction; editing extracted files won't affect Firefox, and repacking edited files may break Firefox if you do not use the right options when packing the extracted files. The correct command to pack omni.ja is:

zip -0DXqr omni.ja *

The working directory must be at the root directory of the files from the omni.ja file. zip -0DXqr omni.ja path/to/omni/* will not work.

Note: Prior to Firefox 10 and Thunderbird 10, omni.ja was called omni.jar.

omni.ja contents

The omni.ja file contains assorted application resources:

chrome.manifest
The chrome manifest file.
/chrome/
User interface files for the application
/chrome/localized.manifest
Manifest of localized content; referenced by the main chrome manifest file.
/chrome/nonlocalized.manifest
Manifest of non-localized content; referenced by the main chrome manifest file.
/components/
XPCOM components the application relies upon.
/defaults/
Default preference files.
/modules
JavaScript code modules.
/res/
Miscellaneous resource files.

See also