powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / где почитать про кроссплатформенность?
20 сообщений из 20, страница 1 из 1
где почитать про кроссплатформенность?
    #33043751
jill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!
Подскажите, пожалуйста, какие-нибудь ссылки, по которым можно найти информацию о технологии разработки кроссплатформенных приложений.
Заранее спасибо.
...
Рейтинг: 0 / 0
где почитать про кроссплатформенность?
    #33043752
jill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
P.S. можно на английском...
...
Рейтинг: 0 / 0
где почитать про кроссплатформенность?
    #33043769
g613
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
где почитать про кроссплатформенность?
    #33044623
jill
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да там вываливаются ссылки только на by, а почитать без покупки не выходит :(
...
Рейтинг: 0 / 0
где почитать про кроссплатформенность?
    #33044628
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
java.
Что тут ещё читать?
...
Рейтинг: 0 / 0
где почитать про кроссплатформенность?
    #33046288
nik_x
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
jillВсем привет!
Подскажите, пожалуйста, какие-нибудь ссылки, по которым можно найти информацию о технологии разработки кроссплатформенных приложений.
Заранее спасибо.

1. Приложениий каких? (например СУБД; GUI; Расчет чего-то...)
2. На чем пишем (умеем)?
...
Рейтинг: 0 / 0
где почитать про кроссплатформенность?
    #33047380
Фотография Andron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно JAVA на
...
Рейтинг: 0 / 0
где почитать про кроссплатформенность?
    #33047385
Фотография Andron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не получилось запостить, вот ссылка

http://java.sun.com/
...
Рейтинг: 0 / 0
где почитать про кроссплатформенность?
    #33047635
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно ещё Qt для гуёв посоветовать. Но там пересобирать придётся.
...
Рейтинг: 0 / 0
где почитать про кроссплатформенность?
    #33049071
Фотография andrushok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To 2i+2l
Есть така весчь ACE TAO. Некая обертка над такими OS зависимыми и везде используемыми функциями, типа
- открыть, прочитать, записать файл
- загрузить динамическую бибатеку, вызвать у нее функцию
- поставить mutex
- породить новый процесс или поток
и еще много чего.
Как раз то, что надо, правда без окошек. И если до этого с stl и boost не работал - тяжеловато будет.
А так, распростроняется бесплатно.
...
Рейтинг: 0 / 0
где почитать про кроссплатформенность?
    #33049359
c127
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 andrushok

>Есть така весчь ACE TAO. Некая обертка над такими OS зависимыми и везде используемыми функциями, типа
- открыть, прочитать, записать файл
- загрузить динамическую бибатеку, вызвать у нее функцию
- поставить mutex
- породить новый процесс или поток


Что тут системно зависимое? Кроме загрузки динамической библиотеки, но ее-то грузить зачем, сама загрузится когда нужно будет. Все отстальное как раз системно независимое, обертка не нужна.

2 jill

Самый правильный вопрос был: какие приложения интересуют?

Если нет ГУЯ, то никаких особых технологий нет, как и проблем с кросплатформенностью. Пишите на С по кернигану-ричи или на стандартном С++, возмите любую книгу по стандартному С++, и все. Кстати в этих книгах обычно говорится о тех нескольких простых правилах, которые нужно соблюдать при разработке кросплатформенных приложений, у Кернигана и Ричи это точно есть.

Не связывайтесь с джавой, там такие же проблемы с кросплатформенностью + проблемы с версиями библиотек и ВМ.
...
Рейтинг: 0 / 0
где почитать про кроссплатформенность?
    #33049414
Фотография andrushok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To 0x7F
А можно с вами поспорить, а?

1) открыть файл/ создать файл. Вроде бы везде похоже, но как передать доступ - на винде и на юнихе по разному
2) походить по директориям - совсем разная байда
-- кстати, виндовоз имеет свой API на счет файлов, а всяки open, fopen, create - лишь его обертки
3) поставить mutex - чой-то не вижу соответсвия - пример в студию
4) породить процесс - а иде в виндах fork()?
-- кстати, еще одни грабли, в ксах pid получаем сразу, после fork а в винде, только после exec* (exec* - тоже обертка, чего точно не помню).

Помойму, так...
...
Рейтинг: 0 / 0
где почитать про кроссплатформенность?
    #33051704
