Java Applet vs. Browser [SOLVED]

Übersicht Sonstiges Smalltalk

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

Lord Stweccys

Betreff: Java Applet vs. Browser [SOLVED]

BeitragSo, März 20, 2011 17:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallihallo,

Ich habe ein kleines Problem mit Java, in dem ich gerade versuche etwas anständiges hinzubekommen (Applets)
Ich habe mich schon eine Weile mit Flex beschäftigt, was aber mehr als mystisch dokumentiert ist, Java sieht mir
etwas besser aus, also hab ich mich gleich an ein Applet gewagt (Ich hab' schon früher mit Java gearbeitet)

Tja, und jetzt läuft dieses Applet munter in Eclipses Appletviewer, allerdings bleibt im Browser das Applet
weiß. Zu Tode gegoogelt habe ich mich bereits, und nur rausgefunden, dass andere eine Fehlermeldung
bekamen, ich bekomme keine - das Fenster bleibt einfach nur weiß.

Ich hoffe mir kann jemand von euch helfen: http://dl.dropbox.com/u/19817862/javaproblem.zip
  • Zuletzt bearbeitet von Lord Stweccys am Mo, März 21, 2011 19:16, insgesamt einmal bearbeitet

Eingeproggt

BeitragSo, März 20, 2011 17:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Dein Applet läuft bei mir unter IE 6 (ja ich weiß... ich benutze ihn sonst eh nie) und FF 3.6
In Opera 11 krieg ich so wie du beschrieben hast nur weiß zu Gesicht, keine Fehlermeldung (auch nicht in der Fehlerkonsole. Plugins sind übrigens aktiviert... ein von mir geschriebenes Applet läuft auch in Opera bei mir.)

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Lord Stweccys

BeitragSo, März 20, 2011 17:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Also bei mir läuft es nichtmal im Internet-Explorer. Kann es sein, dass es an Java2d liegt?
Das würde allerdings keinen Sinn ergeben, weil Java2D-Demos bei mir funktionieren.

Lord Stweccys

BeitragMo, März 21, 2011 19:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay, es funktioniert jetzt. Ich habe mich auf die nativen Bildladefunktionen beschränkt.
Anscheinend werden Applets so stark eingeschränkt, dass nur die Applet-abgeleiteten Bildladefunktionen
akzeptiert werden.
Zu bewundern hier: http://dl.dropbox.com/u/19817862/test.html
 

MasterK

BeitragDi, März 22, 2011 22:51
Antworten mit Zitat
Benutzer-Profile anzeigen
50% systemlast auf meinem (zugegebenermaßen nicht mehr gerade brandneuem) rechner. Da solltest du dringend noch dran drehen Wink (haha Very Happy )
+++ www.masterk.de.vu +++
Lila FTW!

Lord Stweccys

BeitragMi, März 23, 2011 15:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Huch O_o

Das kann nur schwer sein, ich habe es extra so geschrieben, dass es nicht "zu anspruchsvoll" ist.
Vermutlich liegt es einfach daran, dass die Rotations-Funktion von java.awt Performance zieht.
 

MasterK

BeitragDo, März 24, 2011 20:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Dsa glaube ich eigentlich eher nicht. Aber man kann bei grafischen sachen mit java viel falsch machen, ohne dass einem das auf anhieb bewusst ist. Genaueres lässt sich aber natürlich nur mit code sagen (war der im zip? Ist leider nicht mehr verfügbar).
+++ www.masterk.de.vu +++
Lila FTW!

Lord Stweccys

BeitragFr, März 25, 2011 15:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay. Der Code hat sich mittlerweile geändert, weil ich Sachen ausprobieren wollte.

Code: [AUSKLAPPEN]
import java.applet.Applet;
import java.awt.*;
import java.awt.image.*;
import java.awt.event.*;


@SuppressWarnings("serial")
public class TestMain extends Applet implements MouseMotionListener{
   private Image img;
   private double i;
   private int x=0,y=0;
   private MainThread mthread;
   private BufferedImage bufferimg;
   
   public void start(){
      addMouseMotionListener(this);
      MediaTracker tracker=new MediaTracker(this);
      img=getImage(getCodeBase(),"zwergle.png");
      tracker.addImage(img, 0);
      try{
         tracker.waitForID(0);
      }catch(Exception e){}
      tracker.removeImage(img);
      tracker=null;
      mthread=new MainThread();
      mthread.start();
      bufferimg=new BufferedImage(800,600,java.awt.image.BufferedImage.TYPE_INT_ARGB);
      setCursor(null);
   }
   public void stop(){
      mthread.interrupt();
      mthread=null;
      removeMouseMotionListener(this);
   }
   public void paint(Graphics g){
      Graphics2D g2=(Graphics2D)g;
      Graphics2D buffer=(Graphics2D)bufferimg.getGraphics();
      buffer.setColor(Color.lightGray);
      buffer.fillRect(0,0,800,600);
      buffer.translate(x, y);
      buffer.rotate(-i);
      buffer.translate(-50, -70);
      buffer.drawImage(img,0,0,null);
      g2.drawImage(bufferimg,0,0,null);
   }
   public void update(Graphics g){
      paint(g);
   }
   
   public void mouseDragged(MouseEvent e){
      mouseMoved(e);
   }
   public void mouseMoved(MouseEvent e){
      x=e.getX();
      y=e.getY();
   }
   
   class MainThread extends Thread{
      public void run(){
         while(isInterrupted()==false){
            i=i+0.01;
            if (i>2*3.1415926){
               i=0;
            }
            repaint();
            try{
               sleep(20);
            }catch(Exception e){}
         }
         
      }
   }
}
 

MasterK

BeitragFr, März 25, 2011 20:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah ja, genau wie ich dachte Smile

Es ist vor allem das händisch erzeugte bufferedimage, was da alles in die knie zwingt. Wenn du manuell einen buffer verwenden willst, solltest du VolatileImage benutzen (Component kann das erzeugen) oder aber createCompatibleImage von GraphicsConfiguration. Damit erzeugte images verwenden (sofern verfügbar) mit aktuellem java auch hardwarebeschleunigung. Damit ist selbst auf langsamen rechnern und mit java bordmitteln (Graphics2D) was ansehnliches machbar. Am besten solltest du dann aber natürlich auch swing verwenden.

Du kannst übrigens auch das Graphics, welches an die paint-methode übergeben wird rotieren/skalieren/verschieben bevor du die zeichenoperation ausführst. Spart du dir das umkopieren (man muss aber evtl etwas mehr berechnen was position etc angeht).
+++ www.masterk.de.vu +++
Lila FTW!

Lord Stweccys

BeitragFr, März 25, 2011 20:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke auf jeden Fall für deine wertvollen Tipps^^

Ich werde in nähere Zukunft vermutlich nur noch für die Schule Java verwenden: Javascript
ist einfach irgendwie edler Smile

D2006

Administrator

BeitragFr, März 25, 2011 21:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Shocked

Ich überlege gerade, was ich schrecklicher finde. Dass du Java mit JavaScript gleichsetzt oder dass du letzteres tatsächlich gut, ja sogar besser findest.

*tilt*
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

Lord Stweccys

BeitragFr, März 25, 2011 23:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Äh, ich weiß ja nicht, wie du liest, aber meiner Meinung nach habe ich nicht geschrieben, dass
Java und JavaScript gleich sind, nichtmal zwischen den Zeilen O_o

Für meine Zwecke ist JavaScript (wie ich finde) besser geeignet, außerdem finde ich JavaScript schöner.
Na gut, es ist ein makel, dass es nicht objekt-orientiert ist, aber ich muss mir keine Gedanken über Java-Laufzeitumgebung
machen, Gedanken, ob denn Java für die Plattform verfügbar ist (was ich als großes Problem festgestellt habe),
und schlussendlich läuft JavaScript richtig flott und ist Browser-nativ. Was will man denn mehr?

D2006

Administrator

BeitragSa, März 26, 2011 17:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Hab's nochmal fünf mal durchgelesen und es liest sich immernoch so. Aber wenn du es nicht so meinst, is ja gut. Mir trotzdem unverständlich, wie man JS toll finden kann. Aber so ist das mit dem Geschmack.
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

Starwar

BeitragSa, März 26, 2011 18:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Alleine der Vergleich JavaScript vs Java verbietet sich, da die Anwendungsbereiche ganz andere sind.
Man vergleicht ja auch kein Kleinwagen mit einem Traktor.
MFG
 

MasterK

BeitragSa, März 26, 2011 21:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Nun, wenn die anforderung lautet "anwendung die lokal im browser läuft", dann ist der vergleich java <-> javascript durchaus berechtigt. Aber auch dann ist java schlägt java in meinen augen js um längen. In jeder beziehung. Javascript sollte dafür genutzt werden wofür es gedacht ist: als scriptsprache. Und da ist es super.
+++ www.masterk.de.vu +++
Lila FTW!

Lord Stweccys

BeitragSa, März 26, 2011 23:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Im habe Java und JavaScript nur verglichen in der Hinsicht, was sich besser für meine Zwecke eignet.
Da könnte ich auch vergleichen, ob ich lieber Birnen oder Äpfel essen möchte. Sie sind verschieden.

Ich denke nicht, dass JavaScript (vor allem dank V8) Java in großen Teilen nachsteht.
Ich denke mir, dass JavaScript erstaunliche Möglichkeiten bietet, von der Geschwindigkeit her (J-I-T) mit Java
vergleichbar ist und dazu noch stabiler läuft.

Wenn ich bei einem Java-MMORPG die Map öffnen will, dann stürzt es immer ab. Wenn es in JavaScript geschrieben wäre,
wäre die Wahrscheinlichkeit geringer, dass solche Fehler auftreten: Weil es einfach viele Ansätze von JavaScript gibt.
Das stellt natürlich wiederum einen Nachteil dar.

Ich würde Java nur für Applets verwenden und wenn JavaScriptähnliches auch beherrscht und dazu noch browsernativ ist,
was soll denn dagegen sprechen?

Starwar

BeitragSo, März 27, 2011 14:51
Antworten mit Zitat
Benutzer-Profile anzeigen
Ein MMORPG in JavaScript? Dazu ist die Sprache sicherlich nicht geeignet.
Klar ermöglicht die Sprache Clientseitig-interaktive-Webanwendungen und das auf neueren Browsern sogar schnell. JS hat den reisen Vorteil, dass es sich nahtlos in die gesamte Seite einbindet.
Aber deine Theorie, dass JavaScript weniger Abstürzen würde musst du mir erklären. Wenn der Code falsch ist ist er falsch, egal ob in JS oder Java.
Außerdem muss mir einer erstmal ein besseres Exception-Handling als das von Java zeigen.
MFG

Lord Stweccys

BeitragSo, März 27, 2011 15:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn JavaScript-Code ungültigt ist, wird er einfach nicht ausgeführt. Ich habe hier
in Chrome noch nie erlebt, dass JavaScript meinen Browser abschießt.
Allerdings erlebe ich es verdammt häufig, dass Java abstürzt und meinen Browser mitreißt.
Java dürfte doch eig. gar nicht abstüzen, oder? Das ist doch ein klares Merkmal für eine Sicherheitslücke.
(Bevor hier jemand fragt: Mein PC ist mit sehr sehr hoher wahrscheinlichkeit virenfrei (Desinfect) und das
neueste Java besitze ich auch)

EDIT: Trotz meines Wehrens, stimme ich euren restlichen Argumenten zu. Ich hab nur das Gefühl, das
Java langsam etwas "älter" ist und JavaScript mal richtig durchstarten sollte.

Starwar

BeitragSo, März 27, 2011 18:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Stop!
Java wird in der Java-VM ausgeführt. Der Quelltext wird in Bytecode kompiliert. Dieser wird dann von der VM ausgeführt.
JavaScript ist eine Scriptsprache. Der Browser interpretiert sie.

Die Entscheidung welche Sprache du nimmst ist einfach: Was willst du tun?
Wenn du einen Treber programmieren willst nimmst du C. Wenn du ein Spiel programmieren willst nimmst du Blitz.
Wenn du in deine Webseite interaktive Elemente einbauen willst (Stichwort Webanwendungen, aber da muss auch Serverseitig was kommen, und das wird nicht in JS geschrieben sein) dann nehm' JavaScript. Wenn du eine (Client-)Anwendung (die nicht im Browser läuft) entwickeln willst nehm' Java.
Nur meine nicht, dass Applets das einzige sind was Java kann. Die sind meiner Meinung nach eher eine Nebensache.
MFG

Lord Stweccys

BeitragSo, März 27, 2011 19:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Natürlich verstehe ich, dass Java nicht nur auf Applets beschränkt ist.
Aber ich verstehe langsam nicht mehr, warum ich bei Browserspielen auf
JS verzichten soll, wo es doch tolle Funktionen wie Canvas und ähnliches bereits hält.
Außerdem kann man mit Monkey auch Spiele für JS exportieren, soll man das dann einfach nicht machen,
obwohl es geht? ô_O

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht Sonstiges Smalltalk

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group