Почему я не люблю 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](http://en.wikipedia.org/wiki/Image:InternetExplorer7.png).
Оригинальный интерфейсы обычно хвалят люди, для которых компьютер — это развлечение, а не инструмент. Для таких людей созданы стили Windows XP — первое, что отключаешь после установки XP. Для них же есть тысячи скинов для Winamp — один страшнее другого — тогда как интерфейс Winamp неудобен даже со стандартным скином.