Sarin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вердикт:
правильное приложение станет кроссплатформенным после пересборки с минимальным (если у разработчиков руки из головы растут) переделыванием.
...
Рейтинг: 0 / 0
где почитать про кроссплатформенность?
    #33051755
c127
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 andrushok

>1) открыть файл/ создать файл. Вроде бы везде похоже, но как передать доступ - на винде и на юнихе по разному

Что такое передать доступ, кому? Остальное кросплатформенное, возражений вроде нет.

>2) походить по директориям - совсем разная байда

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

>-- кстати, виндовоз имеет свой API на счет файлов, а всяки open, fopen, create - лишь его обертки

Пусть обертки, нас это каким боком задевает?

>3) поставить mutex - чой-то не вижу соответсвия - пример в студию

Прямого соответсвия нет, у мелкософта есть класс CMutex. Если очень ружно можно написать свои аналоги pthread_mutex_lock(pthread_mutex_t *); для винды, которые будут работать с CMutex.

Но это тоже по-моему нетипичная задача. Я никогда не сталкивался, хотя с многопоточностью работал довольно много. При открытии поток блокируется обычной переменной isLock, которую proc() должна установить в 0, примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
int thread_create(int *isLock, pthread_t *thr_a, const pthread_attr_t *atr, THREAD_FUNCTION_DEF proc, void *thi) 
{
  int retc=OK;
  pthread_t thr, *pthr;

  lock(isLock); //*isLock= 1 
  pthr=(thr_a)?thr_a:&thr; 
#ifdef _MSC_VER
  if ((pthr->hndl=CreateThread(NULL, 0 ,proc,thi, 0 ,&(pthr->thr)))==NULL) 
#else
  if (pthread_create(pthr,atr,proc,thi)) 
#endif
    retc=ERR;
  if (OK==retc) 
    wait0(isLock);    //program will be unlocked by thread; "isLock" is in "thi"
  else
    unlock(isLock);   //thread fails, *isLock= 0 
  return retc;
}

В хашнике:
#ifdef _MSC_VER
    #define pthread_attr_t DWORD
    typedef struct {DWORD thr; HANDLE hndl;} pthread_t;
    #define THREAD_FUNCTION_DEF LPTHREAD_START_ROUTINE
#else
    #define THREAD_FUNCTION_DEF thrFnc_t
#endif

>4) породить процесс - а иде в виндах fork()?
-- кстати, еще одни грабли, в ксах pid получаем сразу, после fork а в винде, только после exec* (exec* - тоже обертка, чего точно не помню).


И форка тоже в первоначальном посте не было.

Есть екзек, хоть и с граблями. С форком никогда не приходилось сталкиваться, с екзеком мало.

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


2 Sarin

>Вердикт:
правильное приложение станет кроссплатформенным после пересборки с минимальным (если у разработчиков руки из головы растут) переделыванием.


Да. С вычислительными программами вообще никаких проблем нет, с разными многопоточными и сокетными проблемы есть, но их мало. Обычно сводится к написанию несложных оберток, их немного, и ifdef-ов в h файлах.
...
Рейтинг: 0 / 0
где почитать про кроссплатформенность?
    #33051768
FishingIsGood
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
c127
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
#ifdef _MSC_VER
  if ((pthr->hndl=CreateThread(NULL, 0 ,proc,thi, 0 ,&(pthr->thr)))==NULL) 
#else
  if (pthread_create(pthr,atr,proc,thi)) 
#endif
...

#ifdef _MSC_VER
    #define pthread_attr_t DWORD
    typedef struct {DWORD thr; HANDLE hndl;} pthread_t;
    #define THREAD_FUNCTION_DEF LPTHREAD_START_ROUTINE
#else
    #define THREAD_FUNCTION_DEF thrFnc_t
#endif


Так это, батенька, и есть оно самое - кроссплатформенное програмирование :)

Есть огромное множество "мелочей", используя которые вам не понадобится доставать левой пяткой правое ухо, для того, что бы запустить свою программу на другой платформе. Совет пользовать стандарт С/С++ конечно хорош, но проблема в том, что эти стандарты, к сожалению, не покрывают очень многого, что нужно в повседневной жизни (ждём с нетерпением C++0x уже который год): ни тебе стандарта работы с базами данных, ни распределённых вычеслений, ни работы с файловой системой (ой, извеняюсь, совсем позабыл, что таких задач не бывает - просто файлов достаточно :) ) и пр.

