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

相对于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的开发者也是一个高富帅,基于这样的向往,给我内心扎下了很好的印象。

ios和android一并学习的体会的更多相关文章

  1. WebSocket学习笔记IE,IOS,Android等设备的兼容性问

    WebSocket学习笔记IE,IOS,Android等设备的兼容性问 一.背景 公司最近准备将一套产品放到Andriod和IOS上面去,为了统一应用的开发方式,决定用各平台APP嵌套一个HTML5浏 ...

  2. 简谈WP,IOS,Android智能手机OS

    什么是智能手机? 相信到现在这个已经是傻瓜到不能再傻瓜的问题了 智能手机都不懂? 那你活着还有什么意思= = 但是为了谈论今天的三大主角:wp,ios,android 不得不回答一下这个笨笨的问题 如 ...

  3. Android自动化学习笔记:编写MonkeyRunner脚本的几种方式

    ---------------------------------------------------------------------------------------------------- ...

  4. Android自动化学习笔记之MonkeyRunner:官方介绍和简单实例

    ---------------------------------------------------------------------------------------------------- ...

  5. 开园第一篇 - 论移动开发环境 IOS与Android的差异

    首先,在真正写技术之前做个自我简介.本人08年开始学c语言 一年后,转vc++.开始接触MFC MFC做了两年.转眼11年了我考上了一个不知名的大专.搞C++发现没有市场了因为当时酷狗腾讯的软件已经日 ...

  6. javascript开发 ios和android app的简单介绍

    先看几个名词解释: nodejs ionic,Cordova,phoneGap,anjularjs react-native,reactjs nodeJs 的介绍参见这里,写的很好http://www ...

  7. Android:学习AIDL,这一篇文章就够了(下)

    前言 上一篇博文介绍了关于AIDL是什么,为什么我们需要AIDL,AIDL的语法以及如何使用AIDL等方面的知识,这一篇博文将顺着上一篇的思路往下走,接着介绍关于AIDL的一些更加深入的知识.强烈建议 ...

  8. 创业公司求IOS、Android攻城狮一枚

    地点:北京CBD附近(地铁1号线大望路) 魅力值:送珍贵期权 你要会:       1. IOS或者Android开发       2.可以处理类似微视/秒拍的视频录制功能       3.熟悉jso ...

  9. 如何在macox下面配置集成ios和android游戏教程

    教程截图: 1.准备工作,配置开发环境: 开发环境:mac ox 10.7.3  +   xcode4.2  + ndk r7 + eclipse helios 部署环境:中兴v880  root过了 ...

随机推荐

  1. UVA 11383 Golden Tiger Claw 金虎爪(KM算法)

    题意: 给一个n*n的矩阵,每个格子中有正整数w[i][j],试为每行和每列分别确定一个数字row[i]和col[i],使得任意格子w[i][j]<=row[i]+col[j]恒成立.先输row ...

  2. java实现的kmp算法

    package DataStructure; import java.util.ArrayList; import java.util.List; //KMP算法的实现 //以下代码由freedom结 ...

  3. poj 2923(状态压缩dp)

    题意:就是给了你一些货物的重量,然后给了两辆车一次的载重,让你求出最少的运输次数. 分析:首先要从一辆车入手,搜出所有的一次能够运的所有状态,然后把两辆车的状态进行合并,最后就是解决了,有两种方法: ...

  4. postgresql编译安装与调试(二)

    接前文postgresql编译安装与调试(一),继续说说postgresql的编译安装与调试. 上一篇已经详细说明了如何在Linux系统上编译安装postgresql,这次我们在此基础上简单讲讲如何在 ...

  5. angularJS+requireJS并集成karma测试实践

    最近在为下一个项目做前端技术选型,Angular是必须要用的(BOSS指定,个人感觉也不错,开发效率会很高).由于需要加载的JS很多,所以打算看看angular和requirejs一起用会怎么样.在g ...

  6. 我常用的Linux命令

    CD: ..        —-切换到上层目录 ~        —-回到家目录(/home/你的登录名/) LS: -a        —-显示指定目录所有文件,包括文件名以 . 开头的文件 -l  ...

  7. [转]linux 如何改变文件属性与权限

    转自:http://www.cnblogs.com/yangjinjin/p/3165076.html 我们知道档案权限对于一个系统的安全重要性,也知道档案的权限对于使用者与群组的相关性, 那如何修改 ...

  8. Java之--Java语言基础组成—数组

    Java语言基础组成-数组 Java语言由8个模块构成,分别为:关键字.标识符(包名.类名.接口名.常量名.变量名等).注释.常量和变量.运算符.语句.函数.数组. 本片主要介绍Java中的数组,数组 ...

  9. jquery checkbox勾选取消勾选的诡异问题

    jquery checkbox勾选/取消勾选的诡异问题jquery checkbox勾选/取消勾选的诡异问题 <form>        你爱好的运动是?<input type=&q ...

  10. Shapefile文件中的坐标绘制到屏幕时的映射模式设置

    pDC->SetMapMode(MM_ANISOTROPIC ); //首先选择MM_ANISOTROPIC映射模式,其它映射模式都不合适 pDC->SetWindowExt( max(a ...