Java程序员转Android开发必读经验分享

摘要:DevStore小编最近几日偷偷的发现部分Java程序员想转安卓开发,故此加紧补充知识,为大家搜集资料,积极整理前人的经验,希望可以给正处于困惑中的你,带来些许的帮助。

啰哩啰嗦的说说Java和Android程序的区别:

Android是主流智能手机的操作系统,Java是一种开发语言,两者没有好坏优劣之分,只是两种职业岗位的选择。学安卓从事移动互联方向开发,学Java从事软件、网站开发。而安卓上的应用大多是Java编写的,所以建议在安卓前期的Java学习阶段中,要用心学好。

言简意赅的说说“转”前的准备:

http://c.tieba.baidu.com/p/3354547666

http://c.tieba.baidu.com/p/3354546842

http://c.tieba.baidu.com/p/3354527799

http://c.tieba.baidu.com/p/3354545064

http://c.tieba.baidu.com/p/3354537993

http://c.tieba.baidu.com/p/3354536371

http://c.tieba.baidu.com/p/3354566167

http://c.tieba.baidu.com/p/3354563874

http://c.tieba.baidu.com/p/3354559790

http://c.tieba.baidu.com/p/3354558402

http://c.tieba.baidu.com/p/3354557382

http://c.tieba.baidu.com/p/3354575677

http://c.tieba.baidu.com/p/3354574673

http://c.tieba.baidu.com/p/3354329758

http://c.tieba.baidu.com/p/3354324754

http://c.tieba.baidu.com/p/3354328957

http://c.tieba.baidu.com/p/3354358425

http://c.tieba.baidu.com/p/3354357165

http://c.tieba.baidu.com/p/3354354914

http://c.tieba.baidu.com/p/3354351963

http://c.tieba.baidu.com/p/3354339313

http://c.tieba.baidu.com/p/3354365196

http://c.tieba.baidu.com/p/3354516479

http://c.tieba.baidu.com/p/3354363645

http://c.tieba.baidu.com/p/3354511292

http://c.tieba.baidu.com/p/3354362725

http://c.tieba.baidu.com/p/3354493596

http://c.tieba.baidu.com/p/3354386728

http://c.tieba.baidu.com/p/3354247248

http://c.tieba.baidu.com/p/3354246081

http://c.tieba.baidu.com/p/3354244736

http://c.tieba.baidu.com/p/3354243829

http://c.tieba.baidu.com/p/3354255255

http://c.tieba.baidu.com/p/3354251795

http://c.tieba.baidu.com/p/3354251040

http://c.tieba.baidu.com/p/3354250060

http://c.tieba.baidu.com/p/3354289895

http://c.tieba.baidu.com/p/3354319537

http://c.tieba.baidu.com/p/3354259808

http://c.tieba.baidu.com/p/3354313871

http://c.tieba.baidu.com/p/3354309420

http://c.tieba.baidu.com/p/3354300027

http://c.tieba.baidu.com/p/3354297069

http://c.tieba.baidu.com/p/3354195479

http://c.tieba.baidu.com/p/3354206526

http://c.tieba.baidu.com/p/3354204491

http://c.tieba.baidu.com/p/3354202763

http://c.tieba.baidu.com/p/3354200335

http://c.tieba.baidu.com/p/3354196351

http://c.tieba.baidu.com/p/3354226726

http://c.tieba.baidu.com/p/3354218172

http://c.tieba.baidu.com/p/3354215444

http://c.tieba.baidu.com/p/3354213289

http://c.tieba.baidu.com/p/3354209995

http://c.tieba.baidu.com/p/3354239543

http://c.tieba.baidu.com/p/3354238270

http://c.tieba.baidu.com/p/3354236627

http://c.tieba.baidu.com/p/3354234679

http://c.tieba.baidu.com/p/3354135902

http://c.tieba.baidu.com/p/3354133928

http://c.tieba.baidu.com/p/3354150505

http://c.tieba.baidu.com/p/3354149639

http://c.tieba.baidu.com/p/3354147111

http://c.tieba.baidu.com/p/3354145982

http://c.tieba.baidu.com/p/3354183940

http://c.tieba.baidu.com/p/3354182721

http://c.tieba.baidu.com/p/3354181977

http://c.tieba.baidu.com/p/3354165876

http://c.tieba.baidu.com/p/3354193677

http://c.tieba.baidu.com/p/3354191318

http://c.tieba.baidu.com/p/3354190267

http://c.tieba.baidu.com/p/3354188371

http://c.tieba.baidu.com/p/3354187491

http://c.tieba.baidu.com/p/3354071718

http://c.tieba.baidu.com/p/3354068213

http://c.tieba.baidu.com/p/3354066474

http://c.tieba.baidu.com/p/3354065260

http://c.tieba.baidu.com/p/3354081216

http://c.tieba.baidu.com/p/3354076242

http://c.tieba.baidu.com/p/3354075326

