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语言,需要的就是了解不同的库以及处理不同领域的具体问题。

在移动设备的开发上,我归结为三大类问题:性能的问题,界面响应的问题,产品的稳定性。这些是技术人员可以需要最为注意和保障的。

季逸超,Peak Labs创始人

记得当时iPhone出来后,让人们看到了一个与传统的“窗口”完全不同概念的逻辑:界面方面一个应用占满整块屏幕,程序方面代码也都是在严格的沙箱内运行。当时我就意识到这将是一整套全新的规则体系,后来渐渐从表面往深层看,写了几年烂代码慢慢我也有了点心得:

1.淡化文件的存在,而凸显应用和工作流。

2.尽量避让主线程/UI线程,避免锁界面。因为桌面应用锁UI的话只不过是一个窗口,而移动应用会给人感觉是“手机”这个整体挂了…

3.能迅速完成的操作/运算就不要指望后台,自己的程序随时可能被kill掉。后台只留给VOIP、网络操作之类的。

4.尽量加快启动速度。移动产品用的频繁,但单次使用远比桌面要短,所以不要出现Photoshop那样让用户傻等的情况。即使用个“假象”也要让用户觉得启动挺快的。

5.同一个功能最好有多种交互/操作方式。不像Windows一统桌面江湖,现在各个版本的android、iOS用户之间使用习惯迥异,最好能让人们的习惯都能work。

6.最好不要让UI控件太显眼(比如街机游戏中硕大的摇杆遮住了人物),但也别太隐晦(猛犸浏览器4,哈哈哈)。

7.用户其实很在意耗电和发热量,桌面用户从不在乎…

8.很多功能别人说做不到或说平台不允许不开放的时候,总有人用匪夷所思的奇葩手段实现了…

个人拙见请勿轻信哈~

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

从桌面端转向移动端,一定要认识到二者不同的侧重点。桌面端包括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系统原理。同时作者那种层层递进,抽丝剥茧式的分析模块的手法也非常值得学习。

今天小编的推荐就到这里,当然,还有很多观点是小编在本文中没有提到的,小编的思想和文章是有限的,但是大众的观点是无限的,小编此文的目的一是给有计划转安卓或者是移动的你有所帮助,二是希望能够集合大家的力量展开这么一场讨论,让这篇文章更为强大!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

时间: 2024-09-16 05:50:44

Java程序员转Android开发必读经验一份的相关文章

java 转行 c++-java程序员转C++开发问题

问题描述 java程序员转C++开发问题 我是一名2014届毕业生,今天去一家公司面试,应聘的岗位是软件工程师,我是学java的,公司开发部经理跟我谈话之后让我考虑转C++开发. 我在大学期间学过C/c++ ,不知道转C++难度大不大,大概需要多久时间. 解决方案 我个人认为:C++是世界上最难的语言 结论:给自己留两年时间吧 无GC 构造/析构 异常/stack unwinding 多继承/虚虚数 RTTI/static.dynamic.reinterpret.const casts 私有/公

分享15款Java程序员必备的开发工具_java

如果你是一名Web开发人员,那么用膝盖想也知道你的职业生涯大部分将使用Java而度过.这是一款商业级的编程语言,我们没有办法不接触它. 对于Java,有两种截然不同的观点:一种认为Java是最简单功能最强大的编程语言之一,另一种则表示这种编程语言既难用又复杂. 下面这些工具或许功能和作用不同,但是有着一个共同的主旨,那就是--它们都是为了给Java编码和开发提供卓越的支持. 1. JDK(Java开发工具包)如果你打算用Java开发一些小程序和应用程序,那么首先得给自己准备一个类似于JDK的工具

寻觅优秀Java程序员何其难

Java开发者供大于求,找一个优秀的开发者犹如大海捞针.这该赖谁?赖程序员对Java没兴趣吗?还是赖瞎了眼的招聘?抑或是语言本身?不管你同意与否,下面就列举了和这个问题相关的答案. 问题非语言,而是程序员自身 大多程序员都想做与众不同的人,大家都喜欢尝试.但除此之外,更多的程序员想要一个薪水丰厚的工作.最简单的方式就是学习Java--不管自己喜不喜欢写,这就是为什么众多无工作激情的程序员都沦为了Java程序"猿". "我不是指所有的Java程序员都是无能之辈",博客

