Java Developer在Mac OS上达到Objective-C
我很多年前用C ++开发,但是现在我主要是Java软件工程师。鉴于我拥有iPhone,已经准备好下个月准备购买MacBook,并且通常对使用Mac OS开发MT(使用Objective C)感兴趣,所以我认为我只想问一个问题:下一步?
更具体地说,我应该拿起什么书,并且有些人可以向我指向任何网络资源?我打算购买的一些书籍:
- 在Objective-C 2.0中编程
- Mac OS X(第3版)的Cocoa(R)编程
有人熟悉这些标题吗?最后,一旦我踏上了这一旅程,我对我应该准备的期望的摘要非常感兴趣。作为使用IntelliJ IDEA用Java开发的人,当我继续使用Xcode编写ObjectiveC代码时,我会注意到哪些主要区别? Mac OS桌面开发和iPhone开发之间有什么区别?习惯了Java垃圾收集,我对ObjectiveC垃圾收集/内存管理应该了解些什么。任何其他人想指出的其他语言特定问题?如何建立使用者介面?它是否更接近Swing,即构建与代码交互的Visual C ++资源文件,还是更像一些会为gui生成代码的borland IDE?
解决方案
获取适用于Mac OS X的可可编程。那本书将回答大多数问题。我们也可以开始阅读成为XCoder和Cocoa Dev Central。
iPhone SDK仍处于NDA之下,因此我们将无法找到有关它的任何在线资源,但Apple提供的资源除外。
可可UI基于MVC。我们可以使用Interface Builder设计视图,然后将其绑定到模型和控制器。目标C是C和Smalltalk的混合体。
另一个适合选择是jaiPhon,它使我们可以编写在构建时转换为iPhone口语的Java应用程序。
我不知道它是否可用,或者它是商业软件还是其他,但是仍然很有趣。
http://www.jaiphon.com/
购买了问题中的两本书后,我建议将Mac OS X的Cocoa编程作为学习该语言和Cocoa框架的快速方法,并且可能是开始在Cocoa中生产实际应用程序的最快方法。我强烈推荐它。在Objective-C 2.0中进行编程是一本很棒的参考书,但是如果我们已经了解C,那么它并没有太多内容可以教我们不能从另一本书中学习。但是,如果我们需要在Objective-C中列出所有保留关键字的清单,那是本书。
可以通过编程方式生成所有用户界面,但是我们会发现使用XCode附带的Interface Builder布局用户界面要容易得多。我们最终将获得更少的代码。使用绑定,我们甚至可以消除与布局界面没有直接关系的代码。详细信息在Mac OS X的Cocoa编程手册中。
我从Java中错过的一件大事是集合API。在Cocoa中,我们仅获得NSSet,NSArray和NSDictionary,而Comparable接口没有类似物。这些类也是不可变的,但是具有可变的版本,例如NSMutableArray。
实际上,我还没有玩过Objective-C 2.0中的Garbage Collection。在Objective-C的早期版本中,内存管理是通过保留,释放和自动释放方法来处理的。创建的对象的保留计数为1. 保留的计数增加,释放的计数减少,而自动释放对象则稍微复杂一些。同样,可可编程书对此进行了很好的解释。垃圾回收是一个选项,如果启用了垃圾回收,保留和释放方法以及自动释放方法,则不会执行任何操作。但是,如果要编写供他人使用的库或者框架,则应像关闭垃圾回收一样对其进行编程。这样,无论是否启用了垃圾回收,应用程序都可以使用它。
至于Web资源,http://cocoadevcentral.com/是一个很棒的网站,提供初学者教程。 http://www.cocoadev.com/上的CocoaDev Wiki包含有关许多主题的详细信息,通常我们可以在cocoa-dev邮件列表http://lists.apple.com/上找到一些有用的信息和相关人员。邮递员/ listinfo / cocoa-dev
iPhone的开发有些不同,并且细节受到NDA的限制。但是,如果我们获得了Apple的批准可以访问iPhone开发人员中心,则Apple提供了一些出色的视频概述,介绍了这些区别,这为我们提供了从Mac OS X过渡到iPhone OS X编程所需的文档。
还请检查以下内容:
http://www.xmlvm.org/overview/
这个项目试图将以多种源语言编写的程序交叉编译为多种目标语言。最初的测试用例之一是用Java编写程序并在iPhone上运行它们。在网站上观看视频是值得的。
话虽如此,我还没有尝试过。该项目似乎是beta版本,并且在SourceForge网站上没有很多活动。
我们已经熟悉方括号了吗?
从我的角度来看,这是它的基本原理。
我希望这也会有所帮助。
我认为当我们从IntelliJ跳到Xcode时,我们会感到赤裸裸。但这只是从工具的角度来看。带上多余的衣服(TextMate + FScript)!