Navigateur Web portable intégré dans l'application java?


Question: intégrer un navigateur Web portable sans cache dans une application java? Utilisation de Java SE. Cela peut-il être fait? Existe-t-il des supports JNI pour, par exemple, Chrome ou Firefox?

Peut-être Qt? QtJambi permettrait l'interfaçage avec le Webbrowser? D'après ce que je comprends, QtJambi est maintenant maintenu par la communauté et LPGL, QtWebbrowser est-il intégrable à cet effet dans la même licence?

Author: John, 2011-09-02

2 answers

En examinant la documentation disponible et au cours des derniers jours, voici ce qui est apparu:

Les navigateurs open source sont Webkit (qui est utilisé pour par exemple Safari), et Firefox aromatisé Mozilla. Il y a aussi Chromium qui est la version open source du Chrome aromatisé par Google qui utilise un moteur javascript moindre (écureuil par opposition à v8) et n'a pas la modularisation multi-thread séparé de Google Chrome.

Informations supplémentaires sur Firefox: Mozilla Firefox est basé sur une application appelée xulrunner qui utilise xml et javascript pour fournir les fonctionnalités supplémentaires de Firefox (autres que le navigateur "pas si basique" - tels que l'analyseur html, le rendu css et l'analyseur javascript). Xulrunner est l'implémentation du navigateur.

Firefox implémente son propre xulrunner privé, mais il existe également xulrunner en tant qu'installation autonome.

Xulrunner peut être utilisé pour créer des applications autonomes, qui sont basées sur un navigateur web, et prend en charge javascript. Xulrunner est également utilisé pour créer les plugins pour Firefox fournissant des fonctionnalités supplémentaires.

Afin de connecter le front end à quelque chose d'un peu plus soutenu et puissant que javascript (qui s'est amélioré à pas de géant ces dernières années), mais qui n'est toujours pas le moteur soutenu le plus puissant, il existe une bibliothèque C appelée xpcom.

Xulrunner utilise xpcom (écrit en C) pour exposer les variables javascript et analyser le dom, et liez des variables javascript et faites d'autres choses de "navigation" comme les en-têtes de lecture, etc. Plus sur Xulrunner et xpcom dans un instant.

Si vous voulez un navigateur récent et fonctionnel (html 4 ou 5, un bon support pour css2 au moins, et certains css3, et un rendu solide de javascript), votre meilleur pari autre que la compilation et l'intégration d'un de ces navigateurs open source est d'utiliser SWT.

SWT est une interface graphique, similaire à swing, sauf qu'elle implémente une interface de type webbrowser, et peut être utilisé pour implémenter un navigateur. SWT a également des interfaces développées pour interagir à la fois avec le dom et similaires. SWT a été développé par IBM et est activement maintenu.

SWT implémente le navigateur du système d'exploitation et prend en charge tous les principaux systèmes d'exploitation. À la hausse, cela signifie qu'il n'est pas nécessaire d'intégrer votre propre navigateur, à la baisse, vous êtes coincé avec n'importe quel navigateur / analyseurs existent sur les systèmes d'exploitation, quelle que soit la version. Le comportement par défaut sur un système d'exploitation windows SWT est d'utiliser Internet Explorer.

Il est également possible d'implémenter des navigateurs non liés au système d'exploitation comme firefox en installant xulrunner, mais il s'agit d'un 20 mo supplémentaire (pas étendu mais quelque chose à noter), car les versions les plus récentes de firefox ne sont pas reconnues.

Il est nécessaire d'avoir le support javaxpcom et xulrunner pour implémenter un navigateur de style Firefox dans SWT. La façon la plus simple d'obtenir la dernière version prise en charge par Firefox (xulrunner 1.9.) pour javaxpcom est pour télécharger une application appelée prism. Prism utilise xulrunner comme base pour créer des navigateurs autonomes pour des URL spécifiques. Il existe un xulrunner 1.9 piraté connu. qui a quelques problèmes - voir wikipedia pour plus d'informations à ce sujet, si vous visez à télécharger xulrunner 1.9.* compilé déjà à partir de la source.

Xulrunner est développé parallèlement à chaque nouvelle édition du navigateur Firefox. Jusqu'à ce que v 1.9.* (firefox 3.* si je ne me trompe pas), il y avait un support supplémentaire pour une fonction appelé javaxpcom qui était une interface écrite pour lier les fonctions de la bibliothèque C Xpcom à java.

L'annonce initiale de Firefox à quel point il était facile et simple d'intégrer et de styliser votre propre saveur de xulrunner, et qu'il était facile de porter vers de nombreux langages différents (support pour C, initialement support pour Java, Python entre autres), mais évidemment il y a une surcharge pour accéder et ajouter des bibliothèques.

