LINUX.ORG.RU

mono (C#) vs. Java


0

0

не флейма ради...
есть задача - написать некое небольшое _кроссплатформенное_ приложение. т.е. чтобы я мог отдать клиенту бинарник и клиент его сразу же мог запустить у себя (по минимуму доставляя разный сторонний софт. в идеале - вообще без установки доп. софта). у клиентов по распостраненности такие операционки :

- оффтопик
- макос
- немного линукса.

я так понимаю, mono приложения, скомпиленные в линуксе (monodevelop), будут без проблем запускаться в оффтопике (и при некотором изврате и в макоси). жаба православнее, но для жабы нужно доставлять доп. софт... посоветуйте плиз, на чем остановиться?

★★★★★

>задача - написать некое небольшое _кроссплатформенное_ приложение

Tcl/Tk + Starpack. объём stand-alone бинария для всех платформ будет ~1M

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

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

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

>т.е. в итоге получим бинарник, который без проблем может запуститься как в оффтопике так и в макоси/линуксе?

именно. рантайм (по сути весь интерпретатор) starpack несёт с собой, отсюда такой размер бинария. но с другой стороны, что JVM что .Net/Mono меньше не будут точно - так что рассмотреть такой вариант стоит

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

тут есть один момент... все причендалы для .Net с высокой вероятностью уже проставлены в оффтопике. да и в линуксе/макоси тоже скорее всего mono либы будут в наличии.
ок, за вариант спасибо, подумаю.

isden ★★★★★
() автор топика

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

Karapuz ★★★★★
()

Ну вообще мне кажся шанс встретить джаву выше чем моно. Это раз. Во вторых джава неплохо вписывается в коружающий десктоп (особенно если СВТ использовать будешь. Если свинг - то под вин и мак выглядят прилично. Под линь - отвратно). Ну и плюс шанс встретить мелкие неприятноые баги на разных платформах в моне мне кажется выше чем в джаве.

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

> все причендалы для .Net с высокой вероятностью уже проставлены в оффтопике. да и в линуксе/макоси тоже скорее всего mono либы будут в наличии.

Неправда. Дотнета в ХРю искаропки нет, да и моноприложения там без дополнительных либ попросту не запустятся.

У жабы есть java web start, но для него нужна на машине клиента установленная jvm.

Так что Tcl/Tk в старпаке(всё своё ношу с собой) тут рулит.

gaa ★★
()

По теме: C# конечно по-удобнее Явы. Но у Явы лучше IDE. Можно в принципе использовать GTK#, Novell ведь выпустила инсталлер под Венду (смотрел, устанавливается легко, работает, выглядит нативно).

Хотя хрен редьки не слаще.

xTERM ★★
()

Есть ещё всякие "компиляторы" для Явы, типа JET. Он же, afaik, сможет это в одну инсталляшку запихать, вместе с jre. И поставить как одно приложение.

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

>> Tcl/Tk в старпаке

> Оно же не обеспечивает кроссплатформенность результирующего бинаря.


Мало кроссплатформенности в рамках платформ win32 и elf-x86 ? Покрывает 98% потребностей.

gaa ★★
()

писать на C и компилить под все нцжные платформы ... во всех остальных сучаях жуткий гемор с фреймворками ...

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

Ну этот вариант подходит в случае когда время разработки не учитывается =)

anonymous
()

Если нужна кросплатформенность на уровне бинаря и чтобы ничего инсталить не надо было то можно попробовать Flash + ActionScript.

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

> Flash + ActionScript

а оно умеет делать всякие штуки типа http (с отправкой POST форм) и ftp коннектов? на нем можно реализовать алгоритм архивирования tar?

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

> Дотнета в ХРю искаропки нет

емнип, эта штука ставится с каким-то сервиспаком или апдейтом... а в висте вроде как есть искаропки.

isden ★★★★★
() автор топика

Что бы без геморроя С# заработал на Linux - нужно использовать gtk# и другие либы mono. Однако, существуют приблуды для моно упаковывающие в екзешник (инсталлятор скорее всего) все необходимости для винды. Да, все дело в инсталляторе.

Далее. Естественно, при разработке придеться учитывать кроссплатформенность. Как минимум каталоги различаются.

