22 February 2007

проблемы файлообменных программ в OS/2

LimeWire в течение нескольких лет была основной файлообменной программой работавшей в OS/2. Проблемы начались с версии 4.3.хх — какой-то код задел баг в GoldenCode JVM, что привело к неприятным последствиям — иногда LimeWire мёртво завешивала PM, так что даже не двигалась мышь и не вызывался WatchCat. Приходилось нажимать Ctrl-Alt-Del. Можно было использовать IBM JVM 1.3.1, но она работала медленней и LimeWire иногда выкидывала странные exceptions. Innotek OS/2 Kit for Java тоже был сыроват и любил зависать.
Начиная с версии 4.9.хх, LimeWire перестала работать под Java 1.3. А проблемы с сокетами в Innotek OS/2 Kit for Java привели к тому, что LimeWire отваливалась от сети при поиске.
В то же время, работа самой LimeWire значительно улучшилась, использование старых версий стало анахронизмом.
Тогда для личного использования с GoldenCode JVM я начал делать сборку LimeWire включавшую gui от версии 4.2.6 и core последней версии. Это работало, но поддержка nio в GoldenCode JVM также небезупречна, LimeWire иногда отваливалась от сети. Ситуация изменилась с core версии 4.12.хх — отваливаться от сети перестало, но начало грузить процессор. (Надо ли говорить, что под Windows всё работало нормально?)

Далее, вышедшая бета LimeWire 4.13 потребовала JVM версии 1.5. Да, Sum Java 1.5 for Windows вполне можно запустить в оси используя InnoWin, но проблемы с сокетами там такие же как и у Innotek OS/2 Kit for Java.

Основной вопрос тут — появится ли под OS/2 JVM версии 1.5 или 1.6? Пока, под портирование этого дела коммьюнити собрало 305 долларов, что просто несерьёзно.

Разочаровавшишь в попытках заставить LimeWire прилично работать под OS/2, я задумался о портировании какого либо файлообменного софта.

Выбор сетей тут невелик — либо eDonkey2000, которая не нравится мне идеологией построения, либо Gnutella.

Я просмотрел все программы с открытым исходным кодом для сети Gnutella, из которых можно было бы взять ядро и навернуть поверх него осёвый гуй. Результаты неутешительные.

Варианты:

giFT - безнадёжно устарел, последняя версия от 2004-го года, не поддерживает даже поиск в юникоде.

Mutella - то же самое.

Gnucleus - то же самое, да ещё и использует MFC.

Gtk-Gnutella - более-менее приличное ядро, неторопливо развивается. Нет поддержки метаданных, нет последних фич поиска источников, использует glib (впрочем, я надеюсь это не слишком непреодолимое препятствие).

К сожалению, по сравнению с LimeWire все они тихо курят в сторонке, особенно в свете скорой поддержки DHT в LimeWire. Хотя, в сторону Gtk-Gnutella стоит посмотреть. Но надо выждать, если после того, как LimeWire введёт DHT, Gtk-Gnutella сделает поддержку этого DHT — тогда, определённо, нужно будет заняться портированием.

2 comments

Anonymous
Feb 22, 2007, 1:26:00 PM

> Gtk-Gnutella - более менее приличное ядро, неторопливо развивается. Нет поддержки метаданных, нет последних фич поиска источников, использует glib (впрочем, я надеюсь это не слишком непреодолимое препятствие).
Вот какой-то glib: ftp://ftp.netlabs.org/pub/gcc/contrib/libs/glib-2.12.4-rc1-multithreaded.zip
Не смотрел?

Feb 22, 2007, 4:58:00 PM

2 Anonymous - посмотрю, если буду браться за портирование.

Post a Comment