Java程序员转Android开发必读经验_Java程序员如何转为安卓开发人员
2014-09-30 10:33:05  By: dwtedx

我相信很多Java程序员都跟我一样想转安卓开发、我就把我自己转Android的经验和大家分享一下

同时也为大家搜集资料、积极整理前人的经验、希望可以给正处于困惑中的你、带来些许的帮助

Java和Android程序的区别

Android是主流智能手机的操作系统、Java是一种开发语言、两者没有好坏优劣之分、只是两种职业岗位的选择

学安卓从事移动互联方向开发、学Java从事软件、网站开发、而安卓上的应用大多是Java编写的

所以建议在安卓前期的Java学习阶段中、要用心学好


“转”前的准备和要了解的基本知识

其实Java程序员要自学安卓开发的基础知识还是没有什么难度的、毕竟语言相通、特性相似

阅读安卓源代码的门槛以比较低一些、作为能够考虑“转”的合格的程序员的你

自学能力和相关的基础知识应该不是问题、学习安卓也相对比较轻松一些


所以Java程序员转安卓开发可以看做是一次“增量更新”、只需要学习一下安卓的基本组件

Activity、ContentProvider、Service、BroadcastReceiver

了解一下安卓中的Intent、Handler、Adapter以及各类事件的传递方式(onClick、onTouch等)

同时辅助一定的代码量、像JNI、AIDL什么的都可以看一下


你还要摒弃“UI元素像素位置”这个概念、安卓本身是允许通过设定元素位置来制作UI的

如果你这样做导致的结果便是大批机器不适配、那么显示效果就有点惨不忍睹了

所以不要妄想通过获取屏幕大小来调整UI、像LinearLayout在swing或者swt上可有可无的东西

在安卓上是必须要精通的、还有熟悉ide、安卓提供的开发框架、Java及其他编程知识等

当然、这里所说的只是九牛一毛、还有很多在开发过程中需要注意的细节问题是我们没有提到的


前人关于技术开发转移动应用开发的经验

刘铁峰、海豚浏览器CTO

因为具体的开发场景不一样、目标的读者的经验也各不一、分享一点转型过程中、所需要补充的知识点和逻辑上的转变

移动开发和PC上的开发带来了哪些不一样?

在我看来、从2002年之后、传统桌面的开发者基本都转向了J2EE/.NET/LAMP等以Web技术或者服务器端开发技术为主的开发方式

使用C/C++/MFC/Delphi等开发C/S模式的用户越来越少、甚至工作的需求也开始变得越来越少


这样在技术体系上、开发者的经验开始基本上覆盖在:

1.HTML + CSS + JavaScript

