Кіріспе

JUpdater – Java бағдарламаларына нұсқа тексеруін жылдам енгізуге мүмкіндік беретін қосымша құрал жасауды мақсат ететін жоба. Бұл құрал пайдаланушыға жаңа нұсқалар туралы хабарлауды және бағдарлама ішінде соңғы нұсқаға оңай жаңартуды қамтамасыз етеді, осылайша ешқандай қосымша әрекеттер қажет болмайды. Құрал тек қана ескірген файлдарды жүктейді, бұл трафикті үнемдейді. JUpdater екі бөліктен тұрады: қолданыстағы бағдарламаларға оңай интеграцияланатын кішкентай Java клиенті және нұсқаларды қадағалап, клиентке қажетті барлық ақпаратты ұсынатын PHP серверлік бөлігі. Жоба әлі де дамып жатыр, сондықтан қателер болуы мүмкін. JUpdater арқылы жаңартылатын кез келген бағдарлама jar файлы түрінде болуы тиіс.

Клиент

Бағдарламаларға шағын кластар жиынтығы, JUpdater клиенті қосылуы тиіс, осылайша олар өз нұсқаларын орталық сервермен салыстыра алады. Клиентке JRE 1.5 немесе одан жоғары нұсқасы қажет. Клиент үш негізгі операцияны қамтамасыз етеді. Барлық файлдардың MD5 тексеру сомаларын салыстыру арқылы белгілі бір jar файлын жаңарту, бұл төменде сипатталған бірнеше қадамда орындалады. Jar манифестіндегі Implementation Version атрибутын пайдаланып, серверде жаңа нұсқа бар-жоғын тексеру. Implementation Version атрибутын пайдаланып, жаңа нұсқаның бар-жоғын тексеріп, сәйкес өзгерістер журналын алу. Жаңарту процесін бақылау үшін интерфейс міндетті түрде енгізілмейді, бірақ қолданылуы мүмкін. Бұл ақпаратты мысалы, пайдаланушыға арналған графикалық интерфейсте көрсетуге болады.

Сервер

JUpdater соңғы нұсқа туралы ақпаратты сақтайтын орталық серверді қажет етеді. Клиенттер жаңа нұсқалардың бар-жоғын тексеру және өзгерістерді, сондай-ақ өзгертулер тізімін жүктеу үшін серверге қосылады. Серверге PHP 4.3 немесе одан жоғары нұсқасы және MySQL 4.0 немесе одан жоғары нұсқасы қажет.

Жаңарту қалай жұмыс істейді

Мұнда толық жаңарту тексеруі кезінде нақты не болатынының егжей-тегжейлі сипаттамасы келтірілген. JUpdater мысалының updateJar әдісі жаңартуға арналған jar файлының атын және тиісті бағдарламаның атын алып шақырылады. Клиент серверге қосылыс ашып, бағдарламаның атын (HTTP Post арқылы) жібереді. Сервер сеанс орнатып, сеанс ID және сол бағдарламаның сервердегі jar файлының URL мекенжайымен жауап береді. Осы сәттен бастап клиент пен сервер сеанста болады, сондықтан сервер клиент қай бағдарламаны жаңартуды қалайтынын осы нақты жаңартуға қатысты барлық келесі сұраулар кезінде есте сақтайды. Клиент сервердің жауабын сақтап, сервердің jar файлының файлдар тізімін XML RPC арқылы сұрайды. Сервер тізіммен жауап береді (сервердің дерекқорынан алынған). Клиент сервердегі файлдар тізімін қарап, таба алатын барлық жергілікті файлдар үшін MD5 тексеру сомасын есептейді, ал қалғандарына 0 тексеру сомасы беріледі. Содан кейін клиент нәтижені серверге (XML RPC арқылы) жібереді. Сервер барлық MD5 тексеру сомаларын дерекқордағы жазбалармен салыстырып, тексеру сомалары сәйкес келмеген барлық файлдардың тізімін қайтарады (яғни, барлық ескірген файлдардың тізімі). Күндері өткен әрбір файл үшін келесі массив қайтарылады: [файл аты, көлемі, дұрыс MD5] (олардың барлығы дерекқордан оқылады). Егер ештеңе ескірмеген болса, клиент осы жерде тоқтайды, әйтпесе жалғастырады. Клиент серверден өзгерістер журналын (XML RPC арқылы) сұрайды. Сервер клиенттің нұсқалары мен соңғы нұсқа арасындағы барлық өзгерістерге (әкімші енгізгендей) жауап береді. Клиент өзгерістерді көрсетеді және тыңдаушыдан файлдарды жүктеуге бола ма деп сұрайды. Егер әдіс false қайтарса, клиент осы жерде тоқтайды, әйтпесе жалғастырады. Клиент ескірген файлдарды бірінен соң бірін уақытша сақтау орнына жүктей бастайды. Клиент әр файл үшін MD5 тексеру сомасын есептеп, оның сәйкес келетініне көз жеткізеді, әйтпесе (әрекеттер таусылғанша) қайтадан тырысады. Клиент барлық ескірген файлдар жүктелгеннен кейін жаңартуды бастайды. Ол ағымдағы jar-дың жаңартылған файлдарын жаңа jar файлына көшіріп, содан кейін жүктелген файлдарды сол jar-ға жазады. Барлық қателерсіз орындалғаннан кейін ол ескі jar-ды жаңартылған jar-мен ауыстырады, осылайша жаңарту аяқталады.