LINUX.ORG.RU

Написан X11 сервер для Android

 , ,


0

3

Для Android платформ стал доступен написанный на Java X сервер.
Об этом сообщил в своём блоге Мэт Квэн (Matt Kwan), аспирант из Австралии.

«Последние несколько месяцев я разрабатывал X11 под Android. В ближайшем будущем, может быть, мне понадобится пользовательский интерфейс. Он оказался намного сложнее, чем я представлял, но после долгих стараний я смог закончить свою задумку. Я считаю, что это действительно полезно.»

Этот сервер X11 изначально предназначался для запуска на платформах Android, поэтому он и написан на Java. С помощью него можно будет отображать X11 приложения, запущенные на Linux. Поддерживаются виртуальные и физические клавиатуры, а также touch-screen movements.
Хотя это почти законченная версия, в ней отсутствуют динамическая карта цветов и XRender или RandR.
Эта версия представлена без оконного менеджера, но удалённо можно запустить fvwm. Но приложения которые используют только Xlib должны работать корректно.
X server для Android уже доступен в Android marketplace. Весь код под лицензией Apache также можно найти в code.google.com.
Весь проект состоит из 14100 строчек Java кода.

>>> Подробности

★★★★★

Проверено: Shaman007 ()
Последнее исправление: mono (всего исправлений: 3)

Ответ на: комментарий от anonymous

Как бонус, такой проект может уменьшить разрыв между десктопом и мобилкой и упростить портирование десктопного софта.

Даже не как бонус, а это было бы очень желательно.

Вопрос в другом — что из этого реально заработает? Будет ли развитие у этого проекта? Или его забросят, и он так и останется всего лишь забавной демонстрацией того, что X-ы можно написать на жаве в 14000 строк.

ППКС

kernel ★★☆
()
Ответ на: комментарий от d9d9

Через VNC очень убого получается. Я пробовал уже.

Quasar ★★★★★
()
Ответ на: комментарий от anonymous

Вот только Java для Dalvik под ведроид является более LSL, чем обычной жабой.

Quasar ★★★★★
()
Ответ на: комментарий от splinter

splinter> Кстати кто скажет почему сдох Y?

По тем же причинам, по каким сдохла NeWS.

Quasar ★★★★★
()
Ответ на: комментарий от Quasar

У меня он есть, но на клавиатуре\мыши удобнее чем на экранном управлении играть. Да и просто сидишь вечером, скучно, а сыграть в какую нибудь красивую аркаду и не во что, а на ведроиде их тысячи.

Loki13 ★★★★★
()

Ждём прикручивания к ConnectBot.

Yareg ★★★
()
Ответ на: комментарий от Quasar

Нафиг он тогда нужен? Лучше сразу ставить Debian в этом случае.

Чтобы пересобрать приложение под арм и гонять в андройде. Одно дело перекомпилировать свободное приложение, а другое дело патчить его с иксов на андройдовый фреймбуфер.

А в дебиане звонить тяжко и вообще он для телефонов не особо.

AVL2 ★★★★★
()
Ответ на: комментарий от exception13

Кто-нибудь может объяснить, почему нельзя было портировать Си-шный xorg через NDK?

Потенциально две причины.

1) андройд хоть и армовый, но моделей на самом деле много. Так что пришлось бы делать кучу компиляций.

2) автор знает жабу и хочет кодить на ней.

AVL2 ★★★★★
()
Ответ на: комментарий от Deleted

Спасибо, что перефразировали и вернули мне мою же мысль.

А то вдруг я сам не понял, что написал.

Спасибо.

anonymous
()
Ответ на: комментарий от AVL2

андройд хоть и армовый, но моделей на самом деле много. Так что пришлось бы делать кучу компиляций.

Целых две. Если включать поддержку х86, то три.

PolarFox ★★★★★
()
Ответ на: комментарий от Quasar

Затем, чтобы между платформами без перекомпиляции переносить.