Xulrunner est promu comme une solution logicielle potentielle pour rivaliser dans le même terrain de jeu que java, mais souffre des mêmes limitations des applications javascript / html. L'intérieur de ces paramètres de fonctionnement.

Depuis la version 2 de xulrunner, le support de javaxpcom a disparu, car il n'y a pas de mainteneur actif de ce code. C'est une solution open source, donc probablement l'intérêt de quelqu'un avec les compétences requises pourrait le ramasser. Xulrunner est maintenant récemment dans la version 6 au moment d'écrire cette réponse. Xpcom cependant va toujours fort. On peut supposer qu'il y avait un intérêt ou une activité insuffisante dans la communauté, entre autres problèmes potentiels.

Étant donné que javaxpcom a été signalé comme cassé, et nécessite que quelqu'un conserve un intérêt pour le code; ce travail devrait provenir de quelqu'un qui a une compréhension acquise de Xulrunners xpcom, ou au moins une collaboration de quelqu'un qui a une compréhension des modifications apportées à xpcom. Les commentaires de ce que j'ai lu suggèrent que la documentation sur xulrunner peut ne pas être un détaillé comme il pourrait l'être, ni sur javaxpcom, mais je ne suis pas en mesure d'évaluer ces commentaires.

J'avais espéré que les fonctionnalités de base de base auraient simplement pu être maintenues, en gardant le travail acharné impliqué dans les récentes améliorations du navigateur dans les fonctionnalités "intégrables". Les modifications de Firefox ont entraîné la rupture d'extensions dans les nouvelles versions, une fonction de suivre le temps.

Une solution non open source qui intègre un navigateur Web et similaire est appelée webrenderer.com. Il est maintenu, mais il y a une étiquette de prix attachée, ce qui n'est pas insignifiant.

Une autre voie possible pour implémenter un navigateur Web dans une application java est de suivre la voie d'une plate-forme de développement multiplateforme appelée Qt. QtJambi est un navigateur Web sous licence LPGL (auparavant commercial) qui dispose d'une documentation et d'un support étendus pour l'implémentation Java. Il y a évidemment une courbe d'apprentissage attachée à l'utilisation de toute nouvelle plate-forme. Raisons du passage de commercial à LPGL? Vraisemblablement la viabilité et la demande commerciale pour les navigateurs pris en charge par java a.... décliné? Une fonction de l'époque que nous vivons sans aucun doute.

GWT est la solution java / webbrowser de Google. GWT fonctionne en permettant aux développeurs d'écrire des solutions java, puis de ports et de convertir cette solution en un javascript stable qui peut être obscurci. Cependant, GWT n'est pas adapté au développement d'une application de type bureau, en ce sens qu'il nécessite une implémentation "serveur" pour le backend. Dans ce sens il est le plus adapté ou similaire à une solution client / serveur de style PHP ou ASP.

Bien qu'il ne soit pas impossible d'écrire GWT en tant qu'application de bureau, vous devrez probablement implémenter Apache Derby, ou Jetty ou similaire en tant que serveur interne pour faire tous les va-et-vient. Ce n'est pas soigné, élégant ou spécialement conçu pour cela, mais des solutions garance ont été essayées. Il y a eu des applications de bureau de style php.

Pour un certain nombre de raisons politiques et financières raisons il semble que la prise en charge du portage / intégration des navigateurs java et open source ne soit pas en hausse, une tendance qui a commencé avec le manque d'intérêt d'Apple pour la prise en charge des applications java. Rappelez-vous, les navigateurs sont open source et probablement avec assez de temps et d'énergie, javaxpcom etc. pourrait être soutenue, mais qui va le faire gratuitement, je ne sais pas.

Java a promis une implémentation de navigateur java mais cela n'a pas été publié avec Java 7, et nécessite comme la plupart des autres choses, une quantité de travail. Peut-être en 8? On ne sait même pas s'il sera prêt d'ici là, je ne peux pas tout à fait savoir si c'est actuellement sur la feuille de route ou non, et ne semble pas être leur plus haute priorité.

SWT nécessite des bibliothèques et une installation supplémentaires pour fonctionner sur diverses plates-formes.

D'autres solutions open source qui semblent fonctionner au moins en partie, mais la maintenance, le support et l'intérêt actuel semblent mitigés, notamment JRex, MozSwing. Rhino est un moteur javascript, flying saucer un moteur de rendu html4.

 3
Author: John, 2011-09-20 11:46:30

Si vous parlez d'une application basée sur Java SE, je recommanderais fortement le composant swt 'Browser'. Je l'ai utilisé moi-même dans l'application basée sur Eclipse RCP et cela fonctionne comme un charme (flash, support javascript)

 1
Author: Kris, 2011-09-02 06:46:13