如果说为什么要同时学习这两种不同的移动平台,其实有一定的“闲”的因素在里面。

相对于ios,android我是早半年接触的。最开始学习的时候也就是j2ee学习的延续,通过看视频连带看书学了大概一个月的时间,对android有了一个基本的了解。本来是想做个小项目练练手的,由于各种原因没有实现,就把android搁在边上了。

后来自己买了一个MacBook,于是就看起了ios。最开始学习Objective-C的基本语法以及ios初级编程的时候,因为之前的基础还可以,我用了大概4天的时间,说起来也不算是多了,然后又是各种原因放下了。

这两段学习经历使我对移动开发的架构有了更加深入地认识。于是上个月开始,我又重新开始学习这俩。

当我再次搭起android的开发环境的时候,我竟然不知所措,我几乎忘记了android是什么东西,于是用了几天的时候从新从头开始找了基本android入门的书看起来。然而手头上的书确实很out的,无法赶上时代。对于像我这样“盲目”追求最新的程序员来讲这是无法忍受的。于是我找到了最根本的文档,android的官方文档。由于英语能力有限之前没有好好地看过这些东西,为了阅读和学习英语,我就做起了翻译官方文档的工作。用了一周了时间看并使用各种工具翻译了几篇base的文章,结果重新建立了android在我心中的体系结构。(说真的其实android的文档太难翻译,主要是没有想java的那样都是一些比较容易理解的段句子,android的文档编辑者仿佛是为了炫耀自己的文字能力使用各种长句子,让像我这样的非母语者很伤神,有时还要推测一些作者的意思。但是后来发现ios没有这么系统由结构性的文档,我就感谢google的厚道了)。之后,我用一些我新学到的技术做了几个小的demo。感觉学着无趣,就又开始学习ios了。

我本想用同样的方法去学习ios,毕竟ios7一来变化的比android大的多得多。而且Xcode5之后原来熟悉的东西都不见了,原来学ios内存管理是一个重点,Xcode5之前还可以手动选择是否自己来干了内存,现在是必须交给Xcode,你一用release什么的就报错。还好之前学习内存管理还是学的不错不然现在都无法做相关的测试了。(但是从发展的角度讲这些改变对于一个语言或者是ios这个系统来讲都是不错的,这样的强制改变避免了像java这样的碎片化)

我们不妨比较一下这俩的开发区别:

1.开发工具(IDE)的区别

android作为一个开源的系统,它的首选的是最为著名的开源IDE——eclipse。作为几乎是万能的ide,eclipse也为开发android提供了类似开发web的插件。这使原来的开发者能够快速地切换到android的开发。最早进行android开发的程序员都有过没android搭建开环境的痛苦经历,周来android官网上提供了打包定制的android版的eclipse下载,再次降低了android的入手难度。另说一句,google还真为android开发了一个新的ide,我下下来用了一下,结果果断抛弃,正是比javabean还不如的官方ide。

而ios果断自负的使用了自己的Xcode,而且开发ios还非得Xcode,至少我还没有发现其他的。如果eclipse是一个现代的ide,Xcode在某些方面更像是后现代的ide。而且随着ios以及Xcode的发展,有时候会觉得自己写的代码带了一些伪代码的影子,比如里面的一些带“@”的关键字的语法,就像是伪代码。Xcode值得一提的是不让我们去注意View后面的XMl,而是直接给一个谁都看得明白的页面,而eclipse则还很专业地提供源码,以至于学习android不少人都是手动编辑xml开始的。还有就是Xcode引入了“连线”,将代码与图形通过连线的方式关联起来,相当MVC的感觉。完全将开发者从神降为了凡人,可谓是让人人都能编程的后现代之作。

我总觉得eclipse的灵魂是“Alt+/”给人的快感,在这方面强大的提示功能是Xcode所没有的,而eclipse的跨平台性也是值得称道的。

2.java和Objective-C的区别

从历史来讲Objective-C更为悠久。java舍弃了指针的概念,以及卓越的垃圾处理、内存管理机制为人称道且简单易学使它能够花了不到十年时间就能成为最受欢迎的语言。然而太多人的关注与奉献使网络上出现了各种各样的开源框架,而令人难以选择。再这java版本的更新却不真正抛弃一些落后的包或工具类,使初学者学习的时候难以区分。而且java的维护者始终缺乏大版本更新的勇气,使开发者面对而有难以想说明的痛楚,于是关注度渐渐降低。

而Objective-C,它的诞生时间几乎和C++差不多。但是,几年前基本没几个人听过。直到iphone的兴起,它的关注度迅速升到前三超过c++,仅次与java,C。但是Objective-C太过于奇葩,带有一些古老语言的特性,[],@的使用是作为特别的或许也是为了表现出它的与众不同。如果没有Xcode的辅助性,Objective-C的开发效率不比VC高多少。但从语言来讲如今可能是不合事宜了,但Xcode的卓越使我们不能仅仅从语言的本身来看待,而相反有了一些独特之处。毕竟OC运行起来比java快得多,而在移动开发领域,这点是很重要的。

3.开发文档、资料的比较

看过ios的文档之后,才能体会到android开发文档的良心之作。相对于android开发文档的深入浅出,面对ios我不知道从那入手。android文档的一部分,显然是一个很好的教程。比一些市面上能买的书还要讲的好。而反观ios,就是开发文档,你有什么问题,不清楚什么方法的使用就找吧。

而网络上的资料显然也没有android的丰富多彩。


综合来讲,我个人还是比较喜欢ios的。基于对美的热爱,我无法相信一个ide也能做的这样的漂亮。例外iphone给人的高富帅的感觉,令人想到ios的开发者也是一个高富帅,基于这样的向往,给我内心扎下了很好的印象。

更多相关文章

  1. 开发者如何看待移动平台之争
  2. Android开发实践:如何设置NDK的编译选项
  3. Android官方入门文档
  4. Android日程表应用整合开发实例
  5. Android开发资料推荐之Google Android开发精华教程
  6. 利用Ant编译android工程
  7. 【入门篇】Android学习笔记――常用布局
  8. Android之binder驱动个人学习小结
  9. Android开发板之串口开发

随机推荐

  1. 【Mood-11】值得学习的国内外Android开发
  2. Android开发之fedora13下编译Android源码
  3. Android mac 真机调试
  4. Android菜鸟日记29-杂记
  5. Android 设备监听网络状态变化
  6. Android使用动画的注意事项
  7. Android Drawable 那些不为人知的高效用
  8. 浅谈android系统java调用C++函数传参过程
  9. LoaderManager - Android(安卓)3.0新特性
  10. Android UI结构源码研究