Чистое легкое приложение в Java - PullRequest
1 голос
/ 22 января 2009

Можно ли написать "чистый" легкий код в Java? Swing легкий, но даже в нем есть такие тяжелые компоненты, как JWindow, JFrame, JDialog и JApplet. Таким образом, даже приложения Swing не на 100 процентов независимы от базовой ОС

Возможно ли иметь в Java легковесные приложения, которые полностью независимы от базовой ОС для отображения графики? Можно ли написать такой код в Java?

Ответы [ 4 ]

8 голосов
/ 22 января 2009

Э-э ... Да, они "на 100% независимы" от ОС.

По крайней мере, до такой степени, что все JVM должны их поддерживать.

Полагаю, я не понимаю, что вы подразумеваете под 100% независимостью. По своей сути Swing нужен чуть больше, чем доступ к главному оконному менеджеру и блиттер, хотя он, очевидно, может (и делает) использовать гораздо больше.

Проще говоря, часть переноса JVM включает перенос основных графических возможностей, требуемых Swing. Некоторые порты используют ОС лучше, чем другие, но на высоком уровне Swing вы, как правило, не беспокоитесь об этом.

1 голос
/ 22 января 2009

Нет, если вы хотите рисовать на экране, вам нужно заставить ОС сделать это за вас.

Если вы беспокоитесь о производительности или раздутии Swing, посмотрите SWT. Он имеет меньший вес и более точно соответствует нативному внешнему виду (поскольку он более или менее является оберткой вокруг элементов графического интерфейса ОС).

0 голосов
/ 22 января 2009

Вам нужно какое-то взаимодействие с дисплеем. Очевидно, что вы можете создавать растровые изображения в памяти без графического оборудования. Существует несколько протоколов отображения сети, в частности X Windows (X11) и протокол, используемый VNC. Вы также можете иметь сервер, отображающий интерфейс через апплеты и WebStart / JNLP. Я понимаю, что Opera Mini использует мидлет для отображения растровых изображений и возврата ввода в веб-браузер (предположительно на основе настольной Opera), работающий на удаленном сервере. У IBM давно был удаленный AWT (до Swing, IIRC).

0 голосов
/ 22 января 2009

В конце концов, только ОС знает, какое графическое оборудование существует и как заставить его рисовать пользовательский интерфейс, и не количество уровней абстракции может изменить это - и не должно это: в этом и заключается смысл наличия ОС в первое место.

Полагаю, теоретически у вас может быть какое-то устройство с кадровым буфером, и Swing обращается к нему напрямую, но A), как вы заметили, Swing основан на AWT, а AWT не работает таким образом, и B) все равно быть ОС, которая реализует устройство кадрового буфера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...