Вопрос по java, java-7, awt, swing, retina-display – Поддержка дисплея Apple Retina в Java JDK 1.7 для AWT / Swing

24

Мне только что стало известно, что AWT / Swing под Java JDK 1.7 (начиная с JDK 7u15) не поддерживает дисплеи Retina на Apple Macbook Pro. Например, Netbeans практически невозможно переносить более чем на несколько минут, работая на дисплее Retina и используя JDK 1.7.

Это было несколько решено в вопросе StackExchangeВоти цитируя один конкретный пост:

Яблоко'Java 6 JRE будет поддерживать HiDPI, однако в настоящее время он не поддерживается Oracle.с Java 7 JRE. Это также неРаботает под последними разработками Java 8. Приложения Swing и JavaFX размыты на Retinia MacBook. Вот почему IntelliJ по-прежнему работает под Java 6.

Мой вопрос более конкретен, чем тот, который задает ОП вышеупомянутой темы.

Мой работодатель менее месяца использует Swing во всех своих приложениях. По нескольким причинам мы заинтересованы в переходе на Java 7 с Java 6. В течение последних нескольких дней другой разработчик (работающий в Windows) переместил нашу платформу на Java 7. Как я сказалЗапустив Retina Macbook Pro, я заметил эту проблему, когда вытащил последнюю стабильную ветку нашего кода.

Я новичок в Java с опытом работы в сообществе менее года, поэтому мой вопрос: будет ли сообщество Java достаточно чутко реагировать на эту проблему в будущем или следует ожидать существенной задержки (от месяцев до года или более) до Swing? в Java 7 совместим с дисплеями Apple Retina?

Ваш Ответ

4   ответа
6

начиная с 1.7.0_40ea. Однако для Retina отсутствуют API-интерфейсы. Например, нет поддержки HiDPIScaledImages, как в Apple JDK. Вы можете найти несколько интересных советов по поддержке Retina в Oracle JDK здесьhttp://bulenkov.com/2013/06/23/retina-support-in-oracle-jdk-1-7/

Отличный ресурс, большое спасибо, что нашли время, чтобы написать это. Ingo Kegel
2

http://lists.apple.com/archives/java-dev/2012/Oct/msg00127.html) единственный способ получить Retina в Swing - это установить Apple JDK, который, в свою очередь, просто использует "взломать» сделать приложения совместимыми с сетчаткой. Этот поток упоминает JavaFX как обходной путь (который, конечно, не является реальным обходным путем, когда у вас уже есть сложное программное обеспечение, написанное на Swing).

Я сам пытался написать простое приложение JavaFX с Java 7 после прочтения вышеупомянутого потока, и на Retina это выглядело острее; то же самое с Ensamble (демонстрационное приложение JavaFX, доступное в App Store), которое также казалось намного лучше, чем обычное приложение Swing (например, панель управления Java), но, возможно, оно 'просто сила внушения.

Поскольку я активно тестирую каждую новую версию Java 8 Snapshot, я также могу подтвердить, что для того, чтобы Swing выглядел сносно на экранах сетчатки, было сделано очень мало или ничего не сделано.

Наша лучшая ставка прямо сейчас (просто мнение, неу меня нет никаких секретных знаний), что кто-то из Oracle (или участник OpenJDK) купит Mac Retina и исправит его в Java 8. Я неЯ думаю, что Apple исправит это, предоставив исправления Java 6, так как парень из Apple сказал, что они просто отменили код, связанный с рендерингом в Quartz. Это дало желаемый результат, но сильно привязано к проприетарным внутренним компонентам OS X, которые не являются открытыми.

Спасибо за ссылку. Прочитав эту ветку и все содержащиеся в ней ссылки, я не разочарован :( Похоже, что для встроенных клиентских приложений разработчики Java, которые (1) в настоящее время используют Swing и JRE 6, (2) хотят перейти за пределы JRE 6 и (3) заботиться о представлении своего приложения на дисплеях hiDPI, у меня нет иного выбора, кроме как сделать жесткий разрыв с Swing. Я взглянул на Ensemble (itunes.apple.com/us/app/ensemble/id557744983?mt=12), которое является демонстрационным приложением JavaFX, и я согласен, что JavaFX выглядитлучше, Это'Все еще ретина не хрустящая. kalefranz
7

и через некоторое время я обнаружил в сети, что никто не может точно ответить на вопрос.

Существует открытая ошибка для этого в Oracle:http://bugs.sun.com/view_bug.do?bug_id=8000629

В соответствии с этим это должно быть исправлено для Java 1.8. Но я боюсь, что я не уверен, будет ли это исправлено для Swing или только для JavaFX. Я где-то читал, что уже есть исправление для JavaFX (но не уверен, если официально), который нерешить проблему для свинга.

Если коротко, то после нескольких дней поиска в интернете, к сожалению, я не смогне могу найти ответ ...

С уважением, Любос

точной информации нет, просто догадываюсь: подкомпонент, для которого выдается ошибка, это java.awt - если так будет, то это 'Скорее всего, будет исправлено против старой графики. kleopatra
Большое спасибо за информацию. Lubos
Кто-то из Oracle только что прокомментировал сегодня, что он будет перенесен на Java 7:mail.openjdk.java.net/pipermail/macosx-port-dev/2013-April/... Sean Reilly
правда, но я имел в виду, что никто не может сказать наверняка, что ошибка будет действительно исправлена. Я не могВ интернете не найти никакой информации, по крайней мере, о том, что работа уже началась - и Java 8 должна быть выпущена в сентябре. Lubos
19

как показаноэтот список изменений, Таким образом, поддержка сетчатки теперь доступна на:

Java 6Java 7u40ea или вышеJava 8
На самом деле, похоже, это работает и для JavaFX. Теперь все красиво и четко. Фантастика! mo-seph
Спасибо, что разобрался с Swing (используя Java7u40ea). Безразлично»Тем не менее, похоже, что это помогает с JavaFX - я получаю красивые острые окна Swing и нечеткие окна JavaFX. mo-seph

Похожие вопросы