Вот класс на PHP для создания ZIP архива:

<?php
class zip{
public $a=array();
public $b=array();
public $c=0;
public function addDir($e){
$e=str_replace('\\','/',$e);
$this->b[]="\x50\x4b\x01\x02\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00".pack("v",strlen($e))."\x00\x00\x00\x00\x00\x00\x00\x00\x10\x00\x00\x00".pack('V',$this->c).$e;
$this->c+=strlen($this->a[]="\x50\x4b\x03\x04\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00".pack("v",strlen($e))."\x00\x00".$e."\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00");
}
public function addFile($i,$e){
$e=str_replace('\\','/',$e);
$j=strlen($i);
$k=crc32($i);
$l=substr(gzcompress($i),2,-4);
$m=strlen($l);
$this->b[]="\x50\x4b\x01\x02\x00\x00\x14\x00\x00\x00\x08\x00\x00\x00\x00\x00".pack('V',$k).pack('V',$m).pack('V',$j).pack('v',strlen($e))."\x00\x00\x00\x00\x00\x00\x00\x00\x20\x00\x00\x00".pack('V',$this->c).$e;
$this->c+=strlen($this->a[]="\x50\x4b\x03\x04\x14\x00\x00\x00\x08\x00\x00\x00\x00\x00".pack('V',$k).pack('V',$m).pack('V',$j).pack('v',strlen($e))."\x00\x00".$e.$l.pack('V',$k).pack('V',$m).pack('V',$j));
}
public function getZip(){
$i=implode('',$this->a);
$n=implode('',$this->b);
return $i.$n."\x50\x4b\x05\x06\x00\x00\x00\x00".pack('v',count($this->b)).pack('v',count($this->b)).pack('V',strlen($n)).pack('V',$this->c)."\x00\x00";
}
}
?>
Надо найти реализацию gzcompress на чём-нибудь близком к Java и тогда написание не составит труда.