2 Stimmen

java auf allen Plattformen

Wenn Sie eine Desktop-Anwendung in Java für Windows, Mac und Linux programmieren wollen, wird der Code dann für alle gleich sein?

und Sie ändern einfach die grafische Benutzeroberfläche so, dass die Windows-Anwendung Windows-ähnlicher wird und so weiter?

wie funktioniert es, ohne ins Detail zu gehen?

1voto

Dan Rosenstark Punkte 66285

Früher hieß es, dass Swing auf verschiedenen Plattformen keine nativen Ergebnisse liefert. Anscheinend hat sich das geändert, und Swing ist jetzt nahezu perfekt. Los Swing! Das sind großartige Neuigkeiten für diejenigen unter uns, die Java (und Groovy! und JRuby!) lieben. Dies könnte vorzeitig aber es ist in Arbeit.

Java wird gut funktionieren, und Sie werden in der Lage sein, einmal für die VM zu schreiben und zu kompilieren. Allerdings müssen Sie Ihre Anwendung für jede Plattform anders verpacken, wenn Sie wollen, dass der Benutzer nicht java -jar app.jar . Unter OSX müssen Sie eine .app erstellen (sehr einfach) und auch für Windows und Linux gibt es viele Startoptionen. Auch Java WebStart ist eine weitere Möglichkeit.

Ich hoffe, das hilft.

Bearbeiten: Damit Ihr Swing unter OSX funktioniert und nativ erscheint, sind einige zusätzliche Schritte erforderlich. Siehe これ .

1voto

Pete Kirkham Punkte 47746

Wenn Sie Ihre Anwendung in drei verschiedene Schichten unterteilen:

  • Logik
  • Präsentation (wenn es sich um eine grafische Anwendung handelt, wird Java2D oder ein gleichwertiges Programm verwendet)
  • Interaktion - Schaltflächen, Menüs, Dialoge, usw.

Dann können Sie denselben Code für alle drei Plattformen verwenden, aber er wird sich nur auf einer von ihnen "richtig" anfühlen. Normalerweise ändern sich die Logik und die Darstellung nicht, aber die Interaktion muss sich ändern, wenn die Java-Anwendung die nativen Anwendungen nachahmen soll.

Unter OS X befindet sich das Menü beispielsweise standardmäßig am oberen Rand des Bildschirms, während es unter Windows und Gnome standardmäßig am oberen Rand des Fensters angeordnet ist. Gnome hat normalerweise die Anwendungseigenschaften unter Bearbeiten, Windows unter Windows und OS X unter dem Apfelsymbol (oder so ähnlich), so dass die Details der Menüs nicht die gleichen sein sollten. Jedes System hat andere Layout- und Schriftregeln, von denen nur einige von Swing nativ implementiert werden, um das Look-and-Feel nachzuahmen.

Eine andere Möglichkeit ist die Erstellung einer Webanwendung, die einen Großteil der Variationen beseitigt - Sie haben keine Fenster, Menüs und Dialoge, da solche Schaltflächen vom Browser bereitgestellt werden und somit nicht Ihr Problem sind, und die Benutzer erwarten kein plattformspezifisches Verhalten von Webanwendungen.

1voto

Bill K Punkte 61074

Zusammenfassend lässt sich sagen, dass Java im Allgemeinen einmal geschrieben und überall ausgeführt werden kann. Es wird "gehäutet", um sich an die Plattform anzupassen. Sie müssen allerdings auf Hardware-Informationen wie die Bildschirmgröße achten, wenn Sie erwarten, dass es auf einem Telefon funktioniert.

Beachten Sie, dass es auch auf Kabelboxen laufen wird - ich arbeite an einigen dieser Dinge.

Selbst Interaktionen mit plattformspezifischen Elementen finden sich oft in derselben Codebasis - wenn Sie also eine Bibliothek haben, die das Vorhandensein der Windows-Symbolleiste erkennt, könnten Sie sie erkennen und unterstützen, wenn sie verfügbar ist, aber der Code würde sie auf einem Mac einfach nicht erkennen (oder könnte eine andere Bibliothek verwenden).

Ein kompetenter Ingenieur würde jedoch nicht für eine andere Plattform neu kompilieren müssen.

0voto

Jay Punkte 26044

Ich arbeite derzeit an einer Webanwendung, bei der wir die Entwicklung routinemäßig unter Windows durchführen, die Tests und die Produktion jedoch unter Linux. In der Vergangenheit habe ich GUI-Anwendungen geschrieben, bei denen derselbe Code sowohl unter Windows als auch unter Linux lief. Ich habe noch nie mit Java auf einem Mac gearbeitet, aber ich nehme an, dass es sich dort genauso gut portieren lässt wie zwischen Windows und Linux.

Das Schöne an Java ist, dass man zu 90 % der Zeit nicht einmal darüber nachdenken muss. Sie schreiben einfach Code, der auf der Plattform funktioniert, auf der Sie entwickeln, und er wird auf magische Weise portiert.

Das Einzige, was für mich regelmäßig ein Problem ist, ist die Arbeit mit Dateien. Es gibt einige Funktionen in Java, die dabei helfen, aber manchmal muss man einen Umweg in Kauf nehmen, um sie zu nutzen. Zum Beispiel sind die Dateinamen anders: Unter Windows gibt es einen Laufwerksspezifizierer (z. B. "C:"), unter Linux nicht, und unter Windows trennt man Verzeichnisnamen mit Backslashes, während man sie unter Linux mit Schrägstrichen trennt. Es gibt Funktionen, mit denen Sie dies mit generischem Code handhaben können, aber manchmal ist das sehr mühsam. Und so weiter.

Wenn Sie bestimmte Schriftarten verwenden möchten, werden Sie auf den verschiedenen Plattformen nicht die gleichen Schriftarten finden. Aber Sie können sich nicht darauf verlassen, dass Sie bestimmte Schriftarten auf verschiedenen Rechnern mit demselben Betriebssystem finden. Wenn Sie bestimmte Schriftarten verwenden wollen, müssen Sie wirklich prüfen, welche Schriftarten auf dem Rechner verfügbar sind, und den Benutzer die gewünschte Schriftart auswählen lassen oder das Programm die Eigenschaften der Schriftart untersuchen lassen, um eine auszuwählen.

Mir fällt kaum etwas anderes ein, was für mich ein Problem war. Ich bin sicher, wenn Sie versuchen, können Sie mit Dingen zu brechen auf dem einen oder dem anderen kommen, aber das sind die einzigen Dinge, die ich jemals in laufen, ohne für Ärger suchen erinnern.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X