Как распространять AWTUtilities - PullRequest
4 голосов
/ 13 сентября 2009

Недавно я прочитал в блоге сообщения «Pushing Pixels», в которых описывается, как добиться естественной прозрачности и прозрачности с помощью чистой Java. Необходимые классы находятся в com.sun.awt, а именно com.sun.awt.AWTUtilities.

Мне было интересно, как я могу включить необходимые классы (не только этот) в мой дистрибутив, поскольку классы доступны только тогда, когда у вас установлен jdk и вы запускаете jvm через него. Таким образом, у пользователей моей программы не будет необходимых классов для запуска моей программы.

Есть идеи?

1 Ответ

3 голосов
/ 13 сентября 2009

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

Технически, com.sun.awt.AWTUtlities должен иметь возможно неизвестные зависимости от других классов и внутренних деталей реализации, специфичных для Java 6 u10 и выше ( версия, в которой он появился ). Эта неизвестная зависимость угол обязательно удерживает воду, поскольку рисование и графика также потребуют изменений в некоторых собственных реализациях.

Во-вторых, это обязательно изменится в Java 7, поскольку единственный выпуск Sun не выпустил java.awt.AWTUtilities с поддержкой прозрачности, потому что они не вносят изменения в общедоступные API, за исключением основных выпусков. .

IANAL, но я не думаю, что разумно заниматься перераспределением программного обеспечения, не пройдя мимо адвоката. Кроме того, клиентам не нравится идея, что какое-либо программное обеспечение не поддерживается в их системах.

Обновление

Все Sun JRE (не только JDK) начиная с 6u10 и выше поставляются с com.sun.awt.AWTUtilities, поэтому самый простой способ действий состоит в том, чтобы заставить ваших пользователей использовать Java 6u10 или более позднюю версию в своих системах и для вашего приложения. обработать любое возникающее исключение изящно.

...