Accueil | Site personnel | Alma | Foo | Icônes | Slaf

Jtk, the Java ToolKit 0.04


l'API Java pour C++, l'unification de Gtk et de Qt, Gnome et KDE
Dernière mise-à-jour : 1999-06-14
Création : 1999-04-30
Auteur : Guillaume Desnoix ©1999

English

Nouvelles


14-jun-99: Mise en place d'une liste de diffusion dédiée à Jtk.
11-jun-99: Ajout de FileInputStream, de FlowLayout, des menus.
8-jun-99: Ajout de Gnome et de BorderLayout.
1-mai-99: Publication du projet.

Présentation

Jtk est un projet dont le but est la réalisation d'une librairie C++ offrant les caractéristiques suivantes:

Il se destine au développeur qui veut réaliser une application graphique en C++ ou traduire une application existante en Java vers C++. Jtk se veut à terme l'équivalent du classes.zip/rt.jar. La traduction est obtenu en utilisant Alma.

Un prototype a été réalisé en deux jours pour vérifier la faisabilité. Les premiers résultats sont encourageants (voir exemple).

Les outils utilisés pour ce prototype sont : GTK 1.2, QT 2.0, GCC 2.7.2.3, Debian GNU/Linux. La gestion de la mémoire est réalisée par le ramasse-miettes BDW Garbage Collector. Le code initial Java a été fourni par GNU Classpath ou écrit main.

Ouverture

La réalisation de Jtk est un long travail que je ne peux et ne souhaite réaliser seul. C'est pourquoi je vous propose de participer. Les besoins les plus importants sont:

N'hésitez donc pas à m'écrire pour que nous organisions ensemble ce projet qui a débuté avant-hier !

Exemple


Référence (Java)

Version GTK (C++)

Version QT (C++)

Version Gnome (C++)

Version KDE (C++)

Le code C++ a été obtenu par traduction du code Java grâce à Alma:

#include "jtk_impl.hpp"
#include "essai.hpp"

static java_lang_Class Essai_class("Essai");

java_lang_Class* Essai::getClass()
{
  return &Essai_class;
}

void Essai::actionPerformed(java_awt_event_ActionEvent* e)
{
  if(e->getSource()==bt1)
    tf1->setText(bt1->getText());

  if(e->getSource()==bt2)
    tf1->setText(bt2->getText());
}

void* Essai::main()
{
  Essai* l=new Essai();
  return l->run();
}

void* Essai::run()
{
  com_sun_java_swing_ImageIcon* ii1=new com_sun_java_swing_ImageIcon("doom.xpm");
  java_awt_Font*  ft1=new java_awt_Font("SansSerif",0,18);

  bt1=new com_sun_java_swing_JButton("Hello",ii1);
  bt2=new com_sun_java_swing_JButton("World");
  lb1=new com_sun_java_swing_JLabel("Guillaume",ii1);
  tf1=new com_sun_java_swing_JTextField(10);

  lb1->setBackground(new java_awt_Color(255l,192l,128l));
  lb1->setForeground(new java_awt_Color(255l,0l,0l));

  bt1->setBackground(new java_awt_Color(255l,255l,128l));
  bt1->setForeground(new java_awt_Color(0l,0l,255l));

  bt2->setBackground(new java_awt_Color(128l,128l,255l));
  bt2->setForeground(new java_awt_Color(255l,255l,0l));
  bt2->setFont(ft1);

  bt1->addActionListener(this);
  bt2->addActionListener(this);

  com_sun_java_swing_JFrame*  f=new com_sun_java_swing_JFrame();
  f->add(bt1);
  f->add(bt2);
  f->add(lb1);
  f->add(tf1);

  f->setSize(400,100);
  f->show();

  return null;
}

Licence

Les distributions 0.01 à 0.04 sont fournies sous licence GPL2 (GNU General Public License release 2). Il en existe une traduction en français.

Téléchargement