Почему я не люблю Java и нестандартные интерфейсы

В этой заметке я не скажу ничего нового, просто запишу свои мысли на эту тему.

Дальше много текста. С картинками.

В этой заметке я буду иметь ввиду только GUI-приложения.

Основное назначение Java — исполнение одного и того же кода на разных платформах. В теории это хорошо и полезно, но на практике это работает плохо.

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

И тут начинаются проблемы.

Интерфейс программ на Java не является интерфейсом Windows. Это главная проблема. В Java можно нарисовать похожий интерфейс. Который будет похож на Windows, но не будет Windows.

Рассмотрим несколько примеров. Первых пришедших в голову. На самом деле их намного больше.

Диалоги открытия файлов.

В Windows они выглядят так:

Диалог открытия файла в Windows

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

Диалог открытия файла в IntelliJ <abbr>IDEA</abbr>

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

Диалог открытия файла в Zend Studio

Ещё один пример: сглаживание шрифтов. Начиная с XP в Windows кроме обычного сглаживания есть ClearType. Для большинства ЖК-мониторов он намного приятнее для глаз.

Достаточно один раз включить сглаживание в настройках и все шрифты (для ClearType) выводимые с помощью Windows API будут со сглаживанием. А что у нас в Java?

В IDEA сглаживание можно включить в настройках. Вопрос: зачем, ели оно уже включено для всех программ? Ответ: затем, что к сглаживанию Windows оно не имеет никакого отношения. Это далеко не ClearType, а обычно сглаживание градациями серого.

В Zend Studio сглаживание можно включить изменив один из конфигурационных файлов. И там будет тоже не ClearType.

Вот так выглядит Zend Studio без сглаживания и SciTE (который тоже кросплатформенный, кстати).

Zend Studio и SciTE

Текст без сглаживания:

Текст без сглаживания

Текст со сглаживанием в Zend Studio:

Сглаживание Zend

А вот так настоящий ClearType:

Сглаживание ClearType

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

Zend Studio

Ещё одна проблема с IDEA и Zend Studio. Для того, чтобы шрифт интерфейса был такой же, как во всех программах, его нужно выбрать вручную. На то, что я уже один раз выбрал для себя шрифты, им наплевать.

И ещё одна проблема. Программы на Java похожи на ту версию (или версии) Windows, какие были в момент их разработки, а не на ту версию, какая установлена у пользователя.

Теперь расскажу о нестандартных интерфейсах.

Никогда не понимал, зачем нужно отказываться от стандартного интерфейса и делать свой. Или вообще встраивать поддержку скинов, чтобы каждый желающий мог изменять внешний вид программы.

Так вот. Для программ, которые делают что-то полезное, это не нужно. И даже вредно.

Причина этого проста. На разработку интерфейса было потрачено огромное количество времени. И очень сомнительно, что разработчики Shareware-программы сделают более удобный интерфейс.

Например, в TagScanner (менеджере MP3-файлов — хорошим всем, кроме интерфейса) нельзя развернуть окно на весь экран два раза кликнув по заголовку. И это каждый раз бесит, потому что это один из самых используемых мной способов разворачивать окна. Так же у строки заголовка отсутствует контекстное меню. А ещё там нет ни одной всплывающей подсказки.

TagScanner

Как обычно, есть и исключения. Например, Adobe Lightroom, где нестандартный интерфейс не делает его хуже. А, возможно, даже лучше. Конечно, Adobe никак не назовёшь мелким разработчиком Shareware. У них есть деньги на раработку интерфейса, а не только на рисование красивой картинки.

Lightroom

Всё это напоминает MS DOS, где каждая программа имела свой графический интерфейс. И пользователь был вынужден каждый раз изучать новый интерфейс, вместо того, чтобы просто использоваться программу.

Главное отличие Windows от DOS — одинаковый для всех программ интерфейс. И это очень хорошее свойство. Нужно только им пользоваться.

Нет ничего плохого в стандартизации интерфейсов. Это хорошо, удобно и сокращает время обучения.

Почему почти все сайты на Flash такие не удобные? Потому что Flash даёт возможность делать все сайты не похожими друг на друга.

Так же нет ничего плохого в копировании (обдуманном и по возможности с улучшением) хороших интерфейсных решений. Делать интерфейс хуже только для того, чтобы он был не такой, как у конкурентов, не очень умно. Если не получается сделать что-то своё лучше, чему у других, то нужно брать лучшее из того, что есть.

Firefox похож на Safari, Opera 8 похожа на Safari, Internet Explorer 7 похож на Safari, Windows Vista похожа на MacOS X и это очень хорошо, потому что это удобно.

Firefox

Opera

Internet Explorer 7

Изображение с [WikiPedia](http://en.wikipedia.org/wiki/Image:InternetExplorer7.png).

Safari

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