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

StackOverflow https://stackoverflow.com/questions/2962874

Вопрос

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

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

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

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

Только для Python существует 45 платформ с графическим интерфейсом.

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

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

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

Обновлять:

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

ПолянаXML

XRC (ресурс XML)

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

XUL

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

Примечание:Я не уверен, заслуживает ли XUL упоминания в этом списке, потому что это не столько язык графического пользовательского интерфейса настольного компьютера, сколько язык make-webapps, запускаемый на рабочем столе.Кроме того, для запуска требуется браузер.IE, это «DHTML для рабочего стола».

КукКачели

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

  • Редактор: МоноРазвитие
  • Платформы ОС:Только Linux и другие операционные системы на базе Unix/X11.
  • Платформы с графическим интерфейсом: ГТК+
  • Языки:.СЕТЬ

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

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

Это было полезно?

Решение

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.Адаптация чего-то подобного к каждой ОС потребовала бы большого количества совершенно разных систем для каждой ОС, если бы вы хотели создать что-то, что работало бы хорошо.(Не то чтобы веб-приложения были очень быстрыми, заметьте, но они становятся лучше).

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top