Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.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编程到iPhone应用程序有多大的转变?_Java_Iphone - Fatal编程技术网

将Java编程到iPhone应用程序有多大的转变?

将Java编程到iPhone应用程序有多大的转变?,java,iphone,Java,Iphone,我是一名非常熟练的Java开发人员,正在考虑学习iPhone开发。撇开Mac-only-dev方面不谈,学习移动应用程序堆栈会有多大的飞跃?当然,我知道它在如何处理它方面更接近C,随之而来的是内存管理等等 我的问题还包括 OOP/OOAD的支持程度如何 是否有一些API支持单元测试 我鼓励那些回答问题的人引用外部站点和参考来帮助详细阐述细节Objective-C是一种面向对象的语言,因此,就OOP而言,几乎可以用Java做的任何事情都可以用Obj-C做 我对它没有任何经验,但这里至少有一个关于O

我是一名非常熟练的Java开发人员,正在考虑学习iPhone开发。撇开Mac-only-dev方面不谈,学习移动应用程序堆栈会有多大的飞跃?当然,我知道它在如何处理它方面更接近C,随之而来的是内存管理等等

我的问题还包括

  • OOP/OOAD的支持程度如何
  • 是否有一些API支持单元测试
    我鼓励那些回答问题的人引用外部站点和参考来帮助详细阐述细节

    Objective-C是一种面向对象的语言,因此,就OOP而言,几乎可以用Java做的任何事情都可以用Obj-C做

    我对它没有任何经验,但这里至少有一个关于OCUnit的资源,objective-c相当于JUnit:

    我在转换过程中遇到的最大问题肯定是内存管理方面。学习语法和API非常简单,但是没有GC的话,生活会很艰难


    编辑:哦,是的,第二大问题是XCode,用于Mac/iPhone开发的IDE。重构支持是最小的,我发现在文件之间导航很痛苦。预计这也会让您的速度慢一些。

    开发语言是Objective-C,它是纯C语言,顶部有一个非常薄的对象包装器。他们的语法有点奇怪,但是一旦你知道了C的消息,我就很容易理解了。我自己有一个坚实的C背景,只在一两个月前开始拾取ObjuleC,但是我发现它确实很令人高兴——比C++更重要。 如果只编写Java代码,那么将遇到的困难是指针和内存管理。内存管理在概念上并不难,因为它只是(!)一个跟踪分配和发布内容的问题,而且XCode似乎提供了检测泄漏的好工具(尽管我还没有愤怒地使用这些工具)-由于iPhone程序相对较小,这不像编写大系统程序那样困难。您可能遇到的主要概念上的困难是,在指针被广泛使用时(就像在几乎每行代码中一样),您需要完全理解这些指针。Joel在播客中反复出现的一个主题是一些程序员使用指针时遇到的困难,因此我建议您仔细考虑,并可能选择一本好书——也许是原始的K&R

    有人可能想纠正我,但是尽管COAPAPI看起来很好,但是在框架之外(类似C++或java)的图书馆似乎很少。例如,我必须添加自己的队列和堆栈类——尽管NSMutableArray使这非常容易


    总而言之,尽管我肯定发现它是我用了一段时间的最有趣的平台之一。

    好吧,Java是基于Objective C和Smalltalk的,这是面向对象的语言。最大的问题是语法(它不完全是C语言,如C++和java),指针和手动内存管理。 这是基于一些非常古老的Objective C知识,但我确实知道,当我从Objective C切换到Java(大约2000年)时,这非常容易,因为基本概念非常接近


    我不会说我是任何语言的专家,但我能胜任一些语言。我最近写的大部分代码都是“企业”类型的东西

    假设您可以轻松地学习新的API和语言,我发现最大的区别在于iPhone在CPU性能和可用内存方面的限制。我非常习惯于为了更好的性能而牺牲一点内存——几乎是无意识的——或者有点浪费,因为我有八个内核可供使用。在iPhone上这真是个糟糕的主意

    另一件困难的事情是确保它是iPhone-y。制作一个好的应用程序不仅仅是缩小GUI的大小,你还需要考虑有效地展示数据


    技术方面几乎都是分类的。单元测试端不如Java端先进。另一方面,我发现在Objective C中,我的效率比Java高很多,也不容易出错,这可能是因为对象模型非常不同(您倾向于委托而不是继承)。

    几个月前,我是一名Java web程序员,从大学起就没有接触过C。现在我已经完成了一个iPhone应用程序(为了我的日常工作,卡在那里的官僚机构中,所以它还没有在应用商店中),我的第二个应用程序即将完成

    要回答您的问题,最大的障碍是理解约定(委托模式、类别等),掌握内存管理,以及使用XCode(一个很好的IDE,但绝对落后于Eclipse和IntelliJ)

    我还认为苹果开发者中心网站上的文档编写得很好,一个好的开发者可以快速启动并运行


    为了更具体地回答你的问题,我还没有尝试过单元测试,但我认为OOP很棒——我的iPhone应用程序中的域对象与我用Java编写的域对象一样健壮和强大。

    对于单元测试,有几个选项,上面链接了OCUnit。还有

    objective-c中的OOP很好,相当干净。您有时也会遇到老式的C函数

    所使用的API称为Cocoa Touch,它是基于从NextStep构建的Cocoa构建的,因此在设计和改进方面有着悠久的历史

    iPhone上没有垃圾收集功能。黄金法则是“如果你允许,那么你就释放”。关于内存管理有很多问题,所以我不在这里详细讨论

    主要障碍是设计/架构差异。iPhone应用程序和java应用程序a