Java程序员的发展前景

不知道什么时候开始,IT业初级程序员的工作性质与进城打工的"农民工"变得如此惊人的相似.很多IT公司的高管认为"人便宜,就是要用到坏掉,然后再找更便宜.更年轻的",于是,初级程序员们与农民工一样被剥削,一样做着没什么太大技术含量的枯燥工作,一样拿着微薄的收入,有上顿没下顿,买不了房开不了车,日复一日重复"IT民工"的劳动.          "IT"这个英文缩写,原本在人们脑中总是条件反射地与"精英"二字联

9本Java程序员必读的书

本文列出的9本书在Java程序员界都是被认为很棒的书.当一个程序员开始初学Java时,他的第一个问题应该是如何选择一本书来作为指导学习Java.这个问题也就表明,相对于其他的教程和博客,Java书籍还是很重要的参考,主要表现在以下两点 ●通常书籍是由比较权威的程序员来撰写的. ●相比其他媒介,书籍对于内容的描述更加详细,解释更加明确. 本文列出的九本书是我个人非常喜欢的Java书籍,当我有时间的时候,我就会将它们捧在手里阅读.甚至有些书我反复读过很多遍,每次重新读的时候总会有新的收获.因此这些书

JAVA程序员必读:基础篇(8)

程序|程序员 JAVA程序员必读:基础篇时间:2001/09/13 13:31 作者:ZSC 太平洋网络学院 2.6什么是接口 接口是一个收集方法和常数表单的契约.当类执行一个接口,它就许诺声明在那个接口中执行所有的方法. 接口是一个设备或者一个系统,它是用于交互的无关的实体.根据这个定义,远程控制是一个在你和电视的接口:而英语是两个人之间的接口:强制在军事中的行为协议是不同等价人之间的接口.在JAVA语言中,接口是一个设备,它是用来与其它对象交互的设备.一个接口可能对一个协议是类似的.实际上,

JAVA程序员必读:基础篇(1)

程序|程序员 JAVA程序员必读:基础篇 时间:2001/09/13 13:31 作者:ZSC 太平洋网络学院 JAVA是有SUN公司开发的新一代编程语言,它可以用在各种不同的机器.操作系统的网络环境中进行开发.不论你使用哪种浏览器或者使用哪种操作系统(Windows.Unix等等),只要浏览器支持JAVA,你就可以看到生动的主页.JAVA正在逐步成为Internet应用的主要开发语言,它彻底改变了应用软件的开发模式,为迅速发展的信息世界增添了新的活力.所以作为Internet应用的开发技术人员

JAVA程序员必读:基础篇(目录)

程序|程序员 JAVA是有SUN公司开发的新一代编程语言,它可以用在各种不同的机器.操作系统的网络环境中进行开发.不论你使用哪种浏览器或者使用哪种操作系统(Windows.Unix等等),只要浏览器支持JAVA,你就可以看到生动的主页.JAVA正在逐步成为Internet应用的主要开发语言,它彻底改变了应用软件的开发模式,为迅速发展的信息世界增添了新的活力.所以作为Internet应用的开发技术人员不可不看JAVA,而JAVA程序不可不先从基础学起,这正是JAVA程序员必读:基础篇的用意. 本J

java程序员三至四年的工作经验,应该具备那些技术、能力呢?

问题描述 参加工作这么多年,回头认真想想感觉啥也不懂似的.总是关注招聘网站,对于三至四年工作经验的职位要求,从而学习.充实,但有时候会自问一下,java程序员三至四年的工作经验,应该具备那些技术.能力呢? 解决方案 解决方案二:"几年的工作经验要求"所衡量的技术只是其中的一部分,技术不可能没有差距和区别,毕竟大家做的项目都有差距,侧重点就有区别的.当然也有共性的,举例如下:1.语言要求:精通java,j2ee2.框架要求:springMVC,mybatis或类似框架开发经验3.页面技术