在我看来,从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. 根据得到的用户兴趣,推送他感兴趣的内容

,获取用户资料,分析用户兴趣

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

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

2020年末知识大总结:Java程序员转Android开发必读经验一份相关推荐

  1. 2020年末知识大总结:Java程序员转Android开发必读经验一份,嵌入式开发入门教程

    Android是主流智能手机的操作系统,Java是一种开发语言,两者没有好坏优劣之分,只是两种职业岗位的选择.学安卓从事移动互联方向开发,学Java从事软件.网站开发.而安卓上的应用大多是Java编写 ...

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

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

  3. JAVA程序员基本功:开发实现类隐藏及应用

    转载自:http://www.cn-java.com/www1/?action-viewnews-itemid-68459 原文更精彩! 一.类隐藏的基本建议 虽然在JAVA语言中要实现类的隐藏非常简 ...

  4. Java程序员 面试如何介绍项目经验? Java程序员应该如何介绍自己的项目经验和自我介绍?面试如何突出自己

    Java程序员项目经验介绍:背景:姓名:张三:年龄:25:籍贯:安徽: 毕业学校:南京审计学院:工作经验:2年:求职城市:北京面试官你好,我叫张三,今年25岁,来自安徽,毕业于南京审计学院计算机专业, ...

  5. Java 程序员常用的开发工具

    1.常用开发工具 作为一名Java程序开发人员,可以的选择集成开发环境IDE(Integrated Development Environment)非常多,得益于Java是一门开源语言.有开源免费的: ...

  6. C#程序员转android开发

    随着3G网络的发展,android手机的普及.android软件开发必将掀起一股热潮.哥是名.net程序员,擅长的是C#语言,而android使用的是java.这咋一看两者矛盾,其实这两种语言之间有着 ...

  7. .net程序员业余Android开发赚点外快(介绍一下自己的经验)

    记得是11年10月份开始研究android的,当时还不会java,听说android比较火,自己也买了个垃圾android机,平时工作也不是特别忙,于是我就突发奇想,想试试做一下android应用可不 ...

  8. 程序开发工具java_15款Java程序员必备的开发工具

    对于Java,有两种截然不同的观点:一种认为Java是最简单功能最强大的编程语言之一,另一种则表示这种编程语言既难用又复杂.下面这些工具或许功能和作用不同,但是有着一个共同的主旨,那就是--它们都是为 ...

  9. java程序 开发工具_15款Java程序员必备的开发工具

    如果你是一名Web开发人员,那么用膝盖想也知道你的职业生涯大部分将使用Java而度过.这是一款商业级的编程语言,我们没有办法不接触它. 对于Java,有两种截然不同的观点:一种认为Java是最简单功能 ...

最新文章

  1. python中get和set使用_Python中的__get__与__set__
  2. GPU 图像并行处理
  3. thinkphp 5 stdClass Call to undefined
  4. Opportunity search in backend for status - some default system status
  5. ORACLE经常使用系统查询
  6. tqdm使用(Python进度条)
  7. php报错怎么改,php 怎么设置报错级别 和 控制报错[转]
  8. javacc解析json报错
  9. java中key的作用_key word ‘final’ 在java 中作用
  10. mysql的知识_mysql基础知识
  11. lintcode-76-最长上升子序列
  12. EfficientNet论文解读
  13. 如何使单片机复位可靠,单片机复位电路?
  14. 微信小程序—写字板、手写签名(高仿毛笔效果)让汉字引领世界
  15. 微信H5分享 代码和详细配置步骤 js + Java 代码
  16. 读取配置文件godotenv
  17. MATLAB实现图像灰度直方图
  18. MySQL(二)锁 ----- 表锁
  19. 带头双向循环链表的模拟实现
  20. C语言入门题库——计算圆面积和周长

热门文章

  1. SCI科技论文英语翻译的一点个人心得
  2. Java中高级面试题部分答案解析(3)
  3. P6770 [USACO05MAR]Checking an Alibi 不在场的证明(spfa)
  4. 操作系统解决吸烟者问题
  5. java中将秒转化为几小时几分钟几秒的方法
  6. 无需安装的Linux Live CD--第二篇:实战Knoppix
  7. JavaEE 7教程
  8. java面试题(一)Java面试问题集
  9. CheckBox复选框
  10. PDF拆分工具怎么用?如何把一个PDF文件拆分成多个