LINUX.ORG.RU

На чем сейчас можно писать десктоп?

 ,


0

5

Требование 1: Кроссплатформа, родные гуи не нужны, достаточно просто рисовать одно и тоже везде.

Требование 2: Компилируемый бинарь, никаких виртуальных машин или интерпретаторов.

Требование 3: Зрелость библиотеки для гуев.

Требование 4: В языке/платформе должна быть хорошая и удобная работа с сетью, что бы не изобретать велосипеды.

Пока присматриваюсь к C++/Qt и Go/Ui

Но может что еще существует, нормальное?

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

Зависит от твоей задачи. Серьёзное, кроссплатформенный более менее навороченный gui ты замучаешься делать на чем-то кроме qt. Все остальное доставит тебе геморроя разной степени яркости ощущений.

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

а что там должно напрягать?

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

на выходе там уже никакой виртуальной машины то наверное нет

Да что ты говоришь? В рантайме там виртуальная машина, в которую динамически js транслируется.

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

Только она работает так, что никто ее не замечает. В отличие от jvm. Понапишут говна, да разлекламируют еще так, что куча народа будет использовать. Зла не хватает.

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

да низзя JVM, жрет много

Сударь не осили параметр -Xmx?

старт долгий

nagakhl@nagakhl-ubuntu-vm:~$ java -version
java version "1.8.0_31"
Java(TM) SE Runtime Environment (build 1.8.0_31-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.31-b07, mixed mode)
class HelloWorldApp {
    public static void main(String[] args) {
        System.out.println("Hello World!"); // Display the string.
    }
}
time java HelloWorldApp
Hello World!

real    0m0.065s
user    0m0.051s
sys     0m0.012s

Т.е. старта самой ява машины занимает десятые блин доли секунды.

Nagwal ★★★★
()
Последнее исправление: Nagwal (всего исправлений: 1)

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

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

Т.е. старта самой ява машины занимает десятые блин доли секунды.

Это не играет большой роли, т.к. в java-мире принятно ООП 80 уровня с абстракциями над абстракциями и динамическим конфигурированием всего на всех уровнях. Поэтому практически любое реально используемое приложение запускается секунды. Sad but true.

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

Кто то мешает писать на яве без абстракций 80-го уровня, использования ioc фреймворков на аннотациях и прочих приятных, но совершенно не обязательных плюшек, если уж так важно время старта?

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

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

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

http://buggins.github.io/dlangui/


// main.d
import dlangui.all;
mixin DLANGUI_ENTRY_POINT;

/// entry point for dlangui based application
extern (C) int UIAppMain(string[] args) {
    // resource directory search paths
    string[] resourceDirs = [
        appendPath(exePath, "../res/"),   // for Visual D and DUB builds
        appendPath(exePath, "../../res/") // for Mono-D builds
    ];

    // setup resource directories - will use only existing directories
    Platform.instance.resourceDirs = resourceDirs;
    // select translation file - for english language
    Platform.instance.uiLanguage = "en";
    // load theme from file "theme_default.xml"
    Platform.instance.uiTheme = "theme_default";

    // create window
    Window window = Platform.instance.createWindow("My Window", null);
    // create some widget to show in window
    window.mainWidget = (new Button()).text("Hello world"d).textColor(0xFF0000); // red text
    // show window
    window.show();
    // run message loop
    return Platform.instance.enterMessageLoop();
}

Одной кнопки достаточно :)

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

Ты не в курсе, что слова Maven/Ant, сборка классов, куча xml - отпугивает сишников как огонь?) Понятно дело, что java можно готовить на новый манер, без лапши, но в мейнстриме то энтерпрайз! А там лапша и тонны XML!

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

ИМХО, это уж очень радикальная трактовка требования «рисовать одно и тоже везде». Если уж на то пошло, то кроссплатформенные браузеры на разных платформах тоже рисуют не совсем одно и то же...

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

А виртуальная машина javascript в Qt тебя не напрягает?

Если писать на крестах и Qt Widgets — никакой «виртуальной машины» нет и не будет.

EXL ★★★★★
()
Ответ на: комментарий от Nagwal
int main()
{
    std::cout << "Hello World!" << std::endl;

    return 0;
}
time ./hw
Hello World!

real	0m0.003s
user	0m0.003s
sys	0m0.000s

Это все синтетика, но даже тут джабка сливается.