Вы бы еще ядро между платформами «без перекомпиляции» переносили :)

Displacer ★★
()
Ответ на: комментарий от Evgueni

Дешёвых планшетов с MeeGo нет (да и просто с планшетами весьма не густо), а вот Android-планшетов — очень много.

Предположим даже, что Вас кто-то насильно заставил купить планшет с андроидом, на котором невозможно поменять ОС, но всё же почему не полноценный xorg?

Displacer ★★
()

...написанный на Java...

Закопать немедленно!

Deleted
()
Ответ на: комментарий от Evgueni

То есть Вас таки кто-то принудил приобрести «Nook Color», хотя Вы заранее знали о необходимости в установке софта, требующего X Server?

Displacer ★★
()
Ответ на: комментарий от Evgueni

Это Вы видите удобство в тормозном и недоделанном X Server-e на Java, в то время как нет никаких технических препятствий (есть NDK, и в сущности в этом и был вопрос) к портированию полноценного сервера xorg?

Displacer ★★
()
Ответ на: комментарий от Evgueni

Если бы лично мне это доставило какое-то удобство, то я бы занялся. А так, как уже сказал, использую MeeGo.

Displacer ★★
()
Ответ на: комментарий от anonymous

1. Java все наследовала от С++, так что С++ ничуть не хуже жавы 2. С++ - довольно таки расспространенный язык 3. Андроид не простая мобилка, а смартфон. Предпологается что я смогу писать нормальные приложения для него на языках, которые генерируют машинный код. Я и для любого другого телефона попишу на джаве, нафиг мне андроид.

vova7890 ★★★
()
Ответ на: комментарий от vova7890

Java все наследовала от С++, так что С++ ничуть не хуже жавы

Ты произошел от обезъяны, поэтому обезьяна ничем не хуже тебя. Другими словами, ты ничуть не лучше обезьяны

anonymous
()
Ответ на: комментарий от vova7890

Че сказать то хотел?

Ничего личного. Просто решил проверить на другом примере, как работает твоя логика. (Если Б - потомок А, то А - не хуже Б) А что, херня получилась?

anonymous
()
Ответ на: комментарий от VladimirP

Ты что-то перепутал, явно.

Это ты перепутал. Причём тут duron? Я говорю о запуске тяжёлого софта на стационарном (core i7 например), с планшета лёжа на диване. Ы?

iBliss
()
Ответ на: комментарий от anonymous

Ты произошел от обезъяны, поэтому обезьяна ничем не хуже тебя. Другими словами, ты ничуть не лучше обезьяны

Все, что у тебя есть, все от бога. Другими словами, ты ничуть не лучше бога.

Все, что у тебя есть хорошего, все унаследовано от папы. Значит папа по крайней мере, не беднее тебя.

AVL2 ★★★★★
()
Ответ на: комментарий от VladimirP

А «дурятиной» ты что обозвал?

:DDD Неее я имел ввиду просто мощную стационарную машину. Старею...

iBliss
()
Ответ на: комментарий от vova7890

Плохое сравнение

Не стоит путать сравнения, что является излюбленным методом гуманитариев, с формальной логикой, которая работает так же точно, как и весь математический аппарат. Я к тому, что это было не сравнение. А логические утверждения, либо они работают, либо нет. На любых примерах. Если есть хотя бы один пример, где логическое утверждение не работает, значит оно неверное.

anonymous
()
Ответ на: комментарий от AVL2

Если Б - потомок А, то А - не хуже Б - это утверждение оспаривалось мной. Теперь ваше:

Все, что у тебя есть, все от бога. Другими словами, ты ничуть не лучше бога.

Все, что есть у Б, пришло от А.

Все, что у тебя есть хорошего, все унаследовано от папы. Значит папа по крайней мере, не беднее тебя.

Все, что есть у Б, пришло от А.

