Quelle plate-forme devez-vous choisir pour développer des applications de bureau Java?

1- Introduction

En réalité, il y a plusieurs de questions courantes avec Java:
  • Quelle solution dois je sélectionner pour programmer une application de bureau Desktop?
  • Y a t- il une solution de programmation une site web ayant de l'interface similaire de l''application de Desktop?
Dans ce document, je les répondrai de la manière générale et je vous donnerai des solutions correspondantes,
Application de Desktop:
C'est une application de Desktop écrite par  Java ( Java Swing):
Application web:
C'est une application Web qui a une interface similaire de celle de l'application de  Desktop, elle est écrite sur  Eclipse RAP:

2- La programmation de l'applicationJava Desktop

En effet, pour programmer une application de Desktop, vous avez 2 choix:
  • Utilisation Swing - est une bibliothèque disponible sur JDK et est capable d'exécuter sur différents systèmes d'exploitation (Windows, Unix, Mac OS,..)
  • Utilisation SWT - est une bibliothèque pour programmer l'application de Desktop et et développée par IBM. Elle est capable d'exécuter sur différents systèmes d'exploitation (Window, Unix, Mac OS,..)
C'est une image de l'application  Desktop qui est écrite en  SWT et exécute sur de différents système d'opérateur:
C'est une image d'un  Desktop écrit par  Swing. Par défaut  "Look And Feel", elle semble incensée.Danns le programme, vous pouvew choisir une autre  L-A-F pour construire une interface similaire de  Windows ou Linux si vous voulez.

2.1- Swing

Le package  AWT (Abstract Window Toolkit) est une bibliothèque dévéloppées pour le programme de  Desktop disponible dans  JDK. Mais, malheureusement elle ne fonctionne un peu moins bien que prévu sur différents systèmes d'exploitation. C'est la raison pour laquelle Swing est né et remplacé AWT afin d'assurer qu'elle exécute bien  sur différents systèmes d'exploitation. 
Swing construit une interface graphique entièrement par Java et s'exécute sur tous les systèmes d'exploitation. Il ne remplace pas AWT, mais hérite de AWT plutôt. C'est sa faiblesse qui rend les programmeurs confus. Un grand nombre de classes appartenant à AWT n'ont pas été utilisées ou deviennent des classes héritées par les classes de Swing. À mon avis, cela ne permet pas à Swing d'être apprécié.

2.2- SWT (Standard Widget Toolkit)

SWT (Standard Widget Toolkit) est une bibliothèque graphique libre pour les applications de Desktop, initiée par IBM. SWT n'est pas un standard Java.
Cette librairie utilise le système graphique de la plate-forme d'exécution( ButtonLabel, ...) et créer uniquement des composantes graphiques qui n'existent pas dans cette plate-forme là par Java.
 
Nếu lập trình SWT tốt nhất bạn chọn Eclipse IDE để lập trình. Eclipse có thể tích hợp plugin WindowBuilder hỗ trợ kéo thả các thành phần giao diện vô cùng dễ dàng. WindowBuilder vốn là một sản phẩm thương mại nay đã được miễn phí sử dụng khi tích hợp vào Eclipse.

2.3- Comparer SWT et Swing

Swing est une bibliothèque Java pure. Après avoir terminé la programmation de l'application, vous pouvez configurer Look And Feel pour obtenir une interface similaire à Windows ou Linux ou Mac Os. Certains Look And Feels sont disponibles sur JDK, afin que vous puissiez utiliser ou acheter L-A-F. Vous exécutez donc une application Swing sur la plate-forme Windows sur laquelle l'interface d'affichage appartient à Linux, Mac Os, ...
Ceci est un lien d'introduction de la belle  L-A-F:
SWT - Cette bibliothèque n'est pas entièrement écrite par Java. Lorsqu'il fonctionne sur un système d'exploitation, il essaie d'utiliser les bibliothèques de composants de ce système d'exploitation (par exemple, il utilise des Button, Label, Frame, ...), et utilisez uniquement Java pour créer des composants s'ils ne sont pas disponibles sur le système d'exploitation . Par conséquent, comme pour la vitesse, SWT est plus rapide que Swing.
Avec  SWT nous n'avons pas le concept de  Look And Feel comme  Swing. Lorsque vous exécutez l'application sur la plate-f orme de tout système d'exploitation, l'interface est caractérisée par ce système d'exploitation.

Comparer les performances de l'application:

2.4- Vous devriez choisir SWT ou Swing?

Je pense que vous devriez choisir SWT pour la programmation d'une application Desktop, car il s'agit d'un paquet de bibliothèque avec une fourniture abondante de différents composants d'interface. De plus, il est né après Swing, donc c'est le résultat d'étudier et de remédier des faiblesses de Swing.
SWT avec des progiciels de bibliothèque en expansion est en cours de développement, par exemple:
Eclipse dévelope une nouvelle plate- forme baptisée  RAP (Remote Application Platform) - RAP vous permet de programmer des applications donc les interfaces sont similaires comme celles des applications  Desktop, et elle utilise également des classes familières dans  SWT. Donc, vous pouvez écrire une application qui peut fonctionner à la fois sur la plate-forme Web et celle sur  Desktop. C'est une force si vous choisissez SWT.
Voyez une  Demo (une démo) du programme écrit par  RAP:

