漫淡Android开发与Web开发的渊源

本文的主旨是Web开发有很多先进的思想,Android引进了很多,希望大家重视web技术,学会其中的思想,会有助于你设计程序。


先分享一下我的经历吧。

还记得刚毕业时就常听人说不想做web,有一种理由是做web要学很多东西,也有人觉得做web没技术含量,连个排序算都不用写,很不幸当时的我也觉得有道理,而且Web又无厘头的把Java绑定到一起,至少在我们当时的公司是这样的,从而Java也被鄙视了一番,这种说法也给了我们几个C++的人带来了很大的优越感,让我们更加义无反顾的猛头札进去研究C++的一些机制,如虚表,STL的源代码等一些乱七八糟的东西,当时我们也比谁看的书多,也经常辩论一些技术问题,严格的说是相互攀比,现在觉得当时很幼稚的,不过那样学东西是快一点。


说说Java吧,这个东西起初是不被我接受的,我学Java也是因为赶鸭子上架,因为当时科室要做一个Android的项目,经果就两个家伙懂Android,有一个要离职,另一个就是架构师,不过他也接解不久,而Android的应用是要用Java开发的,没办法,当时我的其它任务刚好做完,就叫我先上,架构师问我做不做,我就问他是既会C++也会Java,他说是,当时我觉得这种人很了不起,内心也想成为他这样的牛人,不过当时没信心,我就问他觉得我行不行,他说很简单,只要愿学就行,就这样我就开始学Java。不过那时是带着鄙视Java的心理学Java的,用Java写C++风格的代码,比如说匈牙利的命名法啊,左大括号放到到行首啊(不过老被Eclipse自动纠正,老烦了),等等扯蛋的事,还曾抱怨这破语言怎么没有命名空间呢,唉,往事不堪回首啊。久而久之,发现Java没那么糟糕,甚至还非常智能,有了Java,链表是生疏了,但开发更快了,后来还慢慢的开始有点兴趣了,过了半年之后,我反而发现了C++跟Java比还有一些不方便的地方,这个在另一篇博客上已吐过槽了不赘述了,只啰嗦一句,没必要重复造车轮,程序员因为用更多的时间去想你的程序结构该如何设计。 


现在开始说Android开发吧,我其中有很多来源于Web的思想,在我看来,Android应用大部分都是网络应用,你不信可以数一数你手机上的应用,即大部分应用都要和服务器交互,其表现更像一个胖客户端,本地应用其实很少,一般的Android应用都要从服务器下载一个列表然后显示,你点击吧,它又会打开另外一个页面,很有可能有图片,一般又是从服务下载的,这样搞不就是浏览器的原理嘛,完了完了,浏览器是要倒闭了吗,放心吧,不会的,那为什么不用浏览器呢,显然浏览器用户体验没这么好,目前还做不到这么强大,或做这么强大得不偿失。


所以我觉得Android就是一个互联网的终端,Google是个互联网公司,不是手机公司,为什么要做个Android系统,这样看来其用意就不言而喻了。

再从开发的角度聊聊吧,首先Android的布局文件XML跟HTML是不是很像呢,当然像了,因为XML就是跟HTML设计的,Android为什么要先用XML做布局文件呢,Window怎么不用呢,iOS为什么不用呢,因为XML可以很方便的描述一棵树,而一个界面的所有View就是用一棵树组织的。所以这一点跟Web开发关系应该不是很大,Android选XML也可能是因为XML的表述能力非常强,你要是不信可以想想用ini文件怎么使用表达一个界面的布局,头痛别找我,尽管如此,这一点使得Android开发和Web开发在外表上拉近了一步。


除了这些,更加相似的来喽,都知道Android可以给一个View指定一个style吧,这是啥玩意吧,不就是一个精简版的CSS吗,style也有继承,你可以去看EditText和ImageButton的代码、你会发现很短,他们分别从TextView和ImageVIew继承而来,就仅仅加了个Style,这个Style你也可以在SDK里找到它,也写得很简单,就改了个背景啥的,很神奇吧,这些思想都来源来web开发。

