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

相对于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. 09day2

    多米诺骨牌 递推+高精度 [问题描述] Jzabc 对多米诺骨牌有很大兴趣,然而他的骨牌比较特别,只有黑色的和白色的两种.他觉得如果存在连续三个骨牌是同一种颜色,那么这个骨牌排列便是不美观的.现在他有 ...

  2. 【转】QT中QWidget、QDialog及QMainWindow的区别

    QWidget类是所有用户界面对象的基类. 窗口部件是用户界面的一个基本单元:它从窗口系统接收鼠标.键盘和其它事件,并且在屏幕上绘制自己.每一个窗口部件都是矩形的,并且它们按Z轴顺序排列.一个窗口部件 ...

  3. session_start保存的客户端cookie的值什么时候改变

    //cookie记录的session_id立刻改变了session_start();echo "old:".session_id();session_regenerate_id() ...

  4. 利用android proguard混淆代码

    利用android proguard混淆代码 2014-02-05 17:50 1207人阅读 评论(1) 收藏 举报 网上虽然有很多相关博客,不过貌似都不是最新版的..于是百度+谷歌+github上 ...

  5. Java程序执行过程

    首先,写好Java代码,保存到硬盘中.然后在命令行中输入: javac ClassName.java 此时,这个Java类文件将编译成字节码(.class)文件.如果用Eclipse等IDE开发工具, ...

  6. Windows下配置cygwin和ndk编译环境

    cygwin安装 正确的安装步骤其实很简单:1. 下载setup-86_64.exe 2. 直接从网上下载安装,选择包时,顶部选择“default”不变 3. 搜索make,勾选make,cmake, ...

  7. JDBC用ResultSet访问大量数据时会遇到的问题

    我们经常需要JDBC来对数据库就行操作,一般流程为连接数据库.通过sql语句把需要的数据取出来保存到ResultSet,然后调用ResultSet方法的类似 getString,getInt()等方法 ...

  8. win下 golang 跨平台编译

    mac 下编译其他平台的执行文件方式请参看这篇文章,http://www.cnblogs.com/ghj1976/archive/2013/04/19/3030703.html  本篇文章是win下的 ...

  9. [转]linux系统的7种运行级别

    转自:http://blog.chinaunix.net/uid-22746363-id-383989.html Linux系统有7个运行级别(runlevel)运行级别0:系统停机状态,系统默认运行 ...

  10. 棒棒的毛笔字PS教程

    跟大家分享一下毛笔字怎么做出来的,主要通过字体和素材叠加,十分简单,喜欢的一起练习.做完记得交作业. 先看看最终效果: 在网上是不是经常看这些碉堡了的毛笔感觉是不是很羡慕啊,现在我就教大家怎么做出这样 ...