Приложение должно быть легким и жрать определенное количество памяти, в джабке нельзя ограничивать память и ждать отзывчивость, GC тоже тут вреден, а мне его еще нужно в фоне регулярно держать ведь, я же говорю JVM под эту задачу не подходит, хватит ее пушить! JVM это для энтерпрайзных серверов в банках, на десктопах ей делать нечего :)

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

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

бинаря на выходе нет, kivy на роль зрелого не подходит, питон не нужен, прототип не нужен, есть конкретная задача.

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

да видать придется, я думал язык поприятнее есть, плюсы для таких задач избыточны, правда Qt слишком подкупает.

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

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

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

Это все синтетика, но даже тут джабка сливается.

Если тебе критичны несколько сотых долей секунд на старте то сливается. Но что то я сомневаюсь в адекватности этого требования.

Приложение должно быть легким и жрать определенное количество памяти, в джабке нельзя ограничивать память и ждать отзывчивость, GC тоже тут вреден, а мне его еще нужно в фоне регулярно держать ведь, я же говорю JVM под эту задачу не подходит, хватит ее пушить!

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

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

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

это все здорово, НО если смотреть в реальный мир

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

дай хоть одно, которое работает по твоим канонам, я хочу его пощупать, посмотреть, память померить

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

это детали все, понятное дело на пиксель в пиксель никто смотреть не будет, или если будут маленькие различия

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

подружил Go с Tcl/Tk через пайпы, для чего сделал в отдельной горутине обертку пайпов в chan, вроде того

ui.InChan <- «tk_MessageBox -message Hello!»

обратно приходится switch делать для разбора сообщений от гуя, ну чтож, это уже классика

anonymous
()

Под Go есть gtk2 и gtk3 биндинги, правда неполные.

anonymous
()

На чем сейчас можно писать десктоп?

какая нахрен разница? Сколько не отвечай, ты всё равно на джаве высрешь.

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

не понял скепсиса. нужен был гуй для го, тикль хорошо знаю, переносимо, модульно - легко сменить ui с tk на какой-нибудь iup или tui или через ip пробросить. Что еще надо?

anonymous
()

Можешь извратиться с ненужным mono (но таки виртуальная mono машина). На недельке потыкал палочкой, оно теперь даже работает и не падает (почти), хотя в monodevelop полно мелких, но надоедливых багов.

А из нормальных вариантов - Qt и C++, Gtk+C, Gtkmm+C++, Python+ привязка к Qt или Gtk (правда ИМХО от mono не далеко ушло), FLTK+С++ (самый легкий, но малость уродливый вариант), ах да, чуть не забыл - WxWdidgets+C++ (но малость глючная библиотека, особенно фильтры, которые кириллицу игнорируют, хотя вид будет самый нативный, т.к. на разных платформах оборачиваются разные родные гуи).

А вообще твоим требованиям больше всего соответствуют Qt, Gtk и FLTK (хотя «зрелость» последнего тебя может удивить).

peregrine ★★★★★
()

Про github.com/google/gxui уже успели сказать? Может что путное и выйдет, но не скоро

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

Ну не знаю, как по мне, С++ очень даже приятен, а Qt - тем более.

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

Ну он же QML рассматривал как вариант.

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

не сказал бы что проще, вдобавок: 1)всегда есть опасения, не забросит ли автор свою либу, 2)еще изначально было нужно использования любых внешних приложений как дочерних процессов чтобы не велосипедить разные сложные штуки. Так что прикрутить гуй через пайпы получилось само собой без лишних библиотек. А если не понравится тикль и понравится Python/Qt например - пожалуйста

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

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

anonymous
()

Без 1ого требования:Obj C/Cocoa :3 Без 2ого: C++/Qt, скрипты/Tk, Java Без 3ого: +Go/Rust/whatever. WPF/dotnet уже завезли наверное. Без 4ого == С 3им

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

wx

Это wxRust? Так там latest commit 10 months ago. Протухло давно, даже если когда-то хорошо работало.

gtk

rgtk, вроде, чуть более живое. Но ты им пользовался? Мне самому интересно, если что, насколько эти биндинги готовы, удобны и кроссплатформенны.

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

компактная GUI библиотека iu

Последний коммит месяц назад плюс:

Although there are FFI bindings for most of the library, higher level wrappers are only being created as the author needs them or other contributers add them.

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

Без 3ого: +Go/Rust/whatever.

Покажи мне библиотеку для раста. Пусть совсем не зрелую, но с версией хоть немного выше 0.0.2 и хоть немного работающую.

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

LispWorks CAPI, но местные говноеды не поймут скорее.

Местные как раз поймут, только вряд ли ТС захочет выкладывать солидную сумму за LispWorks.

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