3- La technologie Eclipse

Nous avons besoin d'avoir une vue générale de la technologie d' Eclipse
RCP (Rich Client Platform) : est une  platform utilisant le programme  SWT pour programmer des applications  Desktop. L'exéction de différents systèmes d'opération.
(Voir plus en détails de RCP ci-dessous.)
RAP (Remote Application Platform): Est une plate-forme utilisant la bibliothèque RWT pour la programmation d'applications fonctionnant sur le Web comme l'application Desktop.
  • RWT (RAP Widget Toolkit) est un paquet de bibliothèque dont le nom de classes est identique à celui de SWT. Il a des méthodes similaires qui vous aident à programmer des applications RAP en cours d'exécution sur le Web. Grâce à cette caractéristique, avec seulement un source code, vous pouvez exécuter l'application sur la plate-forme Desktop ou Web.
RAP fonctionne bien sur différents navigateurs.
Tabris - est un paquet de bibliothèque qui écrit des applications Mobile et peut fonctionner sur différents types de Mobile.

4- RCP fait quoi?

RCP (Rich Client Platform) : Une plate- forme utilisant la bibliothèque  SWT pour programmer des applications  Desktop. L'exécution sur différents système de l'opération, c'est une plate- forme créée  Eclipse IDE.
Par conséquent,  RCP est une plate- forme utilisant  SWT comme base de construction. Vous pouvez utiliser la plate-forme RCP pour programmer des applications Desktop.
L'image ci-dessous illustre une application simple (utilisez uniquement SWT, sans utilisant les choses avancées de RCP Platform):
RCP Platform a construit une plate-forme qui vous permet de programmer des interfaces structurelles compliquées comme Eclipse IDE, Il comprend les systèmes​​​​​​​ Menu, Toolbar, View, Editor, ...
RCP vous permet également de développer des  Plugin intégrés dans  Eclipse que vous utilisez.

5- Qu'est- ce que RAP fait?

RAP (Remote Application Platform): Est une plate-forme utilisant la bibliothèque  RWT pour programmer des applications exécutant sur  Web comme celles de  Desktop.
  • RWT (RAP Widget Toolkit) est un ensemble de bibliothèques avec des classes  dont les noms sont identiques à ceux des classes de SWT et dont les méthodes sont similaires. Cela vous aide à programmer des applications RAP sur le Web. Étant donné que cette fonctionnalité ne nécessite qu'un seul source code, vous pouvez exécuter l'application en tant qu'application de Desktop ou sur le Web.
Comme RCP, RAP est une plate-forme qui nous permet de créer des applications dont les interfaces sont aussi compliquées que celles d'IDE Eclipse.
Comme RCP, RAP est une plate-forme qui nous permet de créer des applications dont les interfaces sont aussi compliquées que celles d'  Eclipse IDE.

6- RAP & RCP - Pourquoi le même code est-il?

Celle-ci est la structure de deux plate-formes:
  • RCP est basé sur SWT (Standard Widget Toolkit)
  • RAP est basé sur RWT (RAP Widget Toolkit)
Voici est un exemple du code, ajouter un  Button à une  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, et  RWT utilisent la classe  org.eclipse.swt.widgets.Button pour créer  Button .

Le code de la classe  Button dans  S WT (exécuter sur desktop) est différent à celui de la classe  Button de  RWT (exécuter sur WEB).
  • La classe Button de SWT est emballée dans le fichier jar baptisée org.eclipse.swt_*.jar
  • La classe Button de RWT est emballée dans le fichier jar nommée 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.
  • RCP Target Platform
  • RAP Target Platform
With the same code but if you run with  RCP Target Platform, you will get a Desktop application; if you run with  RAP Target Platform, you will get an application on Web.

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- Où devriez vous commencer?

Si vous sélectionnez la programmation  RAP-RCP. Vous devez étudier de  SWT, cela signifie que vous pouvez étudier facilement de  RWT.
Travailler avec  SWT signifie de collaborer avec des objets  Widget ( Button, Label, ..) et de gérer  Layout. WindowBuilder qui est un plugin, nous permet de glisser et déplacer des composants sur l'interface et automatiquement générer des codes correspondants.
Vous pouvez faire des références dans le document ci- dessous, il vous instruit de programmer  SWT avec  WindowBuilder qui est un outil virtuel qui vous aide à glisser et déplacer facilement des composants de l'interface.
Après avoir maîtrisé la programmation avec SWT, vous pouvez continuer avec le RCP ou le RAP.

SWT:

RCP

RAP

  • TODO Link!