SWT библиотека представляет собой кросс-платформенную оболочку для графических библиотек конкретных операционных систем. SWT разработана с использованием стандартного языка Java и получает доступ к специфичным библиотекам различных ОС через JNI (Java Native Interface), который используется для доступа к родным визуальным компонентам операционной системы.
Библиотека SWT является библиотекой с открытым исходным кодом и предназначена для разработки графических интерфейсов приложений на языке Java. Лицензируется SWT под Eclipse Public License, предназначенной для открытого ПО.
SWT позволяет получать привычный внешний нтерфейс программы в соответствующей операционной системе и является альтернативой библиотекам AWT и Swing. Java-приложение с использованием SWT более эффективна по сравнению с AWT и Swing. Но при этом появляется зависимость от операционной системы и оборудования.
IDE Eclipse
Корпорация IBM, имея опыт разработки VisualAge/SmallTalk, инициировала проект по разработке универсальной платформы для создания java приложений IDE Eclipse. В процессе разработки IDE (Integrated Development Enviroment) Eclipse была разработана новая графическая библиотека, получившая название Standard Widget Toolkit (SWT).
Нужно ли учить Swing/SWT? А Java FX?
Библиотеку SWT можно использовать не только для разработки приложений в IDE Eclipse, но также в других средах. Для этого достаточно включить SWT в состав java приложения.
Библиотека SWT поддерживает большинство популярных операционных систем. Также существует возможность компиляции SWT java приложений в нативный бинарный код, что повышает производительность созданных приложений и не требует установки java машины — Java Runtime Enviroment (JRE). Такие приложения ничем не отличаются от нативных приложений конкретной операционной системы, а использование современных IDE позволяет быстро создавать качественные кросс платформенные продукты для различных операционных систем.
Дистрибутив библиотеки SWT для различных ОС можно скачать на сайте http://www.eclipse.org/swt/.
Создание проекта с использованием SWT в IDE Eclipse
Библиотека SWT входит в состав IDE Eclipse и располагается в поддиректории plugins. К проекту можно подключить как «родную» библиотеку Eclipse, так и «внешнюю» с учетом программно-аппаратной части ОС, в которых приложение будет работать. Подключить библиотеку SWT к проекту в IDE Eclipse можно несколькими способами.
Подключение SWT из директории plugins среды Eclipse
Для подключения SWT из директории plugins среды Eclipse необходимо открыть форму настроек проекта. Для этого следует выделить проект, вызвать всплывающее меню правой клавишей мыши и выбрать пункт «Properties», либо нажать горячие клавиши «Alt-Enter». В открывшейся форме следует выбрать вкладку «Libraries», нажать кнопку «Add External Jars. » и выбрать библиотеку SWT из директории plugins среды Eclipse.
Подключение к проекту дистрибутива SWT
Дистрибутив поставляется в виде архива zip. Его необходимо «развернуть» и импортировать в IDE Eclipse как «Existing Projects into Workspace».
В результате в дереве проектов вкладки «Package Explorer» IDE Eclipse проект библиотеки SWT будет иметь структуру как на следующем скриншоте.
После этого библиотеку SWT можно подключать к проектам. Для это следует в форме настроек проекта на вкладке «Projects» нажать кнопку «Add» и в отдельном окне добавить к проекту библиотеку SWT в виде дополнительного проекта (org.eclipse.swt).
Проект в IDE Eclipse с использованием SWT
Структура проекта с использованием библиотеки SWT в IDE Eclipse представлена на следующем скриншоте.
Объект Display, используемый в java-приложениях с SWT, в интерфейсе не виден, но нужен для того, чтобы отображать графические визуальные компоненты, расположенные на нем.
Объект Shell — это окно в приложении. Для отображения графического интерфейса приложения необходимо открыть Shell и создать цикл отслеживающий уничтожение окна. В приложении может быть создано несколько экземпляров Shell.
Почти все графические интерфейсы java-приложения с SWT создаются из нескольких основных частей. Все SWT widgets могут быть найдены в пакетах org.eclipse.swt.widgets или org.eclipse.swt.custom (некоторые плагины Eclipse также предоставляют кастомизируемые widgets в других пакетах).
Практически все элементы управления в SWT имеют в конструкторе родительский объект. При инициализации элементы управления автоматически добавляются к предку, в то время как в AWT/Swing они должны быть явно указаны, реализуя нисходящий способ реализации графических интерфейсов. Таким образом, все элементы управления в SWT получают композитный родительский класс (или внутренний класс), как аргумент конструктора.
Большинство SWT элементов имеют опции флага, которые часто называют «Стилем». Все значения стиля имеют тип static final int и описываются в классе SWT в пакете org.eclipse.swt. Если флаг/стиль не требуется, необходимо использовать значение SWT.NONE.
SWT, JFace, widget
Библиотека SWT использует основные widgets (виджеты) операционной системы. Во многих IDE такой подход к разработке является слишком низкоуровненным. Дополнительно совместно с SWT используется библиотека JFace, предоставляя java приложениям с библиотекой SWT многочисленные сервисы.
Виджет widget
С точки зрения программного приложения widget («виджет») — это элемент графического интерфейса, имеющий стандартный внешний вид и выполняющий стандартные действия. Под виджет’ом подразумеваются окно (диалоговое, модальное), кнопка (стандартная, радиокнопка, флаговая), список (иерархический, раскрывающийся) и т.д.
«Виджет» также используется для представления класса вспомогательных мини-программ в виде графических модулей, которые размещаются в рабочем пространстве родительской программы и служат для украшения пользовательского интерфейса, развлечения, решения отдельных рабочих задач или быстрого получения информации из интернета без помощи веб-браузера.
Библиотека JFace
Библиотека JFace расширяет возможности SWT. Одна из основных важных особенностей JFace является способность изолировать модель данных приложения от графического интерфейса, который воспроизводит и модифицирует их.
JFace — это набор java-классов, реализующих наиболее общие задачи построения GUI. С точки зрения разработки java-приложения JFace представляет собой дополнительный программный слой над SWT, который реализует шаблон Model-View-Controller. JFace реализует следующие возможности:
- представление «Viewer» классов, отвечающих за отображение и реализующих задачи по заполнению, сортировке, фильтрации;
- представление «Action» классов, позволяющих определять «поведение» отдельных widget’ов, таких как пункты меню, кнопки, списки и т.п.;
- представление регистров, содержащих шрифты и изображения;
- представление набора стандартных диалоговых окон и виджетов для взаимодействия с пользователем.
Основная цель использования JFace связана с освобождением разработчика от рутинных операций по созданию пользовательского интерфейса, позволяя ему сосредоточиться на бизнес-логике приложения.
Основной задачей группы разработчиков Eclipse было сокрытие реализации компонентов графического интерфейса построенных на основе библиотеки SWT и по возможности максимальное использование библиотеки JFace как более высокоуровневой и простой в использовании.
Библиотека SWT не зависит от JFace, но JFace использует SWT. Тем не менее, IDE Eclipse построена с использованием обеих библиотек, но в некоторых случаях SWT используется напрямую в обход JFace.
Используемая в SWT терминология
- Widget – основной компонент графического интерфейса SWT (сродни компоненту в пакете Java AWT и JComponent в Swing). Widget является абстрактным классом.
- Composite (композит) – это элемент управления, который может заключать в себе другие элементы. Аналог контейнеру в пакете Java AWT и JPanel пакета Swing.
- Object (объект) – это родительский класс других элементов (которые могут и не быть композитами), например, таких как, список или таблица. Объект является абстрактным классом.
Источник: java-online.ru
Мои первые шаги в SWT: Простенький блокнот со вкладками
На Хабрахабре очень мало статей о SWT, поэтому я постараюсь исправить данное маленькое упущение.
- Какова мотивация использовать SWT в отличии от основного конкурента — Swing
- Основные трудности с которыми я столкнулся при разработке простенького блокнота на связке Java + SWT и Немного кода
- Каким образом упаковать и распространить свое приложение для нескольких платформ
Преамбула
Как известно, Java славится своей кросс-платформенностью (write-once — run anywhere), и к GUI приложениям это тоже относится. Хотя, пожалуй, Java и не самая распространненная платформа для написания GUI приложений. И на то есть ряд причин.
Пожалуй основная причина тому — убеждение, что код написанный под какую-то конкретную платформу будет работать быстрее, нежели код, который написан для чего-то абстрактного в вакууме. Что ж, на мой взгляд пожалуй это правда.
Некоторые со мной не согласятся и скажут, что это как раз стиль Java — написанное единожды должно исполняться и выглядеть одинаково на всех платформах. И Swing тому хорошее подтверждение. Конечно же Swing приложение можно кастомизировать с помощью различных тем(Look And Feel) но все равно оно будет чувствоваться и выглядеть не совсем так, как родное.
Хотя ребятам из JetBrains и удалось доказать (по крайней мере мне лично), что Swing приложения могут быть очень-даже дружелюбными, но факт остается фактом — оно начинает со временем тормозить не потому что написано плохо, а именно в силу того, что в качестве GUI фреймворка используется Swing, который с операционными системами дружит несколько хуже чем их нативные компоненты.
SWT как раз подошел с другой стороны к этой проблеме. По большому счету SWT — это тонкая прослойка между Java программистом и нативными API какой-то конкретной операционной ситемы, что несколько наршует идеологию Java. Но, как говорится, правила как раз и существуют для того, что бы их нарушать. Особенно, если это идет на благо. И это на мой взгляд является основной мотивацией, почему стоит обратить внимание на SWT.
Первые шаги
Думаю что бы читателю было понятнее, мне стоит рассказать, чего я хотел добиться от своего блокнота.
Задуммка была весьма проста:
Я хотел сделать подобие классического блокнота, того что мы наблюдаем под Windows. Только со вкладками.
Забегая вперед скажу, что я это не полностью реализовал свою идею — отстутствуют возможности посылать документ принтеру на печать, возможность менять шрифт, поиск по документу. Но, то что получилось, позволило почувствовать «вкус SWT», который окалазся довольно-таки приятным.
Ну что же. Пока что было только много слов, но никаких действий. Пора привести немножко кода.
Точка входа в приложение, это(Bootstrap.java):
final Display display = new Display(); final Shell shell = new Shell(display); final DocumentAndTabManager documentAndTabManager = new DocumentAndTabManager(shell); final TextEditor textEditor = new TextEditor(shell, documentAndTabManager); textEditor.init(); textEditor.run();
- Создали дисплей(Display), сказали что бы оболочка(Shell) использовала наш дисплей. (На мой взгляд SWT имеет достаточно стройную идеологию — приложению не следует иметь более чем один объект-дисплей.)
- Оболочка(Shell) — то, где будет проходить основное действие. Если провести аналогию со Swing — то можно сказать, что это в какой-то мере аналог JPanel.
- Сделали инъекцию из оболочки нашему мэнеджеру документов и редактору текста, что бы они не забывались, зачем они нужны и кто у них хозяин.
Проинициализировали оболочку (TextEditor.java):
shell.setLayout(new FillLayout()); //И поставили поставили меню оболочке(окошку): shell.setMenuBar(createAndSetUpMenu());
В кратце процесс создания меню:
//Говорим что у нас есть такое-то меню, чей родитель — оболочка: final Menu menu = new Menu(shell, SWT.BAR); // Создаем пункт в меню. final MenuItem helpItem = new MenuItem(menu, SWT.CASCADE); //Ставим текст: знак » говорит нам о том, что пункт меню будет доступен по комбинации клавиш Alt+H. helpItem.setText(«); //Далее делаем под-меню для нашего меню Item’a: final Menu helpMenu = new Menu(menu); helpItem.setMenu(helpMenu); final MenuItem about = new MenuItem(helpMenu, SWT.NONE); about.setText(«About»); about.addSelectionListener(new HelpMenuAboutSelectionListener(shell));//Вешаем слшуатель события на нажатие этого пункта меню.
И запускаем наше приложение:
shell.open();//Отображаем окно while (!shell.isDisposed()) < final Display display = shell.getDisplay(); if (!display.readAndDispatch()) < display.sleep(); >> shell.dispose();
Далее, во время выполнения нашего блокнота, сработает какой-то из слушателей (в ответ на какое-то наше действие), из которого мы сделаем то, что нам нужно, допустим запустим какое-то задание в синхронном или в асинхронном режиме:
shell.getDisplay().asyncExec(new ReloadJob(documentAndTabManager, currentTab));
Упаковка
Очередная порция псевдо-трудностей с которой я столкнулся:
Для каждой операционной системы и архитектуры нужно сделать свой билд. Для этого нужны jar’ы для каждой конкретной платформы. Я привык пользоваться Maven’ом, но для этих целей он не очень хорошо подходит, ибо свежих версий SWT я увы не нашел в Maven-репозиториях, да и пришлось скачивать мануально пакеты для каждой из платформ операционных систем/архитектур. Кроме того там где нужно много кастомизации Maven не особо подходит, зато на помощь приходит старый-добрый Ant. В качестве менеджера зависимостей я взял Ivy.
Кусок ant-скрипта(build.xml), отвечающий за упаковку под конкретную операционную систему/архитектуру:
/lib/swt» includes=»swt-$-$.jar»/>
Размер Jar’ов получился 2 — 2.5 МБ (в зависимости от ОС и архитектуры), что вообщем-то не так уж и много.
Вместо заключения
Пропустив через себя небольшой цикл разработки я могу заметить
Минусы SWT на мой взгляд:
* Мало документации/туториалов
* Гугл не так много знает о SWT, как о Swing
* Многие проблемы приходится решать дольше.
Плюсы SWT на мой взгляд:
* В общем и целом простой и понятный API
* Кросс-платформенное, нативно выглядящее приложение
* Из коробки быстрее работающее, чем такое же на Swing
Что я вынес для себя из этого маленького эксперимента?
SWT со всеми своими прелестями и недостатками произвел на меня приятное впечатление. Когда я в следующий раз решусь написать десктопное приложение — я без сомнения выберу связку Java + SWT.
P.S. Несколько скриншотов напоследок.
Нативная прокрутка для Ubuntu (Unity)
Нативное меню для Ubuntu (Unity)
И из-под Windows:
Под Mac OS к сожалению скриншотов нет за неимением Mac OS X.
Любезно предоставленный скриншот пользователем seneast:
Исходные коды доступны здесь: code.google.com/p/swt-text-editor/source/browse
Скачать мою вариацией блокнота для своей ОС можно здесь: code.google.com/p/swt-text-editor/downloads/list
Из-под Windows запускается двойным кликом, из-под Mac OS X java -XstartOnFirstThread -jar simple_edit*., Linux командой java -jar simple_edit*. Запускается под Java 1.6 и выше.
Короткие инструкции, как начать баловаться с кодом из-под IDE(на английском) code.google.com/p/swt-text-editor/wiki/SourceCodeImport
Буду рад любым комментариям, нареканиям и советам.
Источник: habr.com
Swt папка можно ли удалить
В нашей базе содержится 3 разных файлов с именем swt-win32-3738.dll . You can also check most distributed file variants with name swt-win32-3738.dll. Чаще всего эти файлы принадлежат продукту Standard Widget Toolkit. Наиболее частый разработчик — компания Eclipse Foundation. Самое частое описание этих файлов — SWT for Windows native library. Этот файл — динамически подключаемая библиотека.
Такая библиотека может загружаться и выполняться любым работающим процессом.
Автор Dbrf ytrhujyh задал вопрос в разделе Прочее компьютерное
Что за папка .swt Что это за папка и можно ли её удалять? и получил лучший ответ
Ответ от Firs Hago[гуру]
НЕТ
Standard Widget Toolkit, или SWT (произносится «свит») — библиотека с открытым исходным кодом для разработки графических интерфейсов пользователя на языке Java.
Разработана фондом Eclipse, лицензируется под Eclipse Public License, одной из лицензий открытого ПО.
SWT не является самостоятельной графической библиотекой, а представляет собой кросс-платформенную оболочку для графических библиотек конкретных платформ, например, под Linux SWT использует библиотеку Gtk+. SWT написана на стандартной Java и получает доступ к OS-специфичным библиотекам через Java Native Interface, который рассматривается в качестве сильного средства, несмотря на то, что это не является чистой Java.
SWT — альтернатива AWT и Swing (Sun Microsystems) для разработчиков, желающих получить привычный внешний вид программы в данной операционной системе. Использование SWT делает Java-приложение более эффективным, но снижает независимость от операционной системы и оборудования, требует ручного освобождения ресурсов и в некоторой степени нарушает Sun-концепцию платформы Java.
Что можно удалять с диска С, а что нельзя?
Свободное пространство диска С в процессе эксплуатации Windows постоянно сокращается. В независимости от действий пользователя — хочет он того или нет. Временные файлы, архивы, куки и кеш браузеров и прочие программные элементы, выполнив свою единоразовую миссию (обновление, установка, распаковка), оседают в папках раздела С. Плюс к этому — полезные мегабайты и гигабайты поглощают некоторые функциональные модули Windows.
Первое средство от такого «захламления» — комплексная очистка диска С. Выполнять её нужно регулярно и своевременно. В противном случае, раздел переполнится, и вы не сможете полноценно пользоваться ОС и, соответственно, ПК. Windows будет постоянно прерывать вашу работу предупреждающими сообщениями — «недостаточно памяти». Станет невозможен просмотр видео онлайн, так как браузер не сможет сохранять на компьютере закачиваемый с сервера контент. Могут произойти и другие неприятности.
Приступая к очистке диска С: что нужно знать и делать
Удаление с диска С всяких ненужных элементов — процедура весьма деликатная. Требует от пользователя повышенной осторожности, внимания. «Уборка» не должна навредить ОС.
Противопоказано удаление файлов в папках:
- Windows (сердце ОС — здесь хранятся все её составляющие);
- Boot (загрузочные файлы системы);
- ProgramData (целиком нельзя! могут не запускаться установленные приложения);
- ProgramFiles (проинсталлированное ПО);
- Users (пользовательские данные).
Некоторые папки, в которых необходимо «наводить чистоту», по умолчанию скрыты, то есть не отображаются в директориях. Чтобы добраться до них, выполните следующее:
1. Нажмите одновременно комбинацию клавиш — «Win + E».
2. В окне «Компьютер» нажмите клавишу «Alt».
3. Вверху окна появится горизонтальное меню. Наведите курсор на раздел «Сервис». В подменю кликните «Параметры папок… ».
4. В настройках параметров перейдите на вкладку «Вид».
5. Прокрутите до конца список опций в разделе «Дополнительные параметры:».
6. Уберите галочку напротив «Скрывать защищённые системные… ». Включите кликом мыши радиокнопку «Показывать скрытые файлы… ».
С чего начать уборку диска С?
Первым делом, необходимо освободить корзину:
- наведите курсор на её иконку;
- нажмите правую кнопку мышки;
- в меню выберите «Очистить корзину».
Большие, маленькие файлы, в независимости от того, в каком разделе хранятся (диск D, E или С), после удаления отправляются в C:RECYCLER, файл «Корзина». Вследствие чего, свободное место системного раздела уменьшается. Удаление большого видеофайла или образа (например, файла iso) при дефиците лишних гигабайт, может запросто привести к переполнению диска С.
Совет! Перед тем, как очистить корзину, просмотрите рабочий стол на предмет ненужных ярлыков. Их размеры не велики, но чем меньше будет бесполезных файлов, тем лучше.
Очистка диска штатной утилитой Windows
1. Кликните иконку «Пуск».
2. В правой колонке нажмите «Компьютер».
3. Кликните правой кнопкой по иконке диска С. В меню выберите «Свойства».
4. В панели свойств, на вкладке «Общие», нажмите кнопку «Очистка диска».
5. Подождите немного, пока система проверит директории на наличие ненужных файлов.
6. Далее, в разделе «Удалить следующие файлы», выберите какие элементы удалить, а какие — оставить (проставьте галочки).
7. Нажмите «Очистить системные файлы», а потом — «OK».
Примечание. Применением данной утилиты можно ограничиться, если в системе не наблюдается сильных «засорений». Когда требуется расчистить 2, 3, 5 и больше Гб, необходимо выполнить ещё несколько процедур, которые включают в себя не только удаление отдельных файлов, но и изменение настроек ОС.
Удаление ненужных файлов из системных папок
Довольно часто, пользователи, сами того не ведая, «складывают» контент и ПО в специальные папки ОС, предназначенные для хранения разнообразной информации: «Загрузки», «Изображения», «Мои видеозаписи» и т.д. Многие программы и браузеры по умолчанию (без изменения первоначальных настроек) отправляют данные именно в эти директории.
Откройте их поочерёдно и удалите всё ненужное. Файлы, представляющие для вас особую ценность, перенесите в логический раздел (например, диск D, E).
Совет! Действуйте смело. Здесь можно удалить любой элемент, и Windows от этого не пострадает.
Папка «Temp»
Одна из главных источников засорения ОС. В ней размещают свои элементы антивирусы, драйвера, приложения, игры. Происходит это во время обновлений и инсталляций. После завершения задач, отработанные файлы так и остаются в «Temp». Конечно же, их оттуда нужно периодически убирать.
1. На диске С зайдите в папку «Пользователи».
2. Кликните папку с именем своей учётной записи (имя пользователя).
3. Затем перейдите в «AppData».
4. В директории «Local», откройте папку «Temp».
5. Полностью очистите её (отправьте все файлы/папки в корзину).
Совет! Если вы пользуетесь файловым менеджером «Total Commander»: создайте новую вкладку (сочетание клавиш «Ctrl» + «стрелочка вверх») и перейдите в папку Temp. Таким образом, у вас будет всегда на виду её содержимое.
Отключение файла подкачки
Pagefile.sys — виртуальная память ОС. Когда заканчиваются ресурсы RAM (оперативной памяти), система сохраняет невместившиеся данные в этот файл. Если на вашем ПК объём RAM превышает 4,6 или 8 Гб, контейнер «Pagefile.sys» можно отключить. На диске он занимает примерно такой же объём, как и оперативная память. Например, если в конфигурации вашего ПК, RAM составляет 16 Гб, то Pagefile.sys будет примерно таким же.
Чтобы отключить файл подкачки:
1. Через «Пуск» (иконка «Win») откройте «Панель управления».
2. В разделе «Система и безопасность» выберите «Система».
3. В окне настроек кликните «Дополнительные параметры… ».
4. В панели «Свойства системы», на вкладке «Дополнительно», нажмите «Параметры».
5. В опции «Параметры быстродействия», на вкладке «Дополнительно», в разделе «Виртуальная память», активируйте «Изменить… ».
6. В окне «Виртуальная память»:
- выберите диск С;
- включите кликом радиокнопку «Без файла подкачки»;
- нажмите кнопку «Задать», а потом — «OK».
7. Перезагрузите ПК.
Отключения гибернации
Гибернация — разновидность спящего режима: когда пользователь в течение определённого промежутка времени бездействует, ОС сохраняет все настройки в специальный файл hiberfil.sys. Windows также, как и для Pagefile.sys, резервирует для него свободное пространство на С, равное объёму RAM.
Поэтому, если вы не пользуетесь режимом гибернации, его лучше отключить.
1. Нажмите «Win + R».
2. Введите «CMD», нажмите «ENTER».
3. В консоли командной строки введите — «powercfg -h off» (без кавычек), далее — «ENTER».
4. Перезапустите ОС.
Применение сторонних утилит
Уборку диска С можно запросто «поручить» специальной программе-уборщику, например, CCleaner. Она умеет автоматически очищать корзину, дампы памяти, буфер обмена, удалять временные файлы (куки и кеш) популярных браузеров, а также выполнять множество других операций по удалению системного «хлама».
Всегда контролируйте объём диска С. Не допускайте его переполнения. Выполняйте удаление ненужных файлов не только в целях освобождения дискового пространства, но и для профилактики.
Успехов! Пусть ваш ПК хранит только полезную информацию.
Источник: itehnology.ru