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

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

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

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

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

Существует только 45 графических платформ для Python

Какие графические интерфейсы с открытым исходным кодом представляют эти характеристики:

  • нормированный
  • независимая платформа
  • декларативный язык разметки
  • языковая независимость

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

Обновить:

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

GladeXML

  • Редактор: Glade Interface Designer
  • Платформы ОС: все
  • Платформа графического интерфейса: GTK +
  • Языки: C (libglade), C++, C# (Glade #), Python, Ada, Pike, Perl, PHP, Eiffel, Ruby

XRC (ресурс XML)

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

XUL

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

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

CookSwing

XAML (лунный свет)

  • Редактор: MonoDevelop
  • Платформы ОС: только для Linux и других ОС на базе Unix/X11
  • Платформы графического интерфейса: GTK +
  • Языки: .NET

Примечание. XAML не является чисто форматом с открытым исходным кодом, поскольку Microsoft контролирует свои условия использования, включая право изменять условия в любое время. Лунный свет по закону нельзя заставить работать на Windows или Mac. Кроме того, единственной платформой, которая освобождается от судебных исков, является Novell. Смотрите это для полного описания того, что я имею в виду. XAML также не является стандартом ECMA, как C#, Managed 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 }
               }
           }
       }
   }
}
  • Интернет отбирает большую часть потока от настольных приложений, как есть.

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

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

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

  • Внешний вид всегда будет чем-то вроде проблемы.

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

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

http://en.wikipedia.org/wiki/Moonlight_(runtime)

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

Другие вопросы по тегам