将Java编程到iPhone应用程序的过渡有多少?

我是一个非常熟练的Java开发人员,正在考虑学习iPhone开发。 Mac除了方面之外,学习移动应用程序堆栈有多大的飞跃? 当然我理解它更接近于C应该如何接近它,并且随之而来的是内存管理等等。

我的疑问还包括

  1. OOP / OOAD的支持程度如何?
  2. 是否有一些API可以进行unit testing?

我鼓励那些回答引用外部网站和引用的人帮助详细说明细节

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

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

我还认为Apple开发人员中心网站上的文档写得很好,一个优秀的开发人员可以快速启动和运行。

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

我作为Java开发人员大学gradle。 我的第一个(真正的)工作是Mac开发。 从我所知道的语言(我的出发点是Java)过渡到类似Objective-C的语言是相当容易的,代码方面的。 为了最大限度地利用开发iPhone / Mac应用程序的时间,您必须使用XCode和Interface Builder。 一旦你掌握了连接事件和GUIsockets(你的UI想要与之通信的对象),你将被设置为正常的iPhone应用程序开发。

以下是我通过Java背景学习Objective-C(用于iPhone开发的编程语言)的步骤:

  1. 学习基于OC面向对象的基本概念。 子类化(inheritance),协议(Java接口),对象属性(Bean属性),方法(您必须明确指示“参数条目”标签,这与您猜测参数排序的C / C ++ / Java不同)。

  2. 了解Objective-C,Cocoa,Aqua和C之间的区别。然后了解如何使用框架。 框架与Java包几乎相同。

  3. 熟悉使用这些基础类:NSString,NSArray,NSDictionary,NSSet,NSURL,NSAutoreleasePool。

  4. 详细了解Interface Builder。 我之前认为Visual Basic的编程方式限制了程序员。 我错了。 在你了解应用程序的内容之前,最好先“想象”应用程序。 注意关键字IBAction(类似于制作EventListener),Outlets(你的UI元素只有一些“暴露”的对象),视图(如果是iPhone的UIView,应用程序中“可见”的一切都可以是被认为是“视图”)和控制器(有现成的控制器,您可以使用它们来填充表视图,翻转卡片视图等)。

  5. 了解如何通过iPhone Developer Portal部署应用程序。 如果您没有“正确”,则无法将任何iPhone应用程序发送到任何设备。 是的,我知道这很糟糕,但无论如何,如果你想出售你的应用程序,你必须经历这个过程。

顺便说一下,您可以使用以下方法对iPhone代码进行unit testing: iPhoneunit testing

希望这个有所帮助。 🙂

Objective-C是一种面向对象的语言,因此,就OOP而言,您可以使用Obj-C完成Java中的任何操作。

我没有任何经验,但这里至少有一个关于OCUnit的资源,目标-c相当于JUnit: http : //developer.apple.com/tools/unittest.html

我对转换的最大问题绝对是内存管理方面。 学习语法和API非常简单,但没有GC,生活很艰难!

编辑:哦是的,第二大问题是XCode,用于Mac / iPhone开发的IDE。 重构支持很少,我发现在文件之间导航很痛苦。 期待这也会让你慢下来。

对于unit testing,有几个选项,上面链接了OCUnit。 还有google-toolbox-for-mac 。

objective-c中的OOP很好,相当干净。 您有时也会遇到旧学校的C语言。

使用的API称为Cocoa-Touch,它是基于Cocoa构建的,它是由NextStep构建的,因此有很好的设计和改进历史。

iPhone上没有垃圾回收。 黄金法则是“ 如果你分配,那么你释放 ”。 关于内存管理的SO有很多问题,所以我不会在这里详细介绍。

主要障碍是设计/架构差异。 iPhone应用程序和Java应用程序使用不同的约定构建。 所以尽可能多地使用Objective-c / cocoa / cocoa-touch代码。

花一些时间使用Interface Builder,它可能会加剧,但这通常意味着你不理解它的作用。 一旦你清楚地了解了IB如何运作,以及它能为你做些什么,你会非常感激。

Cocoadev.com是一个方便的资源,用于获取设计和代码示例。

Cocoadevcentral.com有很多文章,包括桌面cocoa开发。 他的学习目标文章是你会发现的最好的文章之一。

如果您还没有Apple Developer Connection帐户,请获取该帐户。 您不必为此付费,但会将您带入文档和工具。

ADC iPhone

iPhone参考资料库 API文档,指南,示例代码,Apple官方资料。

我不会说我是任何语言的专家,但我有能力胜任。 我最近编写的大多数代码都是“企业”类型的东西。

假设您习惯学习新的API和语言,我发现最大的区别在于iPhone在CPU性能和可用内存方面受到的限制。 我很习惯用一些内存来换取更好的性能 – 几乎是无意识的 – 或者有点浪费,因为我有八个核心供我使用。 这对iPhone来说真的很糟糕!

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

技术方面都非常有条理。 unit testing方面不如Java方面先进。 另一方面,我发现在Objective C中我可以比Java更高效,更不容易出错,这可能是由于对象模型完全不同(你倾向于委托而不是inheritance)。

好吧,Java基于Objective C和Smalltalk,它们是面向对象的语言。 最大的问题是语法(不完全基于C语言,如C ++和Java),指针和手动内存管理。

这是基于一些非常古老的Objective C知识,但我知道当我从Objective C切换到Java(大约2000)时,由于底层概念非常接近,所以很容易。

基于目标C.

内存管理

值得一提的是,您可以在Objective-C代码中使用C ++和C ++对象,通常称为Objective-C ++。 这可以是一种有价值的方法,可以将您的数据模型和其他与平台无关的代码(用标准C ++编写)与您的UI代码分开(使用Cocoa框架在Objective-C中编写)。

如果您通过Java体验了解OOP的概念,并且如果您对指针和内存管理有基本的了解,那么您的最后一个障碍就是外来语法。

语法:我发现本教程非常简洁明了。 在我看来,我在概念上映射了Objective-C和Java基础结构,你可以在很大程度上做到这一点(即消息大部分是方法,协议是接口,等等)。 一旦你克服了最初的冲击,你会发现UI应用程序的Objective-C开发可以非常直观和愉快。

结构:我没有那么多UI编程,所以我发现我需要更好地掌握MVC范例。

您可能还会发现一些很酷的语言function,例如您希望使用Java的类别 。 我同样发现缺少一些其他结构,例如缺少静态成员 。