Каковы альтернативы WPF/XAML с открытым исходным кодом? [закрытый]

Если мы чему-то научились из HTML/CSS, это то, что декларативные языки (например, XML) хорошо описывают пользовательские интерфейсы, потому что:

  1. легко построить препроцессоры кода которые могут шаблонировать код эффектно.
  2. код находится в хорошо определенном хорошо структурированном (идеально) формате, поэтому его легко разобрать.
  3. технология эффективного анализа или обхода исходного файла на основе XML уже существует.
  4. код сценария UIs становится намного проще и понятнее.
  5. Это достаточно просто, что дизайнеры могут проектировать интерфейс сами.
  6. программисты сосут при создании UIs, поэтому это должно быть достаточно легко для дизайнеров.

недавно я взглянул на мясо приложения WPF(т. е. XAML), и он выглядит удивительно знакомым с декларативным стилем языка, используемым в HTML.

текущее состояние разработки desktop UI в значительной степени фракционированный, иначе не было бы так много дублированных усилий в области графического дизайна пользовательского интерфейса(т. е. GTK, XUL, Qt, Winforms, WPF и т. д.).

есть 45 GUI-платформ только для Python

Каковы некоторые GUI с открытым исходным кодом, которые представляют эти характеристики:

  • стандартизированные
  • независимая платформа
  • декларативный язык разметки
  • язык агностик!--4-->

WPF или, более конкретно, XAML кажется довольно вероятным шагом в правильном направлении.

обновление:

большое спасибо за информацию, продолжайте. Вот варианты, которые я собрал из комментариев и ответов.

GladeXML

XRC (XML-ресурс)

форматы на основе XML, которые либо не являются бесплатными, не кросс-платформенными, либо специфичными для языка

XUL

  • Editor: любой основной текстовый редактор
  • платформы ОС: любая ОС под управлением браузера, поддерживающего XUL
  • платформа GUI: двигатель геккона?
  • языки: C++, Python, Ruby как языки плагинов, а не базовые языки

примечание: Я не уверен, что XUL заслуживает упоминания в этом списке, потому что это меньше рабочего языка GUI и больше языка make-webapps-run-on-the-desktop. Кроме того, для этого требуется браузер. Т. е. это ' DHTML для рабочего стола.'

CookSwing

XAML (Moonlight)

  • редактор: MonoDevelop выступает
  • платформы ОС: Linux и другие ОС на основе Unix/X11 только
  • GUI платформы:GTK+
  • языки: .NET

Примечание: XAML не является чистым форматом с открытым исходным кодом, поскольку Microsoft контролирует его условия использования, включая право изменять условия в любое время. Moonlight не может быть легально запущен на Windows или Mac. Кроме того, единственной платформой, которая освобождена от судебного иска, является Novell. посмотреть этот для полного описания того, что я имею в виду. XAML также не является стандартом ECMA, таким как C#, управляемый C++ и среда CLR.

обновление: Вопрос был изменен с "Есть ли альтернатива с открытым исходным кодом для WPF? потому что первоначальный вопрос был неправильным, и это отстой. Направление этого вопроса изменило направление, чтобы соответствовать новому входу. Мои извинения людям, которые ответили до того, как все изменилось.

3 ответов


Qt разрабатывает QML, который очень похож на XAML, за исключением JSON. Он доступен как предварительный просмотр, построенный против текущей версии, и доступен в моментальных снимках следующей версии.

вот небольшой фрагмент из http://doc.qt.nokia.com/4.7-snapshot/declarative-ui-components-progressbar.html

import Qt 4.7
import "content"

Rectangle {
   id: main

    width: 600; height: 405
    color: "#edecec"

    Flickable {
       anchors.fill: parent
       contentHeight: column.height + 20

       Column {
           id: column
           x: 10; y: 10
           spacing: 10

           Repeater {
               model: 25

               ProgressBar {
                 property int r: Math.floor(Math.random() * 5000 + 1000)
                 width: main.width - 20

                 NumberAnimation on value { duration: r; from: 0; to: 100; loops: Animation.Infinite }
                 ColorAnimation on color { duration: r; from: "lightsteelblue"; to: "thistle"; loops: Animation.Infinite }
                 ColorAnimation on secondColor { duration: r; from: "steelblue"; to: "#CD96CD"; loops: Animation.Infinite }
               }
           }
       }
   }
}

  • интернет забирает большую часть steam от настольных приложений, как есть.

    Я думаю, что большая причина в том, что все так сосредоточены на интернете прямо сейчас. HTML5 будет квантовым скачком вперед в том, что может сделать интернет. Благодаря быстрым интерпретаторам JavaScript и способным браузерам потребность в настольных программах со временем начнет ослабевать. Это лошадь, на которую Google делает ставку, и в гораздо меньшей степени Apple, как что ж.

  • создание чего-то хорошего будет иметь радикально разные реализации для каждой ОС, поэтому сам базовый инструментарий не будет очень портативным.

    Если вы думаете об этом, веб-единственная действительно общая основа, на которой мы можем развивать такого рода инфраструктуру кросс-платформенным образом. WPF невероятно отличается от архитектурной перспективы по сравнению с WinForms / прямым кодом WinAPI. Адаптация чего-то подобного к каждому ОС потребовалось бы много очень разных сантехники для каждой ОС, если бы у вас была молитва сделать что-то, что работает хорошо. (Не то чтобы веб-приложения были очень быстрыми, заметьте, но они становятся лучше).

  • внешний вид всегда будет несколько проблемой.

    чей внешний вид вы используете? Вы пытаетесь адаптировать пользовательский интерфейс к ОС chrome, чтобы он выглядел "родным", или вы делаете что-то вроде Swing много лет назад и развиваетесь приложения, которые выглядят отчетливо отличается от всего там? (Фу, это было крушение поезда...) И если вы решите адаптировать пользовательский интерфейс к внешнему виду каждой ОС, у вас могут возникнуть всевозможные проблемы с измерением и дизайном.


Novell имеет реализацию Silverlight с открытым исходным кодом, с большой поддержкой XAML, под названием Moonlight:

http://en.wikipedia.org/wiki/Moonlight_ (время выполнения)

http://www.mono-project.com/Moonlight