Az LHA vagy más néven LZH egy freeware tömörítő alkalmazás, illetve a hozzá tartozó fájlformátum, melyet eredetileg LHarc néven fejlesztett ki a japán 1988-ban. A LHarc hamar de facto "szabvánnyá" vált a japán BBS felhasználók körében.

Történet 1987-88 táján már létezett Japánban LZSS tömörítési algoritmust megvalósító program "LArc", majd "LZARI" címen, LZW algoritmust megvalósító pedig az "ARC", illetve a "PKARC" volt. Az orvosként dolgozó Yoshizaki hobby programozóként azon igyekezett, hogy a Haruhiko Okumura által kifejlesztett LZARI eljárást gyorsabbá tegye. Az LZARI algebrai tömörítési eljárását lecserélte Huffman-kódolásra ("LZHUF"), mely a tömörítési arányon alig változtatott, viszont jelentősen gyorsabbá tette a kódot. Az LZHUF-nak egy assemblyben, illetve C-ben teljesen újraírt változata először LHx, majd végül LH címen jelent meg 1991 januárjában, ez azonban megegyezett az ugyanez év júniusában kiadott MS-DOS 5.0 új LH ("LoadHigh") belső parancsával, így a tömörítőprogramot átnevezték LHA-ra elkerülendő a felesleges név-ütközéseket.

1992-től kezdődően, mind Okumura, mind pedig Yoshizaki egyre elfoglaltabbak lettek orvosi hivatásukban, így az LHA, illetve általában is tömörítési eljárások, algoritmusok fejlesztésével felhagytak. Az LHA32 nevű 32-bites Windows-átirat és a hozzá tartozó kitömörítő programkönyvtár, az UNLHA32.DLL próbaverzió szintjén maradt. Ugyanígy az MS-DOS (LHx for MSDOS) és a Unix változat (LHA for Unix) fejlesztése is megszakadt, a forráskód azonban szabadon felhasználható.

Adatformátum Az LZH-formátumok bájtsorrendje little-endian (a legkisebb helyi érték legelől). Tömörítési módszerként a Lempel-Ziv-Storer-Szymanski (LZSS) algoritmust és a Huffman-kódolást alkalmazzák. Az LZH tömörítvényekben minden belefoglalt állományt (fájlt) egy fejléc előz meg, mely az adott fájlra mutató információkat tartalmaz. A fejlécek háromfélék lehetnek: level-0., level-1. és level-2. szintű. A 0. szinten a fejlécet rögtön a tömörített adatok követnek, míg az 1. és 2. szinten kiterjesztett fejlécek is vannak (pl. Unix felhasználói jogosultsági/fájlhozzáférési adatok).

Tömörítési módszerek A fejléc "-lhx-" karaktersorozata jelzi az alkalmazott tömörítési algoritmus-változatot a következők szerint:

+ Kanonikus vagy standard LZH-módszerek -lh0- -lh1- -lh2- -lh3- -lh4- -lh5- -lh6- -lh7- -lhd- csúszó keresőablak hossza tömörítetlen 4 KiB 8 KiB 8 KiB 4 KiB 8 KiB 32 KiB 64 KiB üres mappa/könyvtár max. szóhossz 60 byte 256 byte 256 byte 256 byte 256 byte 256 byte 256 byte Huffman-kódolás dinamikus dinamikus statikus statikus statikus statikus statikus

Hagyományos, illetve nem-kanonikus módszerek:

LArc-módszerek: -lzs-, -lz2-, -lz3-, -lz4-, -lz5-, -lz7-, -lz8-; LHa (Joe Jared kiterjesztések): -lh8-, -lh9-, -lha-, -lhb-, -lhc-, -lhe-, -lhx-; PMarc-módszerek: -pm0-, -pm1-, -pm2-, -pms-

Felhasználásai Az LHA népszerű maradt Japánban a 2000-es évekig, azonban nyugaton nem használták tömegesen. Az id Software korai játékaiban, mint amilyen a Doom vagy a Quake alkalmazta az LHA tömörítési eljárást. Az Aminet máig de facto szabványként alkalmazza az LHA Stefan Boberg által megírt Amiga-portjának továbbfejlesztett változatát, habár az 1990-es évek közepén komoly kihívója volt az LZX tömörítő.

A nagy BIOS gyártók, mint például az AMI vagy az Award a BIOS firmware fájljainak tömörítésére LHA-algoritmust használnak módosított fejléccel, annak érdekében, hogy az EEPROM szűkös tárterületét a lehető legjobban kihasználják.

A Microsoft kiadta a Windows XP japán verziójához a Microsoft Compressed (LZH) Folder Add-ont. A Windows 7 japán verziójában az LZH addont a Windows Update-ről lehetett beszerezni a japán nyelvi csomag részeként, azonban csak Windows 7 Enterprise vagy Ultimate felhasználók számára.

Jegyzetek

Források

nyílt forráskódú LHA kitömörítő (+UNLHA32, PMArc, LArc kiterjesztések) az LZH-fájl fejléc formátuma.

Kategória:Amiga-szoftverek Kategória:DOS-szoftverek Kategória:MorphOS-szoftverek Kategória:AROS szoftverek Kategória:Tömörítés Kategória:Tömörített fájlformátumok