技术门诊是51CTO社区品牌栏目,每周邀请一位客座专家,为广大技术网友解答疑问。从热门技术到前沿知识,从技术答疑到职业规划。每期一个主题,站在最新最热的技术前沿为你引航!

  本期特邀《Android经典应用程序开发》一书作者韩超老师,针对Android应用程序开发的问题给予解答,欢迎网友积极提问,与专家一起讨论!

【241期门诊集锦】正确高效的Android应用程序开发_第1张图片

查看本期门诊精彩实录:http://doctor.51cto.com/develop-255.html

参与最新技术门诊:OSSIM,企业信息安全管理利器

精选本期网友提问与专家解答,以供网友学习参考。

Q:韩老师,你好!我是一名具有十年JAVA程序经历的程序开发者,由于工作需要转型Android系统开发,现在属于学习阶段的新手,感觉凭借自己深厚的C语言基础仍很吃力。请问像我这样的熟练程序员如何尽快转向移动开发,在转型中我的优势是什么?需要在那些方面做些改进?另外需要有那些技术上突破?请不赐解答!
A:
你的问题比较典型。
第一,你的语言基础肯定是有优势的,《Android经典应用程序开发》比较适合你这样没有语言障碍的人来阅读。
第二,如果你是Java SE的工程师,Android UI的设计理念和AWT具有很大类似性,尤其控件和布局的组织方面。
第三,Android的图形系统比较特殊,分为2D,3D和可绘制内容几个部分,这是绘图的原始内容。正如《Android经典应用程序开发》第五章所介绍的那样。
第四,你想让转入移动开发,需要了解嵌入式系统和桌面的区别。Android自动
适应各种小屏幕的特点,是你在UI的时候需要注意的。
第五,技术上的突破,最大的方向就是通过Android应用开发,转向系统开发。

Q:韩老师,您好,我接触android的时间不长,但是我觉得安卓的编程跟linux编程是差不多的,是不是先掌握了linux编程会比较好一点呢?
A:
如果你想进行Android应用的开发,暂时不需要Linux的技术,学习Java编程技术即可。如果你想进行Android系统的开发,并且关注底层,那么:Linux是本,Android是末。

Q:韩老师您好,学习android不久,从目前形势看,android再火3年左右吧!之后应该会慢慢下滑——,从长久方面看,J2ee 和 android,哪个方面更合适?
A:
首先,对于技术的未来的走向,我不做估计。我想你的估计看中的不是技术本身,而是技术给个人带来的内容。其次,不要把筹码都压在一个技术上,IT发展很快,转型是每个工程师的必由之路。Java EE用于服务器端,Android用于嵌入式系统,二者原本应用领域不同。第三,关于Java EE(注意:J2ee是其旧名字)对于Java系统的开发,并不应该认为Java EE就高于Java SE,Java SE又高于Java ME,它们是Java在不同领域的应用,技术本身并无高低之分。从事JavaEE但是只做配置性工作的工程师,也是很初级的。Java SE是关键的基础,要成为一个真正有底蕴的工程师,决不可以绕过Java SE直接接触Java EE。Java SE的编程技术,类库是基础(与Android类似),还有一些特殊的技术,例如JMX, JAXP,IDL,RMI等等。Java EE本身就是Java SE的一个“增量”,关注CS架构,业务层,Bean等。想进行实际的Java EE开发,还是要以Java SE为基础。当然目前有些人的确是在脱离实现的情况下,空谈Java的架构和概念,我个人认为这不是正确的做法。

Q:老师您好,我发现现在越来越多的人已经进军android了,就像之前的java一样,人越来越多了。各种培训班也开始培训android了。所以我觉得做android ui或应用层面的开发,或许会沦落为和之前的java开发人员一样,人多肉不是那么多的情况。想请教老师的是如何避免自己陷入这样的困境呢?我们应该学习些什么知识来强大自己呢?我看到很多老师推荐android系统级的开发或者移植。那么如果选择系统级的开发和移植的话 您认为选择专于那一块会更好一些,因为毕竟一个人的精力有限,况且我们也应该术业有专攻。
A:
你好,你遇到的问题是一个普遍问题,我依次作出几点说明:
第一,可以明确地说,“java开发人员沦落”是一个错误的看法实际上是“低端的java开发人员沦落”Java系统博大精深,除了Java SE之外还有Java ME,Java EE和JavaFX涉及到你的电脑以及你所使用的网络的各个方面正是由于国内急功近利的开发和培训,产生了很多Java ME手机开发的低端工程他们的技术是短期催生的,技术底蕴浅,并且进行Java系统中较为简单的Java ME开发因此,他们的沦落是必然结果这并不代表Java技术的沦落,想要了解Java即使,建议你去看看英文的官方网站。
第二,关于“android ui或应用层面的开发”这部分的难度要大于Java ME手机开发但是,这部分的难度也不是太大,如果只是浅浅地学,沦落是必然的《Android经典应用开发》涉及的内容也多余UI层面学习好了这种应用开发,你会有一些转型的方向“非典型应用”,“系统级应用”,“系统定制”。
第三,关于“系统级的开发和移植”这是非常有前途的开发方面我的另外两本书《Android系统原理和应用开发》和《Android系统级深入开发-移植和调试》是系统级方向的。有几个要点你可以参考:
[*] 如果不认真打好Linux基础,这部分就不用想了
[*] 如果你熟悉了Linux用户空间的开发,做Android框架开发比较容易
[*] 如果你进一步熟悉了Linux驱动开发,做Android移植比较容易

Q:关注以下问题:
1、Android在做屏幕适应时,除了建立多套Layout,有没有其他好的方法?
2、Android开发,如果不做底层开发,仅作应用开发,发展钱途如何?
3、Android在商业应用软件移动化中有没有发展空间?
4、做其他移动平台开发的如何快速转入Android?
A:
1.一个Layout可以自适应,也可以采取排列组合的方式建议参考《Android经典应用开发》的3.2和7.5。
  2. 有一定的前途,但是你要注意一个问题仅做应用开发≠仅做典型应用开发典型应用是基础,精通后,你可以过渡到非典型的引用开发我在随后的其他书籍中会有所介绍。
  3.现在还没有看到很明确的前景,在tablet平板电脑中可能有所发展。
  4.这要看你是什么平台的。如果做是Java ME应用的,转入Android应用还算容易对于Android底层开发,必须从Linux开始,我在前面的出版的书籍《Android系统原理和应用开发》、《Android系统级深入开发-移植和调试》已经强调过多次。