Се­год­ня в оче­ред­ном тех­но­мик­се по веб-тех­но­ло­ги­ям я расска­жу про ин­терес­ную и, на мой вз­гляд, пер­спек­тив­ную тех­но­ло­гию Adobe AIR. Кто не зна­ком, AIR или Adobe Integrated Runtime это та­кая се­бе мульти­плат­фор­мен­ная сре­да запус­ка при­ло­же­ний, до­ступ­ная в на­сто­я­щих мо­мент для windows, macos и да­же linux. Сде­ла­на она, как и все ге­ни­аль­ное, про­сто: са­ма "вир­ту­аль­ная ма­ши­на" пред­став­ляет со­бой что-то ти­па sandbox-а, webkit-based брау­зе­ра с до­пол­ни­тель­ны­ми API, ко­то­рый мо­жет запус­кать вну­три се­бя при­ло­же­ния, на­пи­сан­ные на html + javascript ли­бо же flash (adobe flex, если быть точнее). Вто­рое я счи­таю уже уми­ра­ю­щей, не­нуж­ной тех­но­ло­ги­ей (а в сле­ду­ю­щих па­роч­ке тех­но­мик­сов бу­дет бо­лее ин­терес­ный и пер­спек­тив­ный silverlight с си­шар­па­ми, WPF и XAML), поэто­му те­сто­вое при­ло­же­ние я пи­сал на JS. Идею при­ду­мы­вать дол­го не при­шлось, про­сто ре­шил на­пи­сать деск­топ­ную вер­сию Show Forecast пла­ги­на для Google Chrome. На пор­ти­ро­ва­ние ушло чуть больше ча­са, на­столь­ко все удоб­но.

На­чнем с опи­са­ния тех­но­ло­гии и про­цес­са. Для раз­ра­ботки вам ну­жен Adobe AIR SDK, со­ве­тую сра­зу смот­реть на вер­сию 2.0, хоть она по­ка еще и в бет­ках, но со­дер­жит много све­же­го и но­во­го. В прин­ци­пе, это все, откры­вайте ма­ну­а­лы, да­ви­те пры­щи и пи­ши­те мо­но­хром­ный код, ну а мы бу­дем ис­поль­зо­вать Aptana IDE, где с по­мо­щью wizard-а мож­но за 10 се­кунд со­здать но­вое AIR при­ло­же­ние, а с по­мо­щью де­баг­ге­ра и про­файле­ра - со­от­вет­ствен­но де­ба­жить и про­фи­ли­ро­вать его же. Для раз­ра­бот­чи­ка до­сту­пен хо­ро­ший API со сред­ней до­ку­мен­та­ци­ей. API очень жир­ный и предо­став­ляет ин­тер­фей­сы для ра­бо­ты с файло­вой си­сте­мой, со­ке­та­ми, SQLite DB, мульти­ме­диа де­вай­са­ми и т.п. При­том, как из flash, так и из JS. Все это по­сле ин­клю­дин­га AIRAliases.js вы­зы­ва­ет­ся из неймспей­са с по­мо­щью with (air){}. Прак­ти­че­ски все API асин­хрон­ны и ра­бо­та­ют на event-based мо­де­ли, но, в от­личии от род­но­го веб­ки­товско­го SQLite движ­ка, в AIR при ини­ци­а­ли­за­ции под­клю­че­ния мож­но за­дать тип с по­мо­щью openAsync ли­бо про­сто open для по­сле­до­ва­тель­но­го вы­пол­не­ния запро­сов. В прин­ци­пе, функ­ци­о­наль­но­сти AIR хва­тит для со­зда­ния кли­ен­та для лю­бо­го сер­вер­но­го ПО, ко­то­рое отда­ет дан­ные по tcp\udp, а еще луч­ше - име­ет ка­кой-то http API. Не зря "из воз­ду­ха" воз­ник­ли не­пло­хие твит­тер кли­ен­ты, джа­бер ча­ти­ки и про­чая мел­кая ми­шу­ра. Кста­ти, огром­ным плю­сом яв­ляет­ся под­держ­ка прак­ти­че­ски всех совре­мен­ных javascript фрейм­вор­ков, мой лю­би­мый и не­на­гляд­ный jquery ра­бо­тал на ура. На глаз, ра­бо­та­ет все в AIR 2 на уров­не Google Chrome Dev, а ме­ста­ми (да-да, SQLite, напри­мер) да­же бы­стрее.

Под­во­дя ито­ги, плю­сы: од­но при­ло­же­ние бу­дет ра­бо­тать на всех плат­фор­мах, ис­поль­зо­ва­ние рас­про­стра­нен­ных язы­ков раз­ра­ботки, под­держ­ка совре­мен­ных тех­но­ло­гий (html5, css3 + webkit transforms and effects), встроен­ный уста­нов­щик, ме­не­джер при­ло­же­ний и updater с воз­мож­но­стью за­ме­ны их свои­ми. Ну и без ми­ну­сов ни­ку­да: это все же html и js со все­ми вы­те­каю­щи­ми, иг­ры и вир­ту­аль­ные ми­ры с шей­де­ра­ми-шмейде­ра­ми на этом не напи­шешь, в ОС поль­зо­ва­те­ля дол­жен быть уста­нов­лен AIR, не­за­щи­щен­ность ис­ход­ни­ков: рас­па­ковы­вай и смот­ри, как это все ра­бо­та­ет. Мож­но еще при­драть­ся к упро­щен­ной ра­бо­те с файло­вой си­сте­мой, стол­л­ман плю­ет­ся на про­при­е­тар­ность тех­но­ло­гии и от­сут­свие нор­маль­но­го де­ба­ге­ра. Aptana еще очень да­лек от ори­ги­на­ла, я уже мол­чу про trace ме­тод само­го AIR. Но это все на­жив­ное.

В об­щем, ре­зультат вы мо­же­те по­смот­реть в ви­де скрн­шо­тов (main, settings), ска­чать в ви­де air файла ли­бо же exe инстал­ле­ра. Все это, как обыч­но, opensource. Ко­му ин­терес­но - ка­чайте air файл, ме­няй­те расши­ре­ние на zip, рас­па­ковы­вайте и смот­ри­те. При­ло­же­ние, в от­личии от пла­ги­на, just for fun, поэто­му ни­ка­ких ба­гре­пор­тов и ту­ду. Ра­бо­та­ет и хрен с ним.