2009-08-12 14 views
3

Ich bin ein Java-Programmierer und ich wollte damit Apps für das iPhone schreiben. Ich fing an zu recherchieren und fand mich selbst bei xmlvm..das alles gut, aber dann hat xmlvm eine HelloWorld.java mit einigen UIWindow-Klassen, die ich nicht finden kann und nicht kompilieren kann. Kurz gesagt, wo ist die API für Java, damit ich xmlvm's HelloWorld.java für das iPhone kompilieren kann. Hier ist der Code: und ich habe bereits xmlvm mit ant kompiliert und habe xmlvm.jar in meinem Klassenpfad so ??Gibt es eine Cocoa oder Objective C API für Java?

import org.xmlvm.iphone.*; 

public class HelloWorld extends UIApplication { 

    public void applicationDidFinishLaunching(UIApplication app) { 
     UIScreen screen = UIScreen.mainScreen(); 
     CGRect rect = screen.applicationFrame(); 
     UIWindow window = new UIWindow(rect); 

     rect.origin.x = rect.origin.y = 0; 
     UIView mainView = new UIView(rect); 
     window.addSubview(mainView); 

     UILabel title = new UILabel(rect); 
     title.setText("Hello World!"); 
     title.setTextAlignment(UITextAlignment.UITextAlignmentCenter); 
     mainView.addSubview(title); 

     window.makeKeyAndVisible(); 
    } 

    public static void main(String[] args) { 
     UIApplication.main(args, HelloWorld.class); 
    } 

} 
+0

Lernen Sie einfach Objective-C. Abgesehen davon, dass man sich mit dem Speicherverwaltungskonzept herumschlagen musste, brauchte ich ein paar Tage, um die Syntax gut zu verstehen. – bpapa

+0

Ist die Speicherverwaltung, wovon sie sprechen auf dieser Seite zum Thema: [Automatische Referenzzählung ] [1] [1]: https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language /AutomaticReferenceCounting.html#//apple_ref/doc/uid/TP40014097-CH20-ID48 – nyxee

Antwort

3

Es gibt keine Java VM auf dem iPhone - xmlvm müssen den Java-Code in eine ausführbare Datei für das Telefon-Kreuz kompilieren.

edit 1: das sagte aus Java kommend, finden Sie möglicherweise nicht Ziel-C so viel von einem Schock zu migrieren. Ich brauchte ein paar Monate, um es aus Java und C/C++ zu lernen - die meisten Bücher über die Programmierung von iPhones (z. B. die des pragmatischen Programmierers) geben auch ein wenig Hintergrundwissen über die Sprache, um Ihnen den Einstieg zu erleichtern. Es ist eine Lernkurve, aber letztlich vermute ich viel weniger frustrierend, wie es die erstklassige Sprache auf dem Telefon und gut unterstützt von Tools und Dokumentation usw.

bearbeiten 2: Aus einem Blick auf die Webseite sieht es wie aus xmlvm produziert ist eigentlich objective-C, verbunden mit einem nativen xvmlm-Support-Framework. Ich nehme an, der nächste Schritt besteht darin, die Ziel-C-Ausgabe zu kompilieren, mit welcher Toolchain auch immer - wahrscheinlich xcode, aber wenn nicht, dann gcc-toolchain. Jedenfalls wird das Endergebnis eine native ausführbare Datei sein, nicht Java Bytecode. Sie installieren das genauso wie jede ausführbare Datei, die Sie aus objective-C erstellen.

+0

Ich habe es andersherum gemacht und Java ziemlich einfach gefunden, weil ich Obj-C benutzt habe. Natürlich kannte ich auch C++, was bei der Syntax half. – Robin

0

Sieht aus wie diese Frage vor 5 Monaten veröffentlicht wurde, so könnte es zu spät sein - aber ich importierte diese HelloWorld.java Datei in NetBeans und dann die xmlvm.jar meine Bibliothek Pfad hinzugefügt - bald zu sehen, dass

CGRect rect = screen.applicationFrame(); 

und

title.setTextAlignment(UITextAlignment.UITextAlignmentCenter); 

waren gebrochen. Zum Glück NetBeans' auto-complete sagte mir, um den ersten zu ändern

CGRect rect = screen.getApplicationFrame(); 

und der zweite auf:

title.setTextAlignment(UITextAlignment.Center); 

ich das NetBeans-Projekt ohne Fehler zu kompilieren weitergegangen. xmlvm kompilierte meinen resultierenden Byte-Code (.class-Dateien) zu einer iPhone/XCode-App, aber dann konnte ich THAT wegen Inkonsistenzen im automatisch generierten Code nicht kompilieren.

XMLVM sieht wie ein großes Projekt aus, das sehr vielversprechend ist, aber da sie ihren Code ständig aktualisieren, fällt ihre Dokumentation zurück, was zu dem ersten Missgeschick führt.

Ich habe keine logische Erklärung für die zweite.

0

Ich weiß, das ist nicht genau das, was Sie gefragt haben, aber Sie könnten sich die GWT ansehen. Es macht Ihre App webbasiert (was es aus dem Laden hält, und deshalb sind die meisten Leute nicht interessiert, weil sie nicht dieses süße iStore-Geld verdienen können), aber es erlaubt Ihnen, für Web-Clients in einer sehr natürlichen Java-Sprache zu programmieren- - Sie können den Umgang mit "Web" -Protokollen vermeiden, wenn Sie dies wünschen.

Verwandte Themen