《阿里巴巴Android开发手册(规约)》,这意味着华为手机的短信功能将能像苹果

摘要2018年1 月 18 日,华为宣布将与谷歌合作采用推广 RCS
技术,在不久的将来,所有的华为手机将预装 Android
Messages,并默认为短信的应用程序。这意味着华为手机的短信功能将能像苹果
iMessage 或微信一样进行信息的 …概述2018年 1 月 18
日,华为宣布将与谷歌合作采用推广 RCS
技术,在不久的将来,所有的华为手机将预装 Android
Messages,并默认为短信的应用程序。这意味着华为手机的短信功能将能像苹果
iMessage 或微信一样进行信息的收发,并可通过 Google Duo、LTE
进行视频通话等。什么是 RCS 技术?RCS(Rich Communication
Suite)即融合通信,从运营商的层面直接与手机整合,类似微信或 iMessage
嵌入取代手机终端原通话、原消息、原联系,固化成为手机的通话、信息、联系的基础功能。目前,智能手机的短信解决方案仍是
SMS/MMS,RCS 与普通的短信不同之处在于它带来了更多的增强功能。RCS
旨在创建一个 SMS
风格的跨运营商通信服务,提供一些附加功能,例如群组消息、通过 WiFi
发送短信、语音对话、阅读反馈(显示信息是否已读)、文件共享等,类似于
WhatsApp 和微信之类的 App。总而言之,RCS 是取代现有的 SMS/MMS
服务,模仿现代 IP 消息服务所有最佳功能的下一代 SMS。据报道,RCS
有两大特点:一是 Native
原生态地址本,这一增强型地址本基于手机本地地址本演进而来的,不仅提供了传统地址本中用户的基本个人信息,还在此基础上还作为了更丰富的功能入口;其次是
RCS
能实现全球互联互通,它能充分利用运营商现有的号码资源,实现全球互联互通。Google
如何推广 RCS?Google 认为每天都有数十亿用户使用短信服务,但是 SMS
中的功能并没有跟上现代的消息应用程序,RCS
是运营商信息传递的新标准,带来了很多用户期望从移动消息传递中获得的许多功能。Google
曾在 2015 年收购了移动运营商 Jibe Mobile,Jibe
致力于将新世界的互联网与旧世界的电讯联系起来,通过创新让传统的运营商在互联网的浪潮下变得更具有竞争力。该公司是
RCS
服务的领先供应商,专注于帮助运营商将各种消息支持到其服务中,同时支持跨网络的互操作性。所以它不仅需要网络运营商的支持,还需要手机制造商的支持。对此,Google
曾在 2016
年与全球多家运营商达成合作,包括德国电信、墨西哥美洲电信公司、澳洲电信等,后来也与手机厂商
LG、诺基亚、中兴合作,但以华为目前在通信界的地位来看,Google
这次寻求华为的支持也是情理之中的。对此,Google 高级副总裁 Hiroshi
Lockheimer 表示,Google 很高兴能与华为合作,通过 RCS 和 Android Massage
将为全球数以亿计的用户带来更好的本地消息体验,华为作为网络技术领域的全球领先运营商,同时也是全球最大的手机制造商之一,这次合作,将会加速
RCS 的推广,更多的用户将可以访问 RCS 消息。而华为方表示,Android
Messages 将在未来几个月内在华为手机上推出,我们期待就好。