А теперь сравним: Если Б - потомок А (другими словами, _некоторые_ вещи, которые есть у Б, пришли от А) _Все_, что есть у Б, пришло от А.

Примеры не в кассу. Поэтому разбирать их не имеет смысла.

anonymous
()
Ответ на: комментарий от vova7890

Эх, ошибка почти в каждой фразе.

1. Java все наследовала от С++,

Далеко не все, только некоторые моменты. Очень многое в java отличается от C++. Начиная от простых мелочей (вроде @Override) и заканчивая важными изменениями (вроде обязательной обработки исключений), некоторые из них и в С++ не мешало бы добавить. Есть и глубинные отличия (другая работа с памятью, например). Это разные языки, похожие, но разные. И еще спорный вопрос, какой из них в принципе лучше.

так что С++ ничуть не хуже жавы

Хуже. Для разработки под мобилки он по нескольким пунктам хуже ее (меньше программистов, меньшая распространенность среди мобильных устройств). А чем С++ лучше жавы, кроме религиозных причин?

2. С++ - довольно таки расспространенный язык

В системном программировании — вероятно, самый распространенный. Но мы же говорим не про языки вообще, а про их применение для конкретной задачи — разработка мобильных приложений.

3. Андроид не простая мобилка, а смартфон. Предпологается что я смогу писать нормальные приложения для него

Нет. Под него итак пишутся «нормальные» приложения. Если же под «нормальными» понимаются «десктопные», то нет, не предполагается. Десктопные приложения рассчитаны на большой экран, многооконный интерфейс, часто выделенную клавиатуру и мышь. Мобильные приложения рассчитываются для работы на маленьком экране, без окон, клавиатуры и мыши.

Я и для любого другого телефона попишу на джаве, нафиг мне андроид.

Во-первых, андроидовая жава ближе к j2se, чем жава «любого другого телефона» (которая j2me/midp). Она дает большую свободу действий. Поэтому она относительно хороша как для десктопных java-программистов, так и для тех, кто специализировался только на мобилках.

Во-вторых, вместе с андроидом мобилка получает кучу дополнительных фич, от мелочей, вроде голосового ввода текста, компаса/gps/карт, и до маркета с кучей игрушек и приложений на все случаи жизни. А гики получают себе линукс-подобную ось, которую можно легко похакать. Андроид хорош не только тем, что на нем можно программы писать, он еще и для использования удобнее «любого другого телефона».

В третьих, а где взять этот «любой другой телефон»? Их сейчас только китайские и остались. :)

anonymous
()
Ответ на: комментарий от anonymous

Эх, почти все не в ту сторону

Далеко не все, только некоторые моменты.

С-лайк синтаксис, шаблоны(хоть и убогие, но шаблоны), new(без делит >_<), классы, неймспейсы и т.п. Ну не все, а практически все, да.

Хуже. Для разработки под мобилки он по нескольким пунктам хуже ее

Наоборот - лучьше. Жава и рядом не валялась по возможностям, и гибкости языка С++. Да, в джаве есть некоторые моменты для блондинок, ну и что? Без них не настанет конец света(да и коих я не припомню, ибо с джавой досконально не знаком). Темболее С++11, интересно, хоть половина его возможностей есть в жаве?

меньше программистов

ну прально, говнокодеры(не все конечно, но большинство...) ж только на джавах и недоСрешотках пишут.

В системном программировании — вероятно

О_о Где вы увидели С++ в СИСТЕМНОМ программировании? Отсыпьте мне, я тоже хочу. С++ высокоуровневый язык, дяденька(?), страуструпа почитайте.

Если же под «нормальными» понимаются «десктопные»

Под нормальными понимаются приложения которые написаны не на говноязыках и без участия синусоидальных рук. Тоесть вы предпологаете, что построить на С++ мобильное приложения в принцыпе не возможно или сильно геморно? Если так - то вы больны. Жава орграниченный язык, и если бы у ондроидовской жабы не былоб поддержка рантайм запуска функций Java->C, она была ничем не лучьше j2me.

