Почему я не люблю Java и нестандартные интерфейсы
В этой заметке я не скажу ничего нового, просто запишу свои мысли на эту тему.
Дальше много текста. С картинками.
В этой заметке я буду иметь ввиду только GUI-приложения.
Основное назначение Java - исполнение одного и того же кода на разных платформах. В теории это хорошо и полезно, но на практике это работает плохо.
У каждой операционной системы есть свой графический интерфейс. И свой API для его использования. В случае с Java это не подходит. Код должен быть один, а значит вызовов API конкретных ОС быть не может. Поэтому в Java есть свой API для создания GUI.
И тут начинаются проблемы.
Интерфейс программ на Java не является интерфейсом Windows. Это главная проблема. В Java можно нарисовать похожий интерфейс. Который будет похож на Windows, но не будет Windows.
Рассмотрим несколько примеров. Первых пришедших в голову. На самом деле их намного больше.
Диалоги открытия файлов.
В Windows они выглядят так:

В IntelliJ IDEA так. Похоже, но уже не то. Обратите внимание, как сделано переименование файла. Контекстное меню тут уже своё, а не из проводника Windows, как должно быть.

А в Zend Studio вот так. Совсем не похоже. Контекстное меню и вовсе отсутствует.

Ещё один пример: сглаживание шрифтов. Начиная с XP в Windows кроме обычного сглаживания есть ClearType. Для большинства ЖК-мониторов он намного приятнее для глаз.
Достаточно один раз включить сглаживание в настройках и все шрифты (для ClearType) выводимые с помощью Windows API будут со сглаживанием. А что у нас в Java?
В IDEA сглаживание можно включить в настройках. Вопрос: зачем, ели оно уже включено для всех программ? Ответ: затем, что к сглаживанию Windows оно не имеет никакого отношения. Это далеко не ClearType, а обычно сглаживание градациями серого.
В Zend Studio сглаживание можно включить изменив один из конфигурационных файлов. И там будет тоже не ClearType.
Вот так выглядит Zend Studio без сглаживания и SciTE (который тоже кросплатформенный, кстати).

Текст без сглаживания:
![]()

Текст со сглаживанием в Zend Studio:
![]()

А вот так настоящий ClearType:
![]()

Ещё одно различие. IDEA не сглаживает шрифты в интерфейсе (как Windows, если выбрать обычное сглаживание), а Zend Studio сглаживает, из-за чего они выглядят ужасно.

Ещё одна проблема с IDEA и Zend Studio. Для того, чтобы шрифт интерфейса был такой же, как во всех программах, его нужно выбрать вручную. На то, что я уже один раз выбрал для себя шрифты, им наплевать.
И ещё одна проблема. Программы на Java похожи на ту версию (или версии) Windows, какие были в момент их разработки, а не на ту версию, какая установлена у пользователя.
Теперь расскажу о нестандартных интерфейсах.
Никогда не понимал, зачем нужно отказываться от стандартного интерфейса и делать свой. Или вообще встраивать поддержку скинов, чтобы каждый желающий мог изменять внешний вид программы.
Так вот. Для программ, которые делают что-то полезное, это не нужно. И даже вредно.
Причина этого проста. На разработку интерфейса было потрачено огромное количество времени. И очень сомнительно, что разработчики Shareware-программы сделают более удобный интерфейс.
Например, в TagScanner (менеджере MP3-файлов - хорошим всем, кроме интерфейса) нельзя развернуть окно на весь экран два раза кликнув по заголовку. И это каждый раз бесит, потому что это один из самых используемых мной способов разворачивать окна. Так же у строки заголовка отсутствует контекстное меню. А ещё там нет ни одной всплывающей подсказки.
Как обычно, есть и исключения. Например, Adobe Lightroom, где нестандартный интерфейс не делает его хуже. А, возможно, даже лучше. Конечно, Adobe никак не назовёшь мелким разработчиком Shareware. У них есть деньги на раработку интерфейса, а не только на рисование красивой картинки.
Всё это напоминает MS DOS, где каждая программа имела свой графический интерфейс. И пользователь был вынужден каждый раз изучать новый интерфейс, вместо того, чтобы просто использоваться программу.
Главное отличие Windows от DOS — одинаковый для всех программ интерфейс. И это очень хорошее свойство. Нужно только им пользоваться.
Нет ничего плохого в стандартизации интерфейсов. Это хорошо, удобно и сокращает время обучения.
Почему почти все сайты на Flash такие не удобные? Потому что Flash даёт возможность делать все сайты не похожими друг на друга.
Так же нет ничего плохого в копировании (обдуманном и по возможности с улучшением) хороших интерфейсных решений. Делать интерфейс хуже только для того, чтобы он был не такой, как у конкурентов, не очень умно. Если не получается сделать что-то своё лучше, чему у других, то нужно брать лучшее из того, что есть.
Firefox похож на Safari, Opera 8 похожа на Safari, Internet Explorer 7 похож на Safari, Windows Vista похожа на MacOS X и это очень хорошо, потому что это удобно.

Изображение с WikiPedia.
Оригинальный интерфейсы обычно хвалят люди, для которых компьютер — это развлечение, а не инструмент. Для таких людей созданы стили Windows XP — первое, что отключаешь после установки XP. Для них же есть тысячи скинов для Winamp — один страшнее другого — тогда как интерфейс Winamp неудобен даже со стандартным скином.
рав
22 ноября 2006 г., 18:21


