Do not use on any
shared computer
August 30, 2008 05:20am pdt
 
[x]
Attachment Details

How can my Java/C++ hybrid applet retrieve data efficiently via HTTP with caching?

Tags: Sun, Java, 1.6, applet using JNI and C++ needs to retrieve data via HTTP with caching, Java, C++, Javascript, Firefox 2, Internet Explorer 7
I'm converting a legacy C++ interactive Win32/OpenGL app into a browser plugin for Firefox and IE.  The initial plan was to use the NPAPI, then use the pluginhostctrl to wrap it as an ActiveX control for IE.  That plan fell flat because some features of the newer npruntime API were needed, and pluginhostctrl didn't support npruntime.  Then I looked at doing a native ActiveX version of the plugin, but the MS paradigm was too alien for me.  I ran away, screaming.

Now I've decided to try turning the plugin into a Java applet using JNI.  (Nice because it works in FF and IE.)  I've worked through the native window issues and figured out applet signing, but now I find myself stymied by the one piece of browser technology I thought was going to be most helpful: the asynchronous fetching and caching of files from a server.

The plugin needs to be able to retrieve and progressively display potentially large amounts of data retrievable in several-megabyte-sized units from an HTTP server.  It is important to be able to issue multiple simultaneous requests for data.  Likewise, it is important that client-side caching be employed, since data may be loaded into the display multiple times as it goes in and out of view.

My question is:  How can I implement the data retrieval conveniently, but without completely throwing performance out the window?  I can think of 3 options:  1) Use Javascript and XMLHttpRequest and the browser's built-in cache to get the data (but then how do I efficiently pass it to C++?); 2) Use Java and HTTPUrlConnection to get the data (but is it cached, and how do I efficiently pass it to C++?); or 3) Use C++ and something like curl to get the data (but then I have to implement my own cache).  Perhaps there is even a fourth option where C++ somehow talks directly to Javascript, if that's even possible.

Thanks!
Start your free trial to view this solution
[x]
The Solution Rating System

With so many solutions, how can you tell which solutions are most likely to help you and which ones are not? To provide you with a tool to use, we rate our solutions based on various elements that most accurately determine if a solution is a quality solution. To explain what factors affect the solution rating, here are the elements we take into consideration when formulating our solution rating.

  • The Grade of the Solution
  • The Zone Rank of the Expert Providing the Solution
  • The Number of Author and Expert Comments
  • The Number of Experts Contributing
  • The Feedback of the Community

Your Input Matters
Because of the way the system is set up, the most important variable in this equation is you. As a member of Experts Exchange, you are able to cast your vote on the quality of the solutions in regard to how complete, accurate, helpful and easy to understand each solution is. When you provide your feedback, each rating is adjusted accordingly. So, if you see a solution that has a poor rating that you think is a good solution, let us know by rating it. As you do, the rating will be adjusted and will become more accurate for other members of our site.

If you have any suggestions that you would like to make for our rating system, please ask a question in the Suggestions Zone of Community Support.

Thank you!

Question Stats
Zone: Programming
Question Asked By: plwe
Solution Provided By: objects
Participating Experts: 1
Solution Grade: A
Views: 0
Translate:
Loading Advertisement...
 
[+][-]Expert Comment by objects

Rank: Genius

Expert Comment by objects:

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
 
[+][-]Author Comment by plwe
Author Comment by plwe:

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
 
[+][-]Expert Comment by objects

Rank: Genius

Expert Comment by objects:

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
 
[+][-]Expert Comment by objects

Rank: Genius

Expert Comment by objects:

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
 
[+][-]Author Comment by plwe
Author Comment by plwe:

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
 
[+][-]Expert Comment by objects

Rank: Genius

Expert Comment by objects:

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
 
[+][-]Author Comment by plwe
Author Comment by plwe:

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
 
[+][-]Expert Comment by objects

Rank: Genius

Expert Comment by objects:

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
 
[+][-]Author Comment by plwe
Author Comment by plwe:

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
 
[+][-]Accepted Solution by objects

Rank: Genius

Accepted Solution by objects:

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
 
[+][-]Author Comment by plwe
Author Comment by plwe:

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
 
Loading Advertisement...
20080723-EE-VQP-34 / EE_QW_2_20070628