Для того, что бы посоветовать что либо, надо, конечно, знать, что, куда и от куда планируется портировать. Как введение могу посоветовать старую-престарую работу для разработчиков mozilla: http://www.mozilla.org/hacking/portable-cpp.html (там уже многое устарело).

PS. (для с127) Под unix'ом обычно всегда вызывают fork перед вызовом exec (есть, конечно, исключения, но они всего лишь исключения). Поэтому, если разговор про процессы, то fork подразумевается само-собой.
...
Рейтинг: 0 / 0
где почитать про кроссплатформенность?
    #33051777
Фотография andrushok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To 01111111
Cобственно мы с вами и пришли к мению, шо можно ручками подкрутить например CFile и СMutex для ксов, а для виндов написать обертку DIR. Я энто делал, работало. Но ACE-TAO сие делает за тебя и не надо поганить свой коде всякими #ifdef. Кстати, если вдруг на Mac надо будет портировать? Я там воще ничего не знаю... =) акромя что конец стоки тама просто \r (на винде \r\n, на ксах \n). Тоже кстати, проблемка. Небольшая, но учитовать надо. И еще. На разных платформах порядок байтов младший-старший разный. Даже у солярок на спарке и на интеле - процессорно зависимая весчь. А есть некие кросплатформенные бинарные файлы - Blast Search Databases. Предпологается, что можно сгенерить их на обной платформе и один в один использовать на другой. Не большое дело проверить порядок байтов, но все же... У ACE-TAO такой проблемы нет. Все конечно можно сделать ручками. Но уже все и так сделано =)
...
Рейтинг: 0 / 0
где почитать про кроссплатформенность?
    #33051838
Фотография Кувалдин Роман
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
c127 Пожалуйста, пример кода Java, который будет работать под Windows и не будет работать под Linux в студию.
...
Рейтинг: 0 / 0
где почитать про кроссплатформенность?
    #33051953
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не совсем пример кода - но был случай когда самописное GUI приложение
под Red Hat 5.3 (там еще была jdk 1.1, соответственно awt юзалась) - так вот, там виджеты не прорисовывались, если его запускали через X-ы удаленно из виндов. Наверное это был все же глюк X-сервера, но странно, что другие (не java) gui-евые приложения вполне себе прорисовавались.
...
Рейтинг: 0 / 0
где почитать про кроссплатформенность?
    #33053765
c127
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 FishingIsGood

>Так это, батенька, и есть оно самое - кроссплатформенное програмирование :)

А я и не говорил что его нет. Я говорил что все тонкости кросплатформенного программирования изложены у Кернигана-Ричи и умещаются в паре абзацев.

Просто нужно сначала думать а потом программировать, а не наоборот. В этом случае "огромное множество "мелочей", " выродится во вполне обозримое и подъемное количество кода.

>Но ACE-TAO сие делает за тебя и не надо поганить свой коде всякими #ifdef.

Верно. Но только ради вот этого

- открыть, прочитать, записать файл
- загрузить динамическую бибатеку, вызвать у нее функцию
- поставить mutex
- породить новый процесс или поток


врядли стоит тащить, а главное изучать ACE-TAO. Для других задач может и имеет смысл.

>Кстати, если вдруг на Mac надо будет портировать?

Как раз на маке работает лучше чем на винде, это же фрибсд. Там единственная проблема с которой я столкнулся это что некоторые h файлы лежат в директории .../include/sys

2 Кувалдин Роман

>c127 Пожалуйста, пример кода Java, который будет работать под Windows и не будет работать под Linux в студию.

Во-первых я о линуксе в применении к джаве не говорил, читайте внимательно. Есть ведь и другие платформы, например довольно распространенная PalmOS, на которой джавы нет вообще, есть какой-то кусок не удовлетворяющий никаким стандартам. И что теперь делать с кросплатформенным программированием?

Во вторых кроме кода в джаве есть еще виртуальная машина и библиотеки. Возьмите версию линукса со слегка устаревшей VM или слегка устаревшими библиотеками, возьмите достаточно сложный джава код и получите желаемый результат. Или не устанавливайте их вообще, они ведь в линукс (и в винду) не входят, у меня на машине не установлены например. В этом случае желаемый результат достигается даже быстрее и легче.
...
Рейтинг: 0 / 0
где почитать про кроссплатформенность?
    #33053769
c127
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Об ACE-TAO это ответ для andrushok.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / где почитать про кроссплатформенность?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]