Can you summarize the following document?
        
  

  BCJ / BCJ2壓縮工具所附帶的LZMA SDK包括:在X86、ARM、PowerPC、IA-64以及ARM Thumb處理器上在壓縮之前跳轉目標進行歸一化處理。對於x86平臺來說,這是一個近跳轉、近呼叫以及近條件跳轉需要從“向後跳1665位元組”這樣的機器語言歸一化到“跳轉到5554”這樣的格式,但是短跳轉及短條件跳轉不需要進行這樣的處理。  BCJ與BCJ2之間的區別在於前者只將近跳轉及近呼叫目標地址轉換到歸一化的形式,而BCJ2只將x86平臺下的近跳轉、近呼叫及條件近跳轉目標分別進行壓縮。

  一些Windows作業系統專有的特性深深嵌入在原始程式中,使得最初很難生成一個與Unix等系統相容的版本。然而,LZMA 由於其開放原始碼特性,仍然最終獲得了各種平臺的實現:

  在GNU通用公共許可證下發布的 7-zip 參考版本有以下幾個特點:  這個特點使得這個這個演算法的解壓過程非常適合於嵌入式系統應用的場合。p7zip 為 7-zip 的 POSIX 系統移植。

  LZMA Unix Port 是一個只移植了 7-zip 中 LZMA 壓縮程式碼的版本,內含命令列引數類似於 gzip 的基於資料流的壓縮工具。它不是一個歸檔工具,而只是一個普通的壓縮工具,並且由於它在沒有資料頭中沒有未壓縮檔案大小的UInt64變數,所以它與7-zip生成的LZMA資料流中不同。7-zip使用一種更加靈活的歸檔格式7z,因此不能被此工具解壓。  後來類似的 xz 替代了 LZMA Unix Port,提供了更好的壓縮功能,並最終以其優異的效能和壓縮比成為了不少開源軟體(例如 Linux 核心原始碼、Debian deb 和 Fedora rpm)的壓縮方式之一,甚至是預設壓縮方式。xz 命令列程式曾有過一個名為 pxz 的分支,提供多執行緒壓縮功能,後來 xz 在 5.2 時本身就直接提供多執行緒了。

  Lzip 是另一個 Unix-like 系統下的 LZMA 壓縮格式,其主要目的之一就是和 xz 競爭。與 xz 相比,它的最大亮點在於提供更簡單的檔案格式和因此得來的更方便的資料恢復。Lzip 的格式如此簡單以至於其文件中就存在一個解壓器實現,於是未來的資料考古學家即使在量子計算機使得 LZMA 無用多時之後只靠文件也能成功解壓檔案。

  使用或者支援LZMA的軟體有:

  LZMA的壓縮輸出流是一個位元流,採用自適應二進位制行程編碼器(adaptive binary range coder)。位元流劃分為包(packet),每個包或者表示一個位元組的被壓縮資料,或者如同LZ77的壓縮輸出序列那樣的長度與距離的對(pair)。每個包得每個部分作為獨立的上下文(context),從而對每個位元的概率預測僅相關於前一個包的同型別位元值。  有7類包:  LONGREP[*] 表示LONGREP[0-3]四種包, *REP指稱LONGREP 與SHORTREP, *MATCH指稱MATCH或*REP.  LONGREP[n]包刪除了對距離的直接表示,而是使用包序列最近四個距離。 包的長度部分表示如下: 如同LZ77, 長度不一定要小於距離。  距離在邏輯上是32位元,距離0表示最近增加到詞典的那個位元組。  距離的編碼以6位元"distance slot"開始,由此可知後面跟著多少位元來補全。這是可變長編碼。 距離解碼後為位元流,從最顯著位到最不顯著位。distance slots 0−3直接編碼了0−3.

  依據嵌入到Linux kernel的 XZ解碼演算法原始檔。
LZMA(Lempel-Ziv-Markov chain-Algorithm的縮寫)是2001年以來得到發展的一個資料壓縮演算法,它用於7-Zip歸檔工具中的7z格式和 Unix-like 下的 xz 格式。它使用類似於LZ77的字典編碼機制,在一般的情況下壓縮率比bzip2為高,用於壓縮的字典檔案大小可達4GB。