摘要北京时间 3 月 21 日,Oracle 官方宣布 Java 10 正式发布。这是 Java
大版本周期变化后的第一个正式发布版本,非常值得关注。引言北京时间 3 月 21
日,Oracle 官方宣布 Java 10 正式发布。这是 Java
大版本周期变化后的第一个正式发布版本(详见这里),非常值得关注。你可以点击以下地址即刻下载:
9 月,Oracle 将 Java 大版本周期从原来的 2-3
年,调整成每半年发布一个大的版本。而版本号仍延续原来的序号,即 Java
8、Java 9、Java 10、Java
11…..但和之前不一样的是,同时还有一个版本号来表示发布的时间和是否为
LTS(长期支持版本),比如 Java 10 对应 18.3。如下示例:/jdk-10/bin$
./java -versionopenjdk version “10” 2018-03-20OpenJDK Runtime
Environment 18.3 (build 10+46)OpenJDK 64-Bit Server VM 18.3 (build
10+46, mixed mode)需要注意的是 Java 9 和 Java 10 都不是 LTS
版本。和过去的 Java
大版本升级不同,这两个只有半年左右的开发和维护期。而未来的 Java
11,也就是 18.9 LTS,才是 Java 8 之后第一个 LTS 版本(得到 Oracle
等商业公司的长期支持服务)。这种发布模式已经得到了广泛应用,一个成功的例子就是
Ubuntu Linux 操作系统,在偶数年 4 月的发行版本为
LTS,会有很长时间的支持。如 2014 年 4 月份发布的 14.04 LTS,Canonical
公司和社区支持到 2019 年。类似的,Node.js,Linux kernel,Firefox
也采用类似的发布方式。Java
未来的发布周期,将每半年发布一个大版本,每个季度发布一个中间特性版本。这样可以把一些关键特性尽早合并入
JDK 之中,快速得到开发者反馈,可以在一定程度上避免 Java 9
两次被迫推迟发布日期的尴尬。下图为 2017 年 JavaOne 大会时,Oracle
公开的未来 Java 版本发布和支持周期图。Java 10 新特性这次发布的 Java
10,新带来的特性并不多。根据官网公开资料,共有 12 个 JEP(JDK Enhancement
Proposal 特性加强提议),带来以下加强功能:JEP286,var
局部变量类型推断。JEP296,将原来用 Mercurial 管理的众多 JDK
仓库代码,合并到一个仓库中,简化开发和管理过程。JEP304,统一的垃圾回收接口。JEP307,G1
垃圾回收器的并行完整垃圾回收,实现并行性来改善最坏情况下的延迟。JEP310,应用程序类数据
(AppCDS)
共享,通过跨进程共享通用类元数据来减少内存占用空间,和减少启动时间。JEP312,ThreadLocal
握手交互。在不进入到全局 JVM 安全点 (Safepoint)
的情况下,对线程执行回调。优化可以只停止单个线程,而不是停全部线程或一个都不停。JEP313,移除
JDK 中附带的 javah 工具。可以使用 javac -h 代替。JEP314,使用附加的
Unicode
语言标记扩展。JEP317,能将堆内存占用分配给用户指定的备用内存设备。JEP317,使用
Graal 基于 Java 的编译器,可以预先把 Java
代码编译成本地代码来提升效能。JEP318,在 OpenJDK
中提供一组默认的根证书颁发机构证书。开源目前 Oracle 提供的的 Java SE
的根证书,这样 OpenJDK
对开发人员使用起来更方便。JEP322,基于时间定义的发布版本,即上述提到的发布周期。版本号为$FEATURE.$INTERIM.$UPDATE.$PATCH,分别是大版本,中间版本,升级包和补丁版本。部分特性说明1.
var 类型推断。这个语言功能在其他一些语言 (C#、JavaScript) 和基于 JRE
的一些语言 (Scala 和 Kotlin) 中,早已被加入。在 Java
语言很早就在考虑,早在 2016 年正式提交了 JEP286
提议。后来举行了一次公开的开发者调查,获得最多建议的是采用类似 Scala
的方案,“同时使用 val 和 var”,约占一半;第二多的是“只使用
var”,约占四分之一。后来 Oracle 公司经过慎重考虑,采用了只使用 var
关键字的方案。有了这个功能,开发者在写这样的代码时:ArrayList myList =
new ArrayList()可以省去前面的类型声明,而只需要var list = new
ArrayList()编译器会自动推断出 list
变量的类型。对于链式表达式来说,也会很方便:var stream =
blocks.stream(); … int maxWeight = stream.filter(b -> b.getColor()
== BLUE) .mapToInt(Block::getWeight) .max();开发者无须声明并且 import
引入 Stream 类型,只用 stream 作为中间变量,用 var
关键字使得开发效率提升。不过 var
的使用有众多限制,包括不能用于推断方法参数类型,只能用于局部变量,如方法块中,而不能用于类变量的声明,等等。另外,我个人认为,对于开发者而言,变量类型明显的声明会提供更加全面的程序语言信息,对于理解并维护代码有很大的帮助。一旦
var 被广泛运用,开发者阅读三方代码而没有 IDE
的支持下,会对程序的流程执行理解造成一定的障碍。所以我建议尽量写清楚变量类型,程序的易读维护性有时更重要一些。2.
统一的 GC 接口在 JDK10 的代码中,路径为
openjdk/src/hotspot/share/gc/,各个 GC 实现共享依赖 shared 代码,GC
包括目前默认的 G1,也有经典的 Serial、Parallel、CMS 等 GC 实现。3.
应用程序类数据(AppCDS)共享CDS 特性在原来的 bootstrap
类基础之上,扩展加入了应用类的 CDS(Application Class-Data Sharing)
支持。其原理为:在启动时记录加载类的过程,写入到文本文件中,再次启动时直接读取此启动文本并加载。设想如果应用环境没有大的变化,启动速度就会得到提升。我们可以想像为类似于操作系统的休眠过程,合上电脑时把当前应用环境写入磁盘,再次使用时就可以快速恢复环境。

摘要阿里巴巴于近日为广大程序员再送上重磅开春好礼:《阿里巴巴Android开发手册(规约)》。该开发规范在阿里内部经过了长期的修缮,现已总结成册,向所有移动开发者、技术爱好者开放,希望帮助开发者码出高效、码出质量
…1、前言阿里巴巴于近日为广大程序员再送上重磅开春好礼:《阿里巴巴Android开发手册(规约)》。该开发规范在阿里内部经过了长期的修缮,现已总结成册,向所有移动开发者、技术爱好者开放,希望帮助开发者码出高效、码出质量,提升系统的质量、协作的高效性。下载方式:重磅发布:《阿里巴巴Android开发手册(规约)》[附件下载]2、致谢贡献者《阿里巴巴Android开发手册》项目组成员,排名不分先后:芸墨(淘宝技术部)、矢亮(智能场景事业部)、游僧(淘宝技术部)、景宝(淘宝技术部)、邻云(闲鱼技术部)、尚节(猫客技术部)等。还有很多阿里巴巴移动端工程师参与,在此一并表示感谢,感谢孤尽(《阿里巴巴Java开发手册》主要作者)对手册的指导。3、这本手册(规约)有什么价值?2017年天猫双11,成交额再创新高达到1682亿元,其中无线交易额占比90%;2017年12月,钉钉在诞生1075天后,注册用户突破1亿;而在同期,闲鱼用户也突破了2亿……面对如此大的用户量和流量,这些App依然可以做到“丝般顺滑”。在这背后,是阿里巴巴移动开发团队的不断探索和优化。久而久之,这些经验汇总成了一套完善的开发规范,指导工程师开发出体验好、性能优、稳定性佳、安全性高的App。本手册(规约)以开发者为中心视角分为Java语言规范(遵循《阿里巴巴Java开发手册(规约)》),Android资源文件命名与使用,Android基本组件,UI与布局,进程、线程与消息通信,文件与数据库,Bitmap、Drawable与动画,安全以及其他等九大部分。这是一个广义的编码规范,
一本随时可以查阅的技术参考,你在手册中可以找到很多的技术规范、最佳实践,避坑指南等,它是每一位优秀移动开发者手里的必备好书。4、本手册规约)有哪些亮点?根据约束力强弱,规约依次分为强制、推荐、参考三大类:【强制】:必须遵守,违反本约定或将会引起严重的后果;【推荐】:尽量遵守,长期遵守有助于系统稳定性和合作效率的提升;【参考】:充分理解,技术意识的引导,是个人学习、团队沟通、项目合作的方向。对于规范条目的延伸信息中,增加了规范的解释说明和代码示例,“正例”提倡什么样的编码和实现方式,“反例”说明需要提防的雷区,以及错误案例,让开发者透彻理解每一条规范内容。5、阿里技术大牛对手册如何评价?淘宝技术负责人南天:车同轨,书同文,《阿里巴巴Android开发手册》既是高效合作的基础,也是深度创新的开始。淘宝基础平台部负责人天施:写出简洁优雅、性能好、兼容性考虑全面的Android代码是一件不容易的事情,更是优秀Android架构师功底所在。淘宝资深技术专家玄黎:稳定、体验优的客户端来源于一行行健壮的代码,手册沉淀了阿里多年的端侧经验,可以帮助Android工程师少走弯路。一个优秀的工程师和一个普通工程师的区别,不是现在满天飞的架构图,他的功底就是体现在他写的每一行代码上。别人都说我们是码农,但我们知道,自己是个艺术家。也许我们不过多在意自己的外表和穿着,但我们不羁的外表下,骨子里追求着代码的美、质量的美。而代码规约其实就是一个对美的定义。6、《阿里巴巴Java开发手册(规约)》目录前言一、Java语言规范二、Android资源文件命名与使用三、Android基本组件四、UI与布局五、进程、线程与消息通信六、文件与数据库七、Bitmap、Drawable与动画八、安全九、其他附录-认证考试7、部分内容截预览

相关文章