2009-05-15 4 views

Antwort

3

Der J2ME Code, den Sie in Bezug auf die Laufzeit und die Klassen benötigt eine bestimmte Umgebung auf dem Handy schreiben, die ihm zugänglich sind. Je nachdem, was Sie in Ihrer Anwendung verwenden, können Sie es auf einigen Telefonen ausführen und es funktioniert nicht auf anderen. Für z.B. sagen wir Ihnen eine J2ME-Anwendung, die MIDP 2.0 und CDLC 1.1 verwendet. Jetzt funktioniert Ihre App nur auf Telefonen, die diese Profile unterstützen.

Normalerweise zielen Sie beim Schreiben von Mobiltelefonanwendungen auf ein bestimmtes Segment von Mobiltelefonen ab. Sie erwarten nicht, dass eine Acceleratometer Anwendung auf Handys funktioniert, die kein Acceleratometer haben! (Ich glaube nicht, dass J2ME irgendeine Unterstützung für Accelerometer hat;))

+1

Das ist nicht der Fall; siehe die Sensor-API (JSR 256). http://jcp.org/en/jsr/detail?id=256 – funkybro

+0

Ich hatte kein JSR dafür. Wie auch immer, der Punkt, den ich vermitteln wollte, ist, dass Sie Ihre Handys aufgrund ihrer Fähigkeiten und Ihrer Anwendungsanforderungen ansprechen. – Prashast

5

Sie werden Unterschiede feststellen, wie jeder Anbieter seine JVM implementiert hat. Da die Hardware jedes Telefons anders ist, funktionieren sie alle etwas anders. Die meisten Sachen werden funktionieren, aber es könnte einige Unterschiede geben.

1

Weder J2ME noch .NET Compact Framework sind allgegenwärtig, obwohl J2ME auf einer beeindruckenden Anzahl von Telefonen unterstützt wird. Sie können nur auf Telefonen laufen, die sie unterstützen. In beiden Fällen können Sie also einmal schreiben und ausführen, wo immer die Plattform/das Framework unterstützt wird.

2

Ja, Sie können Ihre Midlets auf allen Java-unterstützten Telefonen ausführen.

Aber wenn es um J2ME-Codierung kommt, der Slogan "einmal schreiben, überall ausführen" wird

"einmal schreiben, schreiben überall"

oder

"write once, debug überall"

+2

Ich bevorzuge die etwas optimistischere (und möglicherweise machbare) Version: "schreibe einmal, teste überall" :) – Martin

5

Mehrere Bereiche, die von Fragmentierung leiden:

  • Wenn Sie nur grundlegende GUI-Steuerelemente verwenden, sieht Ihre Anwendung möglicherweise von einem Telefon zum nächsten etwas anders aus. Wenn Sie nicht müssen, müssen Sie Code schreiben, der verschiedene Bildschirmgrößen und Eingabemethoden behandelt (Tastatur oder Touchscreen).

  • Die Hersteller neigen dazu, die Spezifikationen für Multimedia und Netzwerke unterschiedlich zu interpretieren oder einfach Telefone mit Fehlern zu versenden. Einige Mobilfunknetzbetreiber erlauben nur HTTP-Netzwerkverkehr.

  • Die Sicherheitsrichtlinien, die den Dateisystemzugriff regeln, unterscheiden sich von Telefon zu Telefon. RMS-Datensätze können bei einigen Telefonen in der Größe begrenzt sein.

  • Die Leistung variiert stark von einem Telefon zum nächsten.

...

2

Zunächst möchte ich sagen, dass die meisten Kommentare hier wahr sind, verschiedene JVMs können tatsächlich etwas anders funktionieren und Sie sollten sich an APIs erinnern du benutzt.

Es gibt jedoch eine weitere Überlegung, die berücksichtigt werden sollte: Standardisierung.Ich meine solche Dinge wie Mobile Services Architecture (MSA - JSR 248), sie sehr vereinfachen Dinge, indem Sie einige Standard-Sätze von APIs erstellen. Darüber hinaus enthalten sie einige Erläuterungen zu den enthaltenen APIs und Regeln zu ihrer Implementierung.

Auch solche Dinge wie MIDP 2.1 sind verschärfte standarts. 2.1 Verison ist im Grunde 2.0, aber mit "verschärften Schrauben": strengere Regeln, die einige Aspekte klarstellen und mögliche Fragmentierung beseitigen. Zum Beispiel ist es erforderlich, in jedem Fall eine doppelte Pufferung vorzusehen oder einen Touchscreen in Java zu unterstützen, wenn ein Gerät einen solchen hat.

Ich sollte daraus schließen, dass die Fragmentierung wirklich abnimmt, Hersteller nehmen Standards wie JSR 248 an. Aber testen Sie Ihre Anwendungen so oft wie nötig, wir sind alle Menschen und JVM-Entwickler machen auch Fehler und lassen Fehler ihr Code.