另外还有Android的生命周期,你这思想概念来源于哪里,反正我知道VC里没人说生命周期,都是直接写个死循环,Servlet里倒是有这说法,包含init(),service()等。还有,Android可以直接使HTML布局,也可以跑JavaScript代码,不知道你是否玩过。

所以我感觉Android应用开发里有很多思想都来源于Web开发,Web技术博大精深,却遭到很多人的排斥,真想不通是什么原因,我强烈认为一个程序的价值不是他对SDK或语言的熟悉程度,而是他的程序设计能力,他设计的程序的结构的品质,而这些都来自源于设计思想,设计思想简单来的说就是一些指导原则,比如面向对象,设计模式,RESTful,只要你的设计思想饱满,就一定能设计出优秀的程序,而且用任何语言和任何平台都可以实现,C语言可以实现面向对象都听说过,Shell也可以实现面向对象你想到了吗。Web技术里面有许多优秀的思想,非常非常灰常灰常值得我们去学习。


我又想到一种说法,有太多人觉得相对web开发,嵌入式和Linux内核要难很多,要懂硬件,直到电路,很不幸当时我也这么认为,所以我用了一两年去学Linux内核和嵌入式,通信原理,信息编码,唉哟,都学遍了,后来懂了发现不是那么回事,其实根本不能那么去理解,其实他们不具备可比性,这两个东西根本就不应该放在一起来比较哪个难,因为他们走的是不同的方向,用一句话说就是,嵌入式走的是具体化,而web开发走的是抽象化。嵌入式会具体到一个电路一个元件,甚至化学键和量子力学,而web是极其抽象,抽象到云,虚拟化,分布式,所以拿具体化跟抽象化来比较哪个难,我觉得没有可比性,具体化有很多自然规律要记忆和应用,而抽象化要不断的提炼提炼再提炼,反正我是分不出高低了。

最近公司招聘,也发现几个做web的转Android,理由都是Android火爆啊,其实我很欢迎J2EE的来做Android,但这条理由真让我哭笑不得,插一个题外话,我真的很少遇到追求自己兴趣的人,太部分人都在追求他们认为所谓“吃香”的行业,实际上,几年前的我更极端,谁说哪个难我就做哪个,因为我觉得难做的东西待遇就好,那也让我走了不少歪路,也换了不少公司,现在回想惭愧至极。我觉得人要追求自己的兴趣,在自己感兴趣的领域创作一番,实现自我价值,而不是为了糊口饭吃,那样到头来也不太可能有太大的发展。


又跑题了,正因为老跑题,我给文章标题加了“漫淡”二字,这样既可以装逼还能掩饰我的频繁跑题,希望不会有人骂我。

你可能已经找不到本文的主旨了,我还是申明一下吧,本文的主旨就是Web开发有很多先进的思想,在Android开发中就采用了很多,希望大家重视web技术,学会其中的思想,会有助于你设计程序。

还有一个论据是很多外企招聘Android工程师要懂Web技术,我随便从linkin上摘一段Android高级工程师的招聘要求:


国内很少有企业有这条要求,可能也是根据国情来的,其实有很多web技术可以加速Android开发或提高Android应用质量,如Spring in Android、RESTful、Hybrid等,如果国内也有这个要求,可能很多人都不愿意学Android了,其实没必要害怕,你不一定每一个都要去学,只要熟悉一种其它的懂思想就可以了。

举这个例子想说的是,Web开发和Android开发是一脉相承的,我觉得应该把他们当成一个整体,只不过一个是客户端一个是服务端,客户端又可以被称为移动开发,移动开发又有Android、iOS等平台。

好了,完了。


本文跟传统思想有点区别,所以我预感会有不少吐槽,不过没关系,注意语言文明就行。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值