2.各种脚本语言(PHP/http://ASP.NET/JSP/Python/Ruby)操作服务器API

3.服务器数据处理逻辑(O/R Mapping, 数据库连接池、各种如AOP等设计模式、甚至DSL等等

4.大型服务器的架构设计(分布式架构、各种负载均衡、服务器连接优化)

5.数据库(分布式数据库、事务处理、大规模数据的存储、查询优化)

6.大数据处理(Hadoop, Hive)等等


那对于移动开发上需要什么?

不管是Android / iOS /WP 、 其实对于开发的需求上逐渐回到了2002年之前、大概类比MFC/Delphi的时代、更加合适

移动开发者的技能需求发生了转变、需要的经验变成了

充分理解各移动平台的进程架构和程序生命周期逻辑(程序启动、程序被系统suspend/kill、 Services)

1.界面设计(各种UI控件、事件处理)

2.数据处理逻辑(客户端缓存、多线程并发)

3.网络数据处理

4.平台相关特性(系统API调用、系统通知机制等)

5.各种性能处理


因此、在学习的路线和需要的经验上有了不同、如果需要从非移动开发者往移动开发者进行转型

哪怕同样使用的是Java语言、需要的就是了解不同的库以及处理不同领域的具体问题

在移动设备的开发上、我归结为三大类问题:性能的问题、界面响应的问题、产品的稳定性

这些是技术人员可以需要最为注意和保障的


王思达、爱安卓、爱刷机、爱移动互联网

从桌面端转向移动端、一定要认识到二者不同的侧重点、桌面端包括web更侧重于逻辑复杂、高级的任务、而移动端的娱乐性明显更强
就从操作方式说起吧、桌面端主要靠鼠标键盘和touchpad、所以操作精度要高得多、很容易将很多功能集成到一个界面里

但同样的思路就完全不适用于移动端了 (反例我是实在想不起来了、大家可以帮忙想想)、相信一个cluttered ui的app

就算功能再强大、用户盯着你的界面超过3s就会头晕、点击某个button要点好几下才会成功、也必定是一个糟糕的app


那什么样的操作方式是适用于移动端的呢?

ListView的滑动操作就是一个很好的例子、不需要用户任何的思考、只需顺着期待的内容出现的方向滑动

这样 intuitive的设计便是王道、类似的设计还有来自Tweetie的下拉刷新、Android 4.0引入标准库的ViewPager等等

上述的操作都有一个共同特点——手势操作、既然移动端(不管是手机还是平板)是拿在手上的设备

那手势操作成为其杀手锏就毫不奇怪了、自然也就成了区分移动端和桌面端的一个重要特质

PeakJi大神的猛犸浏览器和输入法(忘记名字了)同样也体现了这一点


有了简单直观的手势操作、还有一个不得不提的feature——push notification、用户很懒、一台机器装了上百个app

可能一个月你的app也就被打开一两次、这当然不是你希望看到的、如果你的app是网站客户端性质的

那么push notification就是一个很好地利器了、怎么做呢?我总结了下面的流程

1. 与社交网络连接、获取用户资料、分析用户兴趣

2. 记录用户在你的网站或客户端的使用习惯、逐渐逼近用户真正的兴趣

3. 根据得到的用户兴趣、推送他感兴趣的内容


可以看到、不仅仅是“通知”那么简单、像新浪微博那样的、一天一条的palm news、多了只能让人感到annoying

并不能起到和用户很好的沟通的效果;只有推送用户感兴趣的内容、才会引起他们的注意、增加你的app在用户心中的权重


最后一点我认为很重要的、就是consistency、和操作系统要保持操作习惯的一致性、比如左上角的返回button、Android 4.0的ViewPager滑动换标签等

这样做最大的好处就是降低了用户的学习成本、让你的app和OS融为一体、当然在OS的大框架下、也不乏有新意的app

比如Android下的一款类siri应用Maluuba、大胆地采用了Metro风格的设计、但操作起来并不会觉得陌生

最大的原因就是 ViewPager的滑动操作被保留了下来


推荐书籍和视频

推荐一:Head First Java(中文版)(第2版)(涵盖Java5.0)

推荐理由:安卓应用层和大部分framework层用的都是Java语言


推荐二:疯狂Android讲义

推荐理由:知识点比较全、也比较新


推荐三:深入理解Android(卷1)

推荐理由:作者的文笔流畅、见解独到、而且系统地、深入地讲解了Android系统原理、同时作者那种层层递进、抽丝剥茧式的分析模块的手法也非常值得学习


推荐四:个人在学习Android的教学视频

视频下载地址链接: http://dwtedx.com/download.html?bdkey=s/1jG0zd7w 密码: n1oj

推荐理由:非常不错的一套Android快速入门视频、强烈推荐


还有很多观点是在本文中没有提到的、个人的思想和文章是有限的、但是大众的观点是无限的

此文的目的一是给有计划转安卓或者是移动的你有所帮助、二是希望能够集合大家的力量展开这么一场讨论

让这篇文章更为强大!!!有自己看法的亲~留下你的观点吧!不要只做看客呦~

若资源对你有帮助、浏览后有很大收获、不妨小额打赏我一下、你的鼓励是维持我不断写博客最大动力

想获取DD博客最新资讯、你可以扫描下方的二维码、关注DD博客微信公众号(ddblogs)

或者你也可以关注我的新浪微博、了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)

如对资源有任何疑问或觉得仍然有很大的改善空间、可以对该博文进行评论、希望不吝赐教

为保证及时回复、可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)

感谢你的访问、祝你生活愉快、工作顺心、欢迎常来逛逛


快速评论


博文评论

  • 该博文还没有评论、赶快抢沙发吧...
DD记账
top
+