Какую платформу я должен выбрать для разработки приложений Java Desktop?
1. Введение
На самом деле есть некоторые общие вопросы с Java:
- Какое решение я должен выбрать чтобы программировать приложение Desktop?
- Есть ли решение для программирования вебсайта с интерфейсом поъожим на приложение Desktop?
В данной статье я вам отвечу в общем на вопрос выше и так же представлю решение, которое поможет вам это сделать.
Приложение Desktop:
Это приложение Desktop написанный в Java (Java Swing):
Веб приложение:
И это Веб приложение с интерфейсом похожим на приложение Desktop, написанное в Eclipse RAP:
2. Программирование Java приложение Desktop
На самом деле, чтобы программировать приложение Desktop у вас есть 2 выбора
- Использовать Swing - это интегрированная библиотека на JDK и может работать на разных операционныъ системах (Windows, Unix, Mac OS,..)
- Использовать SWT - это библиотека для программирования приложения Desktop разработанная IBM. Может работать на разных операционныъ системах (Window, Unix, Mac OS,..)
Это иллюстрация приложения Desktop написанный с SWT и работает на разных операционных системах.
Это иллюстрация приложения Desktop написанный с Swing. С "Look And Feel" по умолчанию выглядит немного нелепо. В программировании вы можете выбрать другой L-A-F чтобы получить интерфейс похожий на Windows или Linux, если хотите.
Swing
AWT (Abstract Window Toolkit) - это пакет библиотеки разработанный для программирования Desktop имеющийся в JDK, но к сожалению он не работает как хотелось бы на разных операционных системаъ. Это послужило причиной появления Swing чтобы заменить AWT, и гарантировать что он будет хорошо работать на разных операционных системах.
Swing строит графический интерфейс полностью используя Java. И работаетна всех операционных системах. не заменяет AWT а наследуется от AWT, это неудобство и путает программистов, большое количество классов принадлежит AWT и больше не используется, или становятся классами унаследованными от классов Swing. По-моему, это делает Swing низкооцененным.
SWT (Standard Widget Toolkit)
SWT (Standard Widget Toolkit) это библиотека программирования приложения Desktop разработанный IBM. Она развивает графику не только с помощью Java. При работе на определенной операционной системе, она старается воспользоватья графическим интерфейсом той операционной системы (Button, Label, ...) и создает только те графические компоненты, которые отсутствуют в той системе с Java.
При пргораммировании SWT вам лучшше всего выбрать Eclipse IDE для программирования. Eclipse может интегрировать с plugin WindowBuilder помогая легко перетащить компоненты интерфейса. WindowBuilder был коммерческим продуктом, но теперь является бесплатным при интеграции с Eclipse.
Сравнение SWT и Swing
Swing это чистая библиотека Java, когда вы закончили программировать приложение вы можете настроить Look And Feel (Видеть и чувствовать) чтобы получить интерфейс похожи на Windows, или Linux или Mac Os,... Имеются некоторые Look And Feel на JDK которые вы можете использовать или можете купить L-A-F. Так, вы можете запустить приложение Swing на операционной системе Windows который отображает интерфейс Linux, Mac Os, ..
Это ссылка представлющая хорошие L-A-F:
SWT - Это библиотека написанная несовсем с помощью Java. При работе на операционной системе, она старается воспользоваться компонентами библиотеки той операционной системы (например воспользоваться Button, Label, Frame, ...), и спользует Java только чтобы нарисовать компоненты если они отстствуют на операционной системе. Так, скорость SWT быстрее Swing.
С SWT у нас нет понятия Look And Feel как с Swing. Когда вы запускаете приложение на платформе любой операционной системы, интерфейс характеризуется той операционной системой.
Сравнить скорость приложений:
Вам стоит выбрать SWT или Swing?
Я думаю вам следует выбрать SWT для программирования приложения Desktop потому что это пакет библиотеки с разнообразными интерфейсами. Так же, это пакет библиотеки вышедший после Swing, поэтому он научился и решил недостатки Swing.
SWT с расширенными библиотеками развиваются больше, например:
Eclipse развивает новую платформу, называется RAP (Remote Application Platform) - RAP позволяет вам программировать приложения Desktop с похожими интерфейсами, использовать знакомы классы в SWT. такЮ вы можете написать приложение, которое будет работать и на веб платформеи на платформе Desktop. Это является сильной стороной если вы выберите SWT.
Давайте посмотримt Demo программы написанное с RAP:
3. Технология Eclipse
Нам нужно иметь общее видение о технологии Eclipse
RCP (Rich Client Platform) : Это platform использующая библиотеку SWT для программирования приложений Desktop. Может работать на разных операционных системах.
(Более подробно о RCP упоминается в следующей части.)
(Более подробно о RCP упоминается в следующей части.)
RAP (Remote Application Platform): Это Платформа, использующая библиотеку RWT для программирования приложения работающих на Веб как на приложении Desktop.
- RWT (RAP Widget Toolkit) это пакет библиотеки с классами, названия которых совпадают с названиями класса SWT, и имеют похожие методы, которые помогают вам программировать приложение RAP работающие на Web. Из-за этой характеристики нужен только 1 source code, вы можете запустить приложение на платформе Desktop или на платформе Web.
RAP хорошо работает на разных браузерах.
Tabris - Эьто пакет библиотеки написанный для приложение Mobile, и работает на разных Мобильных устройствах
4. Что может сделать RCP?
RCP (Rich Client Platform) : Это Платформа использующая библиотеку SWT чтобы программировать приложения Desktop. Работая на разных операционных системах, является платформой, которая создала Eclipse IDE.
Поэтому RCP это Платформа использующая SWT как базу для построения. Вы можете использовать Платформу RCP чтобы программировать приложения Desktop.
- Иллюстрация ниже это простое приложение (Нужно использовать только SWT, не нужно использовать повышенную RCP Platform):
RCP Platform построил платформу позволяющую вам программировать сложноструктурированные интерфейсы как Eclipse IDE, включает системы Menu, Toolbar, View, Editor, ...
RCP так же позволяет вам развить Plugin интегрированные в Eclipse которые вы используете.
5. Что может сделать RAP?
RAP (Remote Application Platform): Это Платформа использующая библиотеку RWT чтобы программировать приложения работающие на Web как приложения Desktop.
- RWT (RAP Widget Toolkit) это пакет библиотеки с классами названия которых совпадают с названиями класса SWT, имеет похожие методы, помогая вам программировать приложение RAP работающий на Web. Так так это характеристика нуждается только в 1 source code, вы можете запустить приложение как на Desktop или на Web.
Так же как RCP, RAP является Платформой, позволяющей создавать приложения со сложными интерфейсами как Eclipse IDE.
6. RAP & RCP - Почему коды похожи?
Это структуры 2 Platform:
- RCP использует SWT (Standard Widget Toolkit)
- RAP использует RWT (RAP Widget Toolkit)
Это пример, добавить Button в Composite:
** MyApplicationWindow **
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
public class MyApplicationWindow {
.......
protected void createContents() {
.......
Composite composite = new Composite(shell, SWT.NONE);
composite.setLayout(new GridLayout(1, false));
Button btnMyButton = new Button(composite, SWT.NONE);
btnMyButton.setText("My Button");
}
}
SWT, и RWT оба используют класс org.eclipse.swt.widgets.Button чтобы создать Button .
Код класса Button в SWT (рабоает на desktop) четко отличается от кода класса Button в RWT (изначально для работы на WEB).
Код класса Button в SWT (рабоает на desktop) четко отличается от кода класса Button в RWT (изначально для работы на WEB).
- Class Button в SWT упакован в файле jar с названием org.eclipse.swt_*.jar
- Class Button в RWT упакован в файле jar с названием org.eclipse.rap.rwt_*.jar
Target Platform is a library environment where you can declare.
You can declare two Target Platforms. One includes RCP libraries, and another includes RAP libraries.
Of course, RAP and RCP have some differences. No all components of SWT have equivalently on RWT, and vice versa. In specific situations, we can handle this difference. Applications which can run on both Desktop and Web are known as "Single Sourcing".
You can declare two Target Platforms. One includes RCP libraries, and another includes RAP libraries.
- RCP Target Platform
- RAP Target Platform
Of course, RAP and RCP have some differences. No all components of SWT have equivalently on RWT, and vice versa. In specific situations, we can handle this difference. Applications which can run on both Desktop and Web are known as "Single Sourcing".
7. С чего вам нужно начать?
Если вы выбираете программирование RAP-RCP. Вам нужно узнать больше про SWT, это так же означает вам будет легче научиться про RWT.
Работать с SWT значит рабоать с объектами Widget (Button, Label, ..) и решать Layout. WindowBuilder это плагин позволяющий перетаскивать компоненты в интерфейс и автоматически генерировать эквивалентные коды.
Работать с SWT значит рабоать с объектами Widget (Button, Label, ..) и решать Layout. WindowBuilder это плагин позволяющий перетаскивать компоненты в интерфейс и автоматически генерировать эквивалентные коды.
Вы можете ссылаться на статью ниже, это руководство по программированию SWT с WindowBuilder который является визуалным инструментом, помогающий легко перетаскивать компоненты интерфейса.
После того, как вы овладели программированием с SWT вы можете продолжить с RCP или RAP.
SWT:
RCP
RAP
- Hướng dẫn lập trình Eclipse RAP cho người mới bắt đầu - Ứng dụng cơ bản
Eclipse RAP
- Установите RAP Tools для Eclipse
- Какую платформу я должен выбрать для разработки приложений Java Desktop?
- Руководство Eclipse RAP для начинающих - приложение e4 Workbench
- Установить Eclipse RAP Target Platform
- Создать Eclipse RAP Widget из ClientScripting-based widget
- Установите RAP e4 Tooling для Eclipse
Show More
Технология Eclipse
- Установите Tycho для Eclipse
- Руководство Java OSGi для начинающих
- Создайте проект Java OSGi с Maven и Tycho
- Установите WindowBuilder для Eclipse
- Какую платформу я должен выбрать для разработки приложений Java Desktop?
- Программирование приложения Java Desktop с использованием SWT
- Руководство Eclipse JFace
- Установить Eclipse RAP Target Platform
- Установите RAP e4 Tooling для Eclipse
- Создать Eclipse RAP Widget из ClientScripting-based widget
- Руководство Eclipse RCP 4 для начинающих - e4 Workbench Application
- Установите RAP Tools для Eclipse
- Руководство Eclipse RAP для начинающих - приложение e4 Workbench
Show More
Java Basic
- Настройте java compiler для обработки вашего Annotation (Annotation Processing Tool)
- Программирование на Java для группы с помощью Eclipse и SVN
- Руководство Java WeakReference
- Руководство Java PhantomReference
- Сжатие и декомпрессия в Java
- Настройка Eclipse для использования JDK вместо JRE
- Методы String.format() и printf() в Java
- Синтаксис и новые функции в Java 8
- Регулярные выражения Java
- Руководство Java Multithreading Programming
- Библиотеки Java JDBC Driver для различных типов баз данных
- Руководство Java JDBC
- Получить значения столбцов, автоматически возрастающих при вставлении (Insert) записи, используя JDBC
- Руководство Java Stream
- Руководство Java Functional Interface
- Введение в Raspberry Pi
- Руководство Java Predicate
- Абстрактный класс и Interface в Java
- Модификатор доступа (Access modifiers) в Java
- Руководство Java Enum
- Руководство Java Annotation
- Сравнение и Сортировка в Java
- Руководство Java String, StringBuffer и StringBuilder
- Обработка исключений Java - Java Exception Handling
- Руководство Java Generics
- Манипулирование файлами и каталогами в Java
- Руководство Java BiPredicate
- Руководство Java Consumer
- Руководство Java BiConsumer
- Что мне нужно для начала работы с Java?
- История Java и разница между Oracle JDK и OpenJDK
- Установить Java в Windows
- Установите Java в Ubuntu
- Установите OpenJDK в Ubuntu
- Установить Eclipse
- Установите Eclipse в Ubuntu
- Быстрое изучение Java для начинающих
- История бит и байтов в информатике
- Типы данных в java
- Битовые операции
- Команда if else в Java
- команды switch в Java
- Циклы в Java
- Массивы (Array) в Java
- JDK Javadoc в формате CHM
- Наследование и полиморфизм в Java
- Руководство Java Function
- Руководство Java BiFunction
- Пример Java encoding и decoding с использованием Apache Base64
- Руководство Java Reflection
- Java Удаленный вызов методов - Java RMI
- Руководство Программирование Java Socket
- Какую платформу я должен выбрать для разработки приложений Java Desktop?
- Руководство Java Commons IO
- Руководство Java Commons Email
- Руководство Java Commons Logging
- Понимание Java System.identityHashCode, Object.hashCode и Object.equals
- Руководство Java SoftReference
- Руководство Java Supplier
- Аспектно-ориентированное программирование Java с помощью AspectJ (AOP)
Show More
- Руководства Java Servlet/JSP
- Руководства Java Collections Framework
- Java API для HTML, XML
- Руководства Java IO
- Руководства Java Date Time
- Руководства Spring Boot
- Руководства Maven
- Руководства Gradle
- Руководства Java Web Services
- Руководства Java SWT
- Руководства JavaFX
- Руководства Oracle Java ADF
- Руководства Struts2 Framework
- Руководства Spring Cloud