Она дает большую свободу действий

Mega API pack штоле? И толку? А, ну да, толк есть - куча сожранной рамы же.

Во-вторых, вместе с андроидом мобилка получает кучу дополнительных фич

Кои реализованы на С/С++, и если бы не эти бинды для блондинок, то небылоб кнопок «сделай мне хорошо»?

Их сейчас только китайские и остались.

Хз, юзаю сименс(германский), и одроид не куплю никогда скорей всего. Лучьше уж девайсину на чистом линуксе.

vova7890 ★★★
()
Ответ на: комментарий от vova7890

Далеко не все, только некоторые моменты.

С-лайк синтаксис, шаблоны(хоть и убогие, но шаблоны), new(без делит >_<), классы, неймспейсы и т.п. Ну не все, а практически все, да.

Ну да. У java столько же общего с С++, сколько у C++ c PHP. Там тоже похожий синтаксис, классы, и даже new без delete. :) И это мы еще bash и perl не вспоминали, а там тоже сиподобный синтаксис. :)

Жава и рядом не валялась по возможностям, и гибкости языка С++. Да, в джаве есть некоторые моменты для блондинок, ну и что? Темболее С++11...

Эти некоторые моменты для блондинок упрощают написание программ и поиск в них ошибок, требуют меньших знаний и опыта. Программа будет написана быстрее, быстрее попадет на рынок и заработает больше денег. А на таком быстро меняющемся рынке, как рынок мобильных устройств, скорость разработки — это почти решающий фактор.

А теперь посмотрим на С++, на все эти замечательные фичи, множественное наследование, автоматические переменные, лямбды, аналог foreach (из той самой жавы), и куча других полезностей — это все круто. И да, никто не спорит, что С++ — один из самых гибких и фичастых языков. Но чем это помогает быстро и без ошибок писать программы под мобилки?

О_о Где вы увидели С++ в СИСТЕМНОМ программировании?

А на чем нынче пишут операционные системы? Или написание, скажем, DE, уже не считается системным программированием? А apt-get — это уже не системная утилита? ;) Хотя мы отвлеклись от темы.

Под нормальными понимаются приложения которые написаны не на говноязыках ... синусоидальных рук ... Жава орграниченный язык ...

Это — крики фанатика. А вот на практике в чем проявляется удобство C++ для разработки мобильных приложений?

Тоесть вы предпологаете, что построить на С++ мобильное приложения в принцыпе не возможно или сильно геморно?

Возможно, не сильно геморрно, но на жаве — все равно проще.

Хватит доказывать, что С++ не хуже жавы, пора бы уже показать, чем же он лучше? Можно узнать пример задачи, которую на С++ решить раз плюнуть, а на java нужно долго и упорно геморроиться?

anonymous
()
Ответ на: комментарий от anonymous

А на таком быстро меняющемся рынке, как рынок мобильных устройств, скорость разработки — это почти решающий фактор.

согласен

Но чем это помогает быстро и без ошибок писать программы под мобилки?

не знаю, знаю только, что там есть где разгулятся оптимизации. Есть моменты, когда ты можешь почуствовать, что программу создал ты(а не написал три слова на готовых плюшках и на тебе однообразные программы) и она работает на столько быстро, на сколько это можно представить. Но, как вы говорите, рынок и скорость производства в данном случае являются приоритетными для комерческих компаний, но не для пользователя, и опенсорса :)

DE

DE не столько низкое программирование, чтоб назвать его системным, под системным программированием я понимаю ядро(асм и си) :) Но это ещё раз доказывает универсальность языка, его можно использовать как в низкоуровневом программировании, так и в высокоуровневом.

C++ для разработки мобильных приложений?

Я лишь хотел доказать, что в скорости разработки(при желании) С++ не отличается от джавы. Все можно настолько умным способом расположить, что и за память безпокоится не прийдётся...

