Re: Strange behaviour of applet running under Opera



Trung Chinh Nguyen wrote:

I was writing an applet for a challenge site and some people there
reported that the applet displayed different results when run under
Firefox and Opera. I wrote another one basing on the same applet for
testing and the results were different again.

That was a very good test that you put together. Sadly, despite that, I can't
tell you what's going wrong for sure, but I can fill in some of the details,
which may help you to find out more.

The problem seems to be to do with the fact that Opera uses its own Java
plug-in implementation, whereas Firefox uses the plug-in from Sun. In both
cases, they use the same underlying JVM implementation (1.5.0_o6-b05 on my
machine), but I assume that Opera /uses/ that JVM in a significantly different
way (different security manager and so on).

In particular it uses its own subclass of java.net.HttpUrlConnection whereas it
the Sun plug-in uses the implementation class
sun.net.www.protocol.http.HttpUrlConnection (which is a subclass of
java.net.HttpUrlConnection which is private to Sun). You can verify that by
adding a call to dumpStatus(conn); to your connect() method, where that is
defined as:

=============
private void
dumpStatus(URLConnection conn)
{
StringBuilder b = new StringBuilder();
b.append("<html><br>");
b.append(conn);
Class c = conn.getClass();
while (c != null)
{
b.append("<br>class: ");
b.append(c);
c = c.getSuperclass();
}
b.append("</html>");
JOptionPane.showMessageDialog(
null,
b.toString(),
"Connection",
JOptionPane.INFORMATION_MESSAGE);
}

=============

If you capture the network traffic (use Ethereal or similar) then you'll see
that when Firefox runs the applet the request for the PHP page looks like (with
some irrelevant stuff removed):
=============
GET /strange/test.php HTTP/1.1
test: test
User-Agent: Mozilla/4.0 (Windows XP 5.1) Java/1.5.0_06
Host: chinhnt2k3.t35.com

=============

But when you do the same thing with Opera 8.52 (I used a completely brand new
installation of Opera -- the very first URL if ever downloaded on this machine
was your test !) you see something like:
=============
GET /strange/test.php HTTP/1.1
User-Agent: Opera/8.52 (Windows NT 5.1; U; en)
Host: chinhnt2k3.t35.com

=============

So your custom
test: test
header isn't being added to the request. I believe that the Opera
implementation of HttpUrlConnection is broken in that it doesn't honour
setRequestProperty(). It looks as if the only property it allows you to set is
"Content-length", all other requests being ignored /silently/. It also does
not respect the behaviour of the superclass implementation which throws an
exception if you try to use setRequestProperty() after the connection has been
connect()-ed.

(If that's typical of Opera coding standards in general then I doubt whether
Opera is going to stay installed on my machine for very long -- I've been
meaning to try it out for a while, but this is a very bad introduction...)

-- chris


.



Relevant Pages

  • Re: Something cool in Nimbus
    ... On Sun, 10 Aug 2008 17:36:08 GMT, Roedy Green ... As an applet there are no bars, ... The new version of Java 1.6.0_10 RC is very flaky on Opera and IE. ...
    (comp.lang.java.gui)
  • Re: Problem with applets with Opera browser
    ... Internet Explorer (the applet is loaded there). ... Nothing appears in the Opera Java Console. ... Post a link for the applet that loads in Internet Explorer and I will let ... It is fine for the vast majority of websites and those few that don't work are usually due to bad HTML rather than deficiencies in Opera. ...
    (comp.lang.java.programmer)
  • Re: Problem with applets with Opera browser
    ... Internet Explorer (the applet is loaded there). ... Nothing appears in the Opera Java Console. ... Post a link for the applet that loads in Internet Explorer and I will let ...
    (comp.lang.java.programmer)
  • Re: Problem with applets with Opera browser
    ... Internet Explorer (the applet is loaded there). ... Nothing appears in the Opera Java Console. ... Post a link for the applet that loads in Internet Explorer and I will ... those few that don't work are usually due to bad HTML rather than ...
    (comp.lang.java.programmer)
  • Problem with Opera & OGG Vorbis SPI
    ... I am creating an applet which should stream OGG/Vorbis file. ... I use Vorbis SPI to decode Vorbis. ... Under Opera 9 it does not work, it seems that opera does not load the SPI. ...
    (comp.lang.java.programmer)