Как юзер я бы вас попросил писать на mono. Да и вообще на чем угодно, только не на Java. Ещё раз - mono это компилятор в нативный код, это _НЕ_ виртуальная машина. Более того, читаем про aot в мане, лучше на сайте mono (однако, что бы запускать не из под моно нужны все бибки скомпилить, а у меня это пока не получилось, хоть и делал по инструкции с http://www.mono-project.com/AOT).

См. Incollector - хороший пример кроссплатформенности. Я его уже какой месяц правлю под свои нужды. Вот, думаю на базу его пересадить, однако там коряво работа с моделью продуманна, слишком уж на xml все подсажено. Но думаю получиться, надо лишь засесть за доки (пока все метом тыка, сами понимаете, инструкции читать не ТРУ).

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

спасибо за подробный коммент, единственный вопрос - чем Java не нравится (кроме необходимости наличия jvm)?

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

> единственный вопрос - чем Java не нравится (кроме необходимости наличия jvm)?

0. Тормозит

1. Много жрет

2. Долго запускается

3. Хреново выглядит по сравнению с mono приложениями. Точнее по сравнению с другими gtk приложениями.

Говорю как юзер.

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

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

> 3. Хреново выглядит по сравнению с mono приложениями. Точнее по сравнению с другими gtk приложениями.

Неправда в случае использования SWT. Остальное субъективно :)

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

спасибо. тогда, пожалуй, остановлюсь на mono, т.к. отдавать клиентам-чайникам такую штуку на Java имхо будет не очень гут.

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

>Ещё раз - mono это компилятор в нативный код, это _НЕ_ виртуальная машина.

Дядя, а ты знаешь, что ты дурак? Откуда в нативном коде возьмется Reflection?

>Более того, читаем про aot в мане, лучше на сайте mono

AOT делается с помощью ngen.

>0. Тормозит

>1. Много жрет

>2. Долго запускается

>3. Хреново выглядит по сравнению с mono приложениями. Точнее по сравнению с другими gtk приложениями.

Тоньше

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

>Дядя, а ты знаешь, что ты дурак? Откуда в нативном коде возьмется Reflection?

Как по-твоему работает тот же SP-Forth? :) Рефлексия и нативность кода понятия, как бы, ортогональные.

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

>спасибо. тогда, пожалуй, остановлюсь на mono, т.к. отдавать клиентам-чайникам такую штуку на Java имхо будет не очень гут.

Ты не пугай так... Ты действительно принял решение на основании лоровского топика?!!!

Попробовал бы хоть по хеловорду какому-нибудь на обоих, а там уже "решал"

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

А откуда это на Линуксе предустановленная возмется mono? Или библиотеки к ней?

Ежели надо абсолютно автономный бинарник, я бы остановился на Tcl + starkit. Запускаемый бинарник не получится сделать одинаковым для разных платформ, но можно либо использовать один kit-файл и бинарники tclkit-а для каждой платформы, либо для каждой платформы сделать свой исполняемый бинарник (который, по сути, будет совмещением kit-файла и бинарника tclkit).

Т.е., например, делаем не зависящий от платформы program.kit и поставляем его с tclkit-win32.exe, tclkit-linux-x86 и т.д., запускаем в зависимости от платформы tclkit-win32.exe program.kit, tclkit-linux-x86 program.kit и т.д. Либо превращаем tclkit-win32.exe + program.kit в program.exe и т.д.

Я так делаю всякие утилиты для девочек из соседнего отдела - я полностью в Линуксе ими занимаюсь, девочкам даю исполняемые бинарники для винды. Когда программа использует бинарные расширения для тикля, использую mingw для кросс-сборки. В этих случаях в kit-файл кладу бинарники для всех платформ, подгружаю нужные в зависимости от платформы, на которой kit-файл запускается. И девочки рады, и я все в родном Линуксе делаю. С проблемами пока не столкнулся, напротив, тикль сам заботится обо всяких платформо-специфичных особенностях, вроде разделители компонентов путей к файлам и проч.

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

А гуй собираешся на WinForms писать? И ты думаешь, что в WinForms под Linux и MacOS (а такое есть?) все будет пахать 100% как и в виндах? Респект чувак. Ты оптимист!

С java все таки таких проблем гораздо меньше. Почему-то один и тот же скачаный дистр NetBeans у меня одинаково нормально работает и под Win и под Linux.

vega
()

Проще тогда сделать приложение на питоне + tk/qt/чего-то и собрать бинарник с интерпретатором внутри. Для венды есть py2exe, для линукса/макоси тоже можно кое-чего придумать. Будут три бинарника, выдавай юзерам в одном архиве и все довольны. А питон достаточно кроссплатформенный, если руки прямые.

Только весить архив будет многовато.

А моно найти на линуксовой машине по дефолту сложно. Так что без допсофта не обойтись.

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

> А откуда это на Линуксе предустановленная возмется mono? Или библиотеки к ней?

в убунте, например, либы к mono искаропки есть (как часть гнумовского софта)...

/me внезапно решил еще раз подумать :)

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