Можно узнать пример задачи, которую на С++ решить раз плюнуть, а на java нужно долго и упорно геморроиться?

парсер :) Я иногда думаю что без указателей его не возможно написать :-D Конечно возможно... Но, с указателями гораздо быстрей и сам процесс написания и собсно, процесс выполнения программы :)

vova7890 ★★★
()
Ответ на: комментарий от vova7890

там есть где разгулятся оптимизации ... работает на столько быстро, на сколько это можно представить

А, так все верно. Программы, которым критична скорость или какие-то особенности в управлении памятью, пишутся на C/C++. Поэтому, например, движок для браузера никто не пишет на java. Но если скорость в программе не так важна, то можно выбрать и язык попроще.

Я лишь хотел доказать, что в скорости разработки(при желании) С++ не отличается от джавы. Все можно настолько умным способом расположить, что и за память безпокоится не прийдётся...

С этим не спорю. :)

парсер :) Я иногда думаю что без указателей его не возможно написать :-D

Хм, в java для простых случаев есть String.split(). Для сложных есть java.util.Scanner и java.util.regex.Matcher. А для совсем сложных есть библиотеки, вроде antlr. И никаких указателей. :) Если любопытно, то вот примеры кода:
http://stackoverflow.com/questions/3160564/split-tokenize-scan-a-string-being...
http://stackoverflow.com/questions/366202/regex-for-splitting-a-string-using-...
http://stackoverflow.com/questions/9594966/android-antlr-make-not-working-pro...

PS: Кстати, этого нет в J2ME, но есть в андроиде.

anonymous
()
Ответ на: комментарий от anonymous

Хватит доказывать, что С++ не хуже жавы, пора бы уже показать, чем же он лучше? Можно узнать пример задачи, которую на С++ решить раз плюнуть, а на java нужно долго и упорно геморроиться?

На java надо долго и упорно геморроиться, чтобы приложение работало столь же быстро, как на c++, причем с неизвестным конечным результатом. И привлекать соответствующих специалистов с оплатой труда существенно больше, чем у стандартных говнокодеров. В итоге время разработки качественного продукта может оказаться больше, чем на с++, плюс ко всему с негарантированным конечным результатом. А если в то же время кому-то будет не лень написать конкурирующее эффективное приложение, то и инвестиции в целом вылетят в трубу, поскольку пользователь будет выбирать именно его. То есть выбор java в качестве ЯП для проекта - это серьёзный риск. И в большинстве случаев неоправданный. Реально имеет смысл его выбирать только с подписанным договором у заказчика, известными заранее сроками и только для enterprise решений, когда вышеперечисленные недостатки можно компенсировать железом.

Displacer ★★
()
Ответ на: комментарий от Displacer

На java надо долго и упорно геморроиться, чтобы приложение работало столь же быстро, как на c++, причем с неизвестным конечным результатом.

Не совсем так. Ни юзеров ни менеджеров не интересует относительная скорость, важна только абсолютная. Поэтому если прога на С++ обрабатывает нажатие на кнопку за 0.001 сек, а прога на Java — за 0.01 сек, то никого не будет волновать, что java в 10 раз медленнее. С точки зрения юзера обе проги — быстрые.

А если в то же время кому-то будет не лень написать конкурирующее эффективное приложение, то и инвестиции в целом вылетят в трубу, поскольку пользователь будет выбирать именно его. То есть выбор java в качестве ЯП для проекта - это серьёзный риск.

Во-первых, в конкурирующее приложение будут вложены либо большие инвестиции (опытные С++ программисты денег стоят), либо на его разработку (неопытными программистами) уйдет больше времени. Плюс нетривиальная сборка и тестирование под несколько платформ (несколько ARM-ов и x86).

Во-вторых, разница в скорости C++ и Java заметна только на тяжелых приложениях, код которых сильно грузит процессор. Много ли таких на мобилках? Так что спорный вопрос, где риск больше. :)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.