http://c.tieba.baidu.com/p/3354070260

http://c.tieba.baidu.com/p/3354125762

http://c.tieba.baidu.com/p/3354116024

http://c.tieba.baidu.com/p/3354112949

http://c.tieba.baidu.com/p/3354111925

http://c.tieba.baidu.com/p/3354083858

http://c.tieba.baidu.com/p/3354143274

http://c.tieba.baidu.com/p/3354138548

http://c.tieba.baidu.com/p/3353995244

http://c.tieba.baidu.com/p/3353983804

http://c.tieba.baidu.com/p/3354033869

http://c.tieba.baidu.com/p/3354031872

http://c.tieba.baidu.com/p/3354030072

http://c.tieba.baidu.com/p/3354029118

http://c.tieba.baidu.com/p/3354017868

http://c.tieba.baidu.com/p/3354051512

http://c.tieba.baidu.com/p/3354047829

http://c.tieba.baidu.com/p/3354045861

http://c.tieba.baidu.com/p/3354045354

http://c.tieba.baidu.com/p/3354062282

http://c.tieba.baidu.com/p/3354060763

http://c.tieba.baidu.com/p/3354055056

http://c.tieba.baidu.com/p/3354054049

http://c.tieba.baidu.com/p/3353927623

http://c.tieba.baidu.com/p/3353940240

http://c.tieba.baidu.com/p/3353938328

http://c.tieba.baidu.com/p/3353936543

http://c.tieba.baidu.com/p/3353963286

http://c.tieba.baidu.com/p/3353962877

http://c.tieba.baidu.com/p/3353947445

http://c.tieba.baidu.com/p/3353945576

http://c.tieba.baidu.com/p/3353944480

http://c.tieba.baidu.com/p/3353973983

http://c.tieba.baidu.com/p/3353971215

http://c.tieba.baidu.com/p/3353969648

http://c.tieba.baidu.com/p/3353967089

http://c.tieba.baidu.com/p/3354012796

http://c.tieba.baidu.com/p/3353997102

http://c.tieba.baidu.com/p/3353890191

http://c.tieba.baidu.com/p/3353905961

http://c.tieba.baidu.com/p/3353899997

http://c.tieba.baidu.com/p/3353899117

http://c.tieba.baidu.com/p/3353897901

http://c.tieba.baidu.com/p/3353912601

http://c.tieba.baidu.com/p/3353911106

http://c.tieba.baidu.com/p/3353909641

http://c.tieba.baidu.com/p/3353908731

http://c.tieba.baidu.com/p/3353918532

http://c.tieba.baidu.com/p/3353916671

http://c.tieba.baidu.com/p/3353915532

http://c.tieba.baidu.com/p/3353932494

http://c.tieba.baidu.com/p/3353931175

http://c.tieba.baidu.com/p/3353929436

http://c.tieba.baidu.com/p/3348228581

http://c.tieba.baidu.com/p/3353836792

http://c.tieba.baidu.com/p/3348038141

http://c.tieba.baidu.com/p/3353721933

http://c.tieba.baidu.com/p/3353832562

http://c.tieba.baidu.com/p/3348036152

http://c.tieba.baidu.com/p/3353725953

http://c.tieba.baidu.com/p/3353809347

http://c.tieba.baidu.com/p/3348033983

http://c.tieba.baidu.com/p/3353634819

http://c.tieba.baidu.com/p/3348030767

http://c.tieba.baidu.com/p/3347963870

http://c.tieba.baidu.com/p/3353894141

http://c.tieba.baidu.com/p/3353882414

http://c.tieba.baidu.com/p/3353892081

http://c.tieba.baidu.com/p/3353871521

http://c.tieba.baidu.com/p/3353623846

http://c.tieba.baidu.com/p/3353627803

http://c.tieba.baidu.com/p/3353840487

http://c.tieba.baidu.com/p/3353632403

http://c.tieba.baidu.com/p/3354370368

http://c.tieba.baidu.com/p/3354534701

其实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系统原理。同时作者那种层层递进,抽丝剥茧式的分析模块的手法也非常值得学习。

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

时间: 10-14

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

Java程序员转Android开发必读经验

小编最近几日偷偷的发现部分Java程序员想转安卓开发,故此加紧补充知识,为大家搜集资料,积极整理前人的经验,希望可以给正处于困惑中的你,带来些许的帮助. 啰哩啰嗦的说说Java和Android程序的区别: Android是主流智能手机的操作系统,Java是一种开发语言,两者没有好坏优劣之分,只是两种职业岗位的选择.学安卓从事移动互联方向开发,学Java从事软件.网站开发.而安卓上的应用大多是Java编写的,所以建议在安卓前期的Java学习阶段中,要用心学好. 言简意赅的说说“转”前的准备: 其实

C#程序员学习Android开发系列之学习路线图

通过前面的3篇博客已经简单的介绍了Android开发的过程并写了一个简单的demo,了解了Android开发的环境以及一些背景知识. 接下来这篇博客不打算继续学习Android开发的细节,先停一下,明确一下接下来的学习目标以及学习路线. 一.对Android开发的基本认识 1.Android原生开发是基于Java语言的,由于我比较擅长C#,所以对Java语言本身不太熟练,需要加强Java语言基础的练习,这一块我会穿插到具体的知识点练习当中,并且在必要的地方给出与C#语言的对比(其实基本上在语法层

C#程序员学习Android开发系列之ListView

上篇博客解决了Android客户端通过WebService与服务器端程序进行交互的问题,这篇博客重点关注两个问题,一个是Android应用程序如何与本机文件型数据库SQLite进行交互,另一问题则是如何在ListView中按照我们想要的界面效果进行展示.限于篇幅这篇重点讲ListView,下篇博客重点阐述SQLite. ListView是一个常用的数据显示控件,假设我们要做一个简单的界面,如图所示. 这张图是我直接从Android平板电脑(Android 4.2.2)上面截图下来的,就是一个普通

C#程序员学习Android开发系列之SQLite

上篇博客提到过SQLite,它是嵌入式数据库,由于其轻巧但功能强大,被广泛的用于嵌入式设备当中.后来在智能手机.平板流行之后,它作为文件型数据库,几乎成为了智能设备单机数据库的必选,可以随着安卓app打包到apk文件当中. SQLite的官方网站是http://www.sqlite.org/,可以任意下载,上面也有详尽的文档可以参考,这篇博客重点关注SQLite在Android开发中如何使用. 在Android开发中,推荐建立一个类继承自SQLiteOpenHelper来创建数据库操作类,比如:

一个java程序员自学IOS开发之路(一)

首先自我介绍吧,南昌大学软件工程专业2015界毕业生,从大学牲变到程序猿,由于在学校里只学了Java语言和B/S架构开发,于是乎出来实习和工作也是搞Java网页开发. 但是作为一名果粉,现阶段想转IOS开发,最近也开始自学了,写点东西记下来吧 2015/9/17 Day 1 安装虚拟机并安装Mac OS X系统(苦逼的我还在用联想Y-470) 开始看C语言基础,由于大学里学过一点,还是比较轻松的 2015/9/19 Day 2 由于Java中没有指针,开始看指针的相关知识 2015/9/20 D

一个java程序员自学IOS开发之路(十)

2015/11/26 Day 41 今天开始学起触摸事件 在用户使用app过程中,会产生各种各样的事件 iOS中的事件可以分为3大类型 响应者对象 在iOS中不是任何对象都能处理事件,只有继承了UIResponder的对象才能接收并处理事件.我们称之为“响应者对象” UIApplication.UIViewController.UIView都继承自UIResponder,因此它们都是响应者对象,都能够接收并处理事件 UIResponder内部提供了以下方法来处理事件 触摸事件 - (void)t

java程序员五年工作学习经验总结

首先发这个贴不为什么,只是想总结一下自己这几年的经验,也感慨一下,毕竟也过了五年多了,梳理好自己的过去,才能更好的规划未来,也让各位能少走一些弯路,虽然我们很年轻,但毕竟时间是宝贵的,珍惜现在,把握机会才是真理.  这几年来,我最大的感想就是一句话:多看.多写.多想.多问.多分享.多优化.多运动...1.[多看]  读万卷书,行万里路.多看书,多看别人写的代码,多看别人的问题,多看相关技术书,多看文档,多看.....  很多东西都需要我们用双眼来看,当然,很多人肯定会说,哪有那么多时间来做这些事

一个java程序员自学IOS开发之路(十四)

上个月实在是太忙了,在系统上线的前几天,业务人员还在不停的提新需求,真是醉了.上线那天晚上一直在出问题,熬到2点才搞定 2015/12/12 Day 47 今天开始学习网络编程 在移动互联网时代,移动应用,只有通过网络进行数据交互,才能保持活力!缺少了数据变化,无论多么华丽的应用,终将变成一潭死水 移动网络应用(良好的UI+良好的用户体验): 即时通讯:QQ 新闻:网易.凤凰新闻 视频:优酷.百度视频 音乐:虾米.QQ音乐 照片:Facebook.Flickr LBS(基于位置服务):高德.大众

一个java程序员自学IOS开发之路(十三)

2015/12/09 Day 46 今天学习多线程 多线程的优缺点 优点 充分发挥多核处理器优势,将不同线程任务分配给不同的处理器,真正进入“并行运算”状态 将耗时的任务分配到其他线程执行,由主线程负责统一更新界面会使应用程序更加流畅,用户体验更好 当硬件处理器的数量增加,程序会运行更快,而程序无需做任何调整 缺点 新建线程会消耗内存空间和CPU时间,线程太多会降低系统的运行性能 iOS的三种多线程技术 NSThread  使用NSThread对象建立一个线程非常方便 但是!要使用NSThrea