Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有针对Java的Cocoa或Objective C api?_Java_Iphone - Fatal编程技术网

是否有针对Java的Cocoa或Objective C api?

是否有针对Java的Cocoa或Objective C api?,java,iphone,Java,Iphone,我是一名Java程序员,我想开始编写Iphone应用程序。我开始研究并发现自己正在研究xmlvm..这一切都很好,但后来xmlvm有一个HelloWorld.java,其中包含一些UIWindow类,我找不到也无法编译。简而言之,Java的api在哪里,因此我可以为Iphone编译xmlvm的HelloWorld.Java。代码如下:我已经用ant编译了xmlvm,并且在我的类路径中有xmlvm.jar,所以 import org.xmlvm.iphone.*; public class He

我是一名Java程序员,我想开始编写Iphone应用程序。我开始研究并发现自己正在研究xmlvm..这一切都很好,但后来xmlvm有一个HelloWorld.java,其中包含一些UIWindow类,我找不到也无法编译。简而言之,Java的api在哪里,因此我可以为Iphone编译xmlvm的HelloWorld.Java。代码如下:我已经用ant编译了xmlvm,并且在我的类路径中有xmlvm.jar,所以

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);
    }

}

iphone上没有java虚拟机-xmlvm必须将java代码交叉编译为手机的可执行文件

编辑1:也就是说,来自Java的objective-C可能不会给您带来那么大的冲击。我花了几个月的时间从Java和C/C++学习它——大多数关于iphone编程的书籍(例如《实用程序员的一本》)也提供了一些关于该语言的背景知识,让您开始学习。这是一个学习曲线,但最终我怀疑它没有那么令人沮丧,因为它是手机上的第一流语言,并且得到了工具和文档等的良好支持


编辑2:从网页上看,xmlvm产生的东西实际上是objective-C,与原生xvmlm支持框架相链接。我假设下一步是使用您拥有的任何工具链编译objective-C输出-可能是xcode,但如果不是,则使用一些gcc工具链。无论如何,最终结果将是一个本机可执行文件,而不是java字节码。您将安装它,就像从objective-C构建的任何可执行文件一样。

看起来这个问题是5个月前发布的,所以可能太晚了-但我将这个HelloWorld.java文件导入到NetBeans中,然后将xmlvm.jar添加到我的库路径中-很快就会看到这一点

CGRect rect = screen.applicationFrame();

我们都坏了。 谢天谢地,NetBeans的autocomplete告诉我将第一个更改为

CGRect rect = screen.getApplicationFrame();
第二项是:

title.setTextAlignment(UITextAlignment.Center);
然后,我继续编译NetBeans项目,没有出错。 xmlvm将生成的字节码(.class文件)编译到一个iPhone/XCode应用程序中,但由于自动生成的代码中存在不一致性,因此无法编译

XMLVM看起来是一个非常有前途的伟大项目,但随着他们不断更新代码,他们的文档也落后了,导致了第一次灾难


我对第二个问题没有合乎逻辑的解释。

我知道这并不是你所要求的,但是你可以看看GWT。它使你的应用程序基于网络(这使它远离商店,因此大多数人对它不感兴趣,因为他们不可能赚到这么多钱),但它允许你用一种非常自然的java语言为web客户端编程——你可以避免处理“web”如果你选择的话,我就用另一种方法来做。

我发现学习java很容易,因为我使用的是Obj-C。当然,我也熟悉C++,这有助于语法。只学习Objtovi.C。在你的脑子里,除了记忆管理概念外,我花了几天时间来处理好。语法。内存管理是他们在本页上讨论的内容:[自动引用计数][1][1]:
title.setTextAlignment(UITextAlignment.Center);