Java程序员如何转Android开发
最近几日偷偷的发现部分Java程序员想转安卓开发,故此加紧补充知识,为大家搜集资料,积极整理前人的经验,希望可以给正处于困惑中的你,带来些许的帮助。
啰哩啰嗦的说说Java和Android程序的区别:
Android是主流智能手机的操作系统, Java 是一种开发语言,两者没有好坏优劣之分,只是两种职业岗位的选择。学安卓从事移动互联方向开发,学Java从事软件、网站开发。而安卓上的应用大多是Java编写的,所以建议在安卓前期的Java学习阶段中,要用心学好。
言简意赅的说说“转”前的准备:
其实Java程序员要自学安卓开发的基础知识还是没有什么难度的,毕竟语言相通,特性相似,阅读安卓源代码的门槛以比较低一些,作为能够考虑“转”的合格的程序员的你,自学能力和相关的基础知识应该不是问题,学习安卓也相对比较轻松一些。
所以Java程序员转安卓开发可以看做是一次“增量更新”,只需要学习一下安卓的基本组件:Activity、ContentProvider、Service、BroadcastReceiver;
了解一下安卓中的Intent,Handler,Adapter以及各类事件的传递方式(onClick,onTouch等);
同时辅助一定的代码量,像JNI、AIDL什么的都可以看一下;
你还要摒弃“UI元素像素位置”这个概念,安卓本身是允许通过设定元素位置来制作UI的,如果你这样做导致的结果便是大批机器不适配,http://www.4008060066.com/db/那么显示效果就有点惨不忍睹了,所以不要妄想通过获取屏幕大小来调整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系统原理。同时作者那种层层递进,抽丝剥茧式的分析模块的手法也非常值得学习。
转载于:https://my.oschina.net/4008060066/blog/323923
Java程序员如何转Android开发相关推荐
- java程序员如何进行物联网开发
树莓派作为它作为全新的物联网开发方式,其的家族越来越强大,从1A到当前的4B系统列为主,另外还有zero系列,计算模块,不久前推出了pi pico开发板,其价格比较低,适合各种人学习从儿童编程到开发者 ...
- 2018年,Java程序员转型大数据开发,是不是一个好选择?
近日网上有一篇关于Java程序员职场生存现状的文章"2017年 Java 程序员,风光背后的危机",在Java程序员圈子里引起了广泛关注和热议. 2017年,Java 程序员面临更 ...
- 作为一个程序员怎么通过android开发赚钱
上面是一个程序员通过Android开发每天的收入,信则有! 自己学安卓差不多,有一年了.我本来是从事javaweb开发的,可能学习安卓上手会快点.
- Java 程序员必备的辅助开发神器(2022 年版),建议收仓
持续集成 Git Bash(Git 客户端) :https://git-scm.com Gitea(Git 私服):https://gitea.io Gitee(国内开源 Git 私服):https: ...
- Java程序员必备的辅助开发神器(2022年版)
持续集成 Git Bash(Git客户端) :https://git-scm.com Gitea(Git私服):https://gitea.io Gitee(国内开源Git私服):https://gi ...
- Java程序员转Android开发必读经验
小编最近几日偷偷的发现部分Java程序员想转安卓开发,故此加紧补充知识,为大家搜集资料,积极整理前人的经验,希望可以给正处于困惑中的你,带来些许的帮助. 啰哩啰嗦的说说Java和Android程序的区 ...
- 2020年末知识大总结:Java程序员转Android开发必读经验一份,嵌入式开发入门教程
Android是主流智能手机的操作系统,Java是一种开发语言,两者没有好坏优劣之分,只是两种职业岗位的选择.学安卓从事移动互联方向开发,学Java从事软件.网站开发.而安卓上的应用大多是Java编写 ...
- 程序员不知道用什么开发工具?我来告诉你(有需要工具的小伙伴私聊我哦)
程序员的开发工具 开发工具 eclipse(免费) eclipse是开放源代码的.基于Java的可扩展开发平台.它是java程序员常使用的开发工具,是一款免费的开发工具,在IDEA还没有盛行之前,ec ...
- 2019年的面试经验:Java程序员越来越悲催了!
就今年大环境来看,跳槽成功的难度比往年高很多,一个明显的感受:今年的Java技术栈面试,无论一面还是二面,都特别考验Java程序员的技术功底. 最近有人搜集了93套腾讯.阿里.美团.百度.网易等公司9 ...
最新文章
- 适配器模式(三种)简单使用
- 关于研究生申请的心态:submitted之后就等一下结果,不要着急
- 前端开发环境(2017)
- java 字节码加载_java面试题jvm字节码的加载与卸载
- 搭建空的maven多模块项目架构并且上传到远程git仓库(超详细 cmd命令版本)
- iOS开发 - 在状态栏显示FPS,CPU和内存信息
- 离线版MSDN下载地址
- 【原创】VBA学习笔记(21) VBA函数,appliacation函数,工作表函数,三种同名函数对比举例(3个例子)
- js怎么获取ueditor值_js获取UEditor富文本编辑器中的图片地址
- 不懂异或?一文详解移位操作符,位操作符
- 男儿当杀人!!!!(诗一首)
- 2019年,为大家推荐9个高质量公众号
- 基本搜索技术--人机博弈算法(极大极小,深度优先,负极大值)
- 【AI】PaddlePaddle实现自动语音识别
- 在Fedora 12上安装谷歌应用程序
- 某公司高管疾呼:底层程序员离职率太高,有人入职不到半年就走!建议把恶意离职加入征信,让年轻人对公司有起码的尊重!...
- Qt如何改变鼠标形状
- python 自动化办公要装哪些模块_Python自动化办公(内容)
- vue中使用jointjs的问题
- 世界八大男士衬衫品牌
热门文章
- 重庆三调工作中将mdb数据转换成vct格式的分析
- ACM-polya定理
- php制作特效文字,Photoshop制作漂亮的水滴字特效
- 1【计算机专业必备基础知识】《计算机体系结构基础》(胡伟武)速读笔记(上篇)“这位同学,请描述一下PPT完成翻页时电脑软硬件是如何协作的?”
- Extraordinarily Tired Students, UVA - 12108(模拟)
- 智能井盖安全监测系统,提高城市井盖安全性
- usbhid类之mouse、keyboard
- 差分法求高阶等差数列的通项公式
- 星宿UI源码V1.3 wordpress系统资讯资源下载小程序源码开源下载
- [AHK]PPT中快速设置图形填充色