Bonjour,
Je souhaite int�grer une librairie d�velopp�e en Java dans Javascript en tant qu'API pour utiliser et afficher ses objets dans du HTML5.
Est-ce possible et comment?
Merci d'avance de votre aide.
Version imprimable
Bonjour,
Je souhaite int�grer une librairie d�velopp�e en Java dans Javascript en tant qu'API pour utiliser et afficher ses objets dans du HTML5.
Est-ce possible et comment?
Merci d'avance de votre aide.
La r�ponse est non
Mais cela ne signifie pas que tu ne peux rien faire.
Si javascript ne peux pas charger de librairie externes dans d'autre langage dans le navigateur il peux par contre acc�der � tous les �l�ments pr�sent dans une page html
et HTML lui pr�voit le chargement d'�l�ment externes dans le cas de Java �a s'appelle une Applet
http://jmdoudoux.developpez.com/cour...ts.php#applets
Bien que pour des raisons de s�curit� cette possibilit� soit de moins en moins usit�e elle existe toujours moyennant la confirmation de la part de l'utilisateur. (autoriser les Applets java dans la page)
Une fois l'Applet pr�sent dans la page javascript peut y acc�der puisqu'il s'agit d'un �l�ment de la page.
https://docs.oracle.com/javase/tutor...avaScript.html
C'est tout de m�me une solution de plus en plus d�cri�e et perso je la d�conseille.
Soit la lib Java est relativement simple et je vote pour un portage (r��criture) en javascript pur
auquel cas elle s'ex�cutera sur le poste de l'utilisateur comme pour l'Applet
Soit la lib Java fournis des algos lourd complexe dans ce cas je vote pour une exposition depuis le serveur via une API de type Rest, JSON, ou JSON-RPC. dans ce cas le javascript appelle une fonction local qui envois une demande d'ex�cution au serveur et attends la r�ponse. le Java s'ex�cute alors sur le serveur mieux �quip� pour �a.
Il existe de plus en plus de restriction sur les postes client pour l'ex�cution de Java via le r�seau.
M�me JNLP est consid�r� comme une ex�cution non sure et est d�sactiv� par d�faut sur la plus part des machines.
enfin on ne sais jamais quelle version poss�de le client il faut donc un Java particuli�rement robuste et g�n�rique. alors que avec l'ex�cution c�t� serveur on maitrise la version pr�cis�ment et on peut utiliser un code java plus optimis�.
pour exposer ton API tu peux t'inspirer de https://jolokia.org/features/overview.html
qui expose tous les MBean de ton Java via HTTP
A+JYT
Merci Sekaijin de cette r�ponse claire et d�taill�e.
Par ailleurs sur le Net, j'ai trouv� des r�ponses contraires affirmant que cela est possible.
Mais il est vrai que je n'ai pas r�ussi � faire l'import comme ils disent, sous NetBeans (page HTML charg�e dans un objet WebView, important une classe d�finie dans le m�me projet).
Maintenant si c'est impossible, comment des API ont �t� ajout�es � Javascript (par Google et autres ) ?
Concernant mon projet, la libraire java est trop complexe et importante pour la r��crire en JS. De m�me que l'ex�cution devrait se faire c�t� client. Donc, si je trouve pas le moyen pour importer des classes ou la Jar, il reste � essayer la solution de transformer la librairie en Applet. Mais dans ce cas, je crains une forte d�gradation des performances, notamment qu'il risque d'y avoir beaucoup de pages actives (et donc autant d'applets, � moins de pouvoir faire appel � un seul, mais comment?).
Encore merci..
Je ne comprends pas la question des API, une API est une interface et on peut en �crire dans tous les langages.
Ce qui est d�crit dans ta page est l'ajout d'une ressource java dans une jsp soit donc dans un programme JAVA
une jsp est compil� par un outil appel� jspc (lorsqu'on le publie directement sur son serveur le serveur compile les jsp � l'installation de la webapp). cela donne une classe java qui est une servlet.
il ne s'agit donc pas d'ajouter une lib java � un moteur d'interpr�tation javascript
la jsp est compil� puis ex�cut� sur le serveur alors que le javascript est ex�cut� par le navigateur sur le poste du client.
le moteur d'interpr�tation javascript � �t� con�u pour �tre embarque dans une application. dans le cas qui nous int�resse l'application en question est le navigateur. cette conception du moteur pr�vois une interface qui permet d'inclure du code sp�cifique. c'est cette capacit� qui est utilis�e pour ajouter � javascript les objets document, navigator ou window. pour cela il faut d�velopper une librairie en C ou C++ et re-compiler le navigateur tout entier. Heureusement les concepteur des navigateurs on ajout� un autre moyen qui ajoute des �l�ment au moteur javascript dynamiquement. cette solution se fait au travers de l'API du navigateur pour �crire des plugins.Citation:
Maintenant si c'est impossible, comment des API ont �t� ajout�es � Javascript (par Google et autres ) ?
Si la sp�cification de l'API C++ de Javascript pour ajouter des fonctionnalit�s est normalis� mais n�cessite une compilation du moteur
l'API pour �crire des plugins est totalement d�pendante du navigateur de la plateforme (Windows/Linux/Mac) et de la version.
Les specs du moteur javascript font qu'on peu l'embarquer dans n'importe quelle appli. il existe donc des impl�mentation en java. dans ce cas il n'est pas tr�s difficile d'ajouter une lib java � la jvm ex�cutant le moteur javascript et de la rendre visible.
Mais je doute que tu veuille d�velopper un navigateur en java juste pour pouvoir y ajouter ta lib.
je ne comprends pas bien ton client a beaucoup de page ouverte en m�me temps au point que l'instanciation d'une JVM contenant une simple applet dans chaque page d�graderait les performance du client ?Citation:
Mais dans ce cas, je crains une forte d�gradation des performances, notamment qu'il risque d'y avoir beaucoup de pages actives...
J'avoue que l� je ne comprends pas du tout. en g�n�ral dans une application web lorsque l'utilisateur � plus de trois fen�tres d�pendantes ouvertes en simultan� il convient de revoir la conception. depuis longtemps les �tudes en ergonomie ont montr� que ce n'�tait pas une bonne solution. une des tendance est m�me les Single page application.
En g�n�ral dans une application Web on a une fen�tre ouverte sur l'application et au plus une fen�tre d�pendante. (je ne parle pas de l'ouverture d'une fen�tre ou onglet non d�pendant) ton client a donc une ou deux instance de l'applet.
du coup je ne comprends pas comment cela peut d�grader les perfs.
o� alors m�me avec une seule instance ton Java �crase les perf mais ce n'est pas du au fait que tu en a fais une applet.
J'avoue que n'ayant que peut d'info sur ta lib je ne peux rien te conseiller.
Il te faut savoir que si tu en fais un applet 90% des navigateur refuseront par d�faut de l'�x�cuter que dans les 10% restant tu auras une 15 de version en moyenne de java � g�rerCitation:
De m�me que l'ex�cution devrait se faire c�t� client.
que tu n'auras pas acc�s au ressource locales (pas de persistance)
et qu'� chaque changement de page tu perdras dans java toutes les variables. (� chaque page une nouvelle JVM)
A+JYT
Merci � tous (et surtout � Sekaijin) de ses r�ponses utiles
Ok pour JSP (et le lien que j'ai donn�).. Je n'avais pas vu la diff�rence.. mais maintenant c'est claire gr�ce � vous
Concernant mon projet : il s'agit de faire ex�cuter les pages HTML dans des objets WebView de JavaFX, et non par les navigateurs Web (IE, Opera, Firefox, etc.). Par ailleurs, je ne contr�le pas le nombre de pages qui seront ouvertes simultan�ment, car c'est l�utilisateur qui le d�cidera.
Si je pouvais le faire facilement en quelques jours !!.. Car ce serai l'id�al dans le contexte de mon projet qui est une appli autonome (non un NAVIGATEUR au sens classique).. Mon but est de seulement utiliser la puissance conjugu�e de HTML5 et de Javascript...Citation:
Les specs du moteur javascript font qu'on peu l'embarquer dans n'importe quelle appli. il existe donc des impl�mentation en java. dans ce cas il n'est pas tr�s difficile d'ajouter une lib java � la jvm ex�cutant le moteur javascript et de la rendre visible.
Mais je doute que tu veuille d�velopper un navigateur en java juste pour pouvoir y ajouter ta lib.
Mais alors comment faire cela (une version de Javascript int�grant ma lib que j'embarque dans mon appli)?
Alors l'a �a ce simplifie
si tu as une version r�cente de java tu peux utiliser nashorn JSR 223
si c'est une version plus ancienne il te faut de retourner vers une lib Rhino
dans les deux cas tu embarque un moteur javascript dans ton appli java et tout les objets et classes java charg�es dans ton appli peuvent �tre expos� dans javascript
A+JYT
Je vais regarder cela..Admettons que j'y arrive, la question est apr�s : comment int�grer le nouveau moteur Javascript (int�grant ma lib) dans le WebEngine de javafx (utilis� par WebView), pour qu�il puisse interpr�ter le code des pages HTML?
Nashorn et rhino ont �t� con�u pour �tre int�gr� dans une application java.
Il n'est pas besoin d'int�grer ta lib au moteur TOUT le java de ton appli est accessible depuis le moteur javascript.
Quant au WebEngine de JavaFX il te faudra poser la question dans la section java je ne pense pas que tu trouve ici quelqu'un.
A+JYT
Un grand merci Sekaijin.