选择 Java 编写 iOS 与 安卓 App的八大理由
【编者按】本文作者为 RoboVM 的 CEO 兼联合创始人 Henric Müller,主要介绍选用 Java 编写移动应用的八大理由。文章系国内 ITOM 管理平台 OneAPM 编译呈现。
在过去的十年中,Java一直很火。2015年,它又被再次证明是业内中坚力量——在TIOBE语言指数中占据绝对优势。虽然TIOBE排名的计算方法存在一些问题,但是与其他流行排名如RedMonk和PYPL结合来看,Java语言的受欢迎程度还是显而易见的。
作为行业内的领先选手,Java语言的增长步伐一直比较稳定。但是如何解释它最近的激增呢?甲骨文 使用Java 8 编写Lambdas和Streams显然是很重要的一大原因。此外,在增速极快的移动平台上面担任通用语言更是让Java如虎添翼。随着近来安卓向OpenJDK的靠拢,加上 Java 9 的步步逼近,笔者相信Java 的活跃度将持续增长。
Java语言的诸多益处显然引来了新鲜血液,但是作为老兵,我们知道久经考验的平台实力才是Java真正吸引开发者的原因。下面列出了8个你应该使用Java编程的原因:
1. 静态类型
随着后端和移动应用复杂度的不断增加,拥有一个易于维护和重构的代码库至关重要。静态类型确保了开发者在整个项目的开发周期中都保持理智,它在编译时就能发现大量的程序错误,确保了代码最优化,从而保证Java在工具生态系统中绝对领先的地位。
2. 运行时管理
JVM的垃圾回收器有效降低了编写内存安全应用的复杂度,消除了手动内存管理时容易出现的大多数错误。而并发,作为在Java早期就已出现的重要属性,提供了线程安全回收,原始类型同步和简单易用的多线程API。反射(reflection)是运行时管理的最后一招,它确保了依赖注入(dependency injection)或面向方面(aspect oriented)编程等高级理念的实现。
3. 性能
考虑服务端应用的性能时,HotSpot JVM 的 JIT(Just-in-Time)编译器和它多种多样的垃圾回收器几乎让人毫不犹豫地选择Java。而提前(Ahead-of-Time)编译是移动平台上的主导机制。在安卓上,ART 为计算型重负荷提供了几乎原生的性能。而在 iOS 平台上,RoboVM 使用了 LLVM( C/C++/Objective-C/Swift编译所用的相同后端),从而达到与Objective-C和Swift相当或更好的性能表现。
4. 工具
如果不管理论上的益处,围绕语言的工具数量与质量才是真正决定语言成败的关键。Eclipse,IntelliJ和NetBeans之类的IDE(集成开发环境)是其他可比平台工具的优质对比标准。代码导航,重整,完善和模板使得书写和维护项目代码变得更为高效。代码热调换(hot-swapping),调试,性能分析和单元测试让你很轻易找到问题根源。源码控制、应用服务器管理以及编译和依赖管理的集成环境为你的项目部署提供了基础。
5. 庞大的社区
世界上大概有超过九百万Java程序员。这一数字进而催生了大量的Java会议,书籍,在线资源,论坛和培训计划。Java开发者可以从中选择来提高技能。相比于Java人才资源库,其他语言平台的资源显得微不足道。此外,由于Java语言同时应用于服务器端和移动应用端,Java开发者能更灵活地全栈中放光发热。
6. 第三方生态系统
不管你正尝试解决什么难题,几乎可以确认的是Java社区中已经有人提出了解决方案。你的后端需要大数据分析?没问题,你可以在众多方案中选择,如Hadoop,Spark或是Elasticsearch。不想亲自为手机应用写分析代码?Twitter Fabric或Parse,你拿来用就行。需要JSON在后端和移动应用上同时实现序列化?简单,添加Gson,然后在全站分享你的POJO和序列逻辑。有了Maven和Grable的帮忙,添加第三方库就像在编译文件里添加一段代码那样简单。
7. 备选语言
虽然Java语言一直都是Java虚拟机里面的首要语言,而且正变得更具表现力。但是平台架构同时也欢迎其他语言。最近几年, Kotlin,Scala或Clojure等语言的采纳率正不断提升,这不仅仅是因为它们的语言特性,更是因为它们与现有的Java生态系统具有互通性。
8. 代码分享
我们将最为重要的问题放在了最后。Java在后端运行,不管是安卓还是iOS,它覆盖了几乎所有的大型平台。它的可移植性使你能够跨平台共享大量代码,进而节省应用部署所需的成本与资源。使用那些免费且有用的资源,将精力放在你真正的产品上,以此获得用户的青睐!
2015年对Java来说是辉煌的一年。或许,借助这个契机,使用Java编写跨平台移动应用会给你的2016带来事业上的成功。
OneAPM 能为您提供端到端的 Java 应用性能解决方案,我们支持所有常见的 Java 框架及应用服务器,助您快速发现系统瓶颈,定位异常根本原因。分钟级部署,即刻体验,Java 监控从来没有如此简单。想阅读更多技术文章,请访问 OneAPM 官方技术博客。
本文转自 OneAPM 官方博客
原文链接: https://dzone.com/articles/8-reasons-your-next-mobile-ios-and-android-app-sho
选择 Java 编写 iOS 与 安卓 App的八大理由的更多相关文章
- 年过三十,我为什么要学习ios 与安卓App 移动端技术
今天跟我华为的同学谈了一些技术/人生方面的感悟,感觉自己的人生目标及后面的工作/生活有了一个比较清晰的认识与规划. 首先我谈了一下我为什么要学习ios与安卓技术,我其实不想通过这二门技术来提升我的薪酬 ...
- ios开发和安卓app开发有哪些区别
ios平台和Android平台开发APP应用程序主要区别:一.编码语言Android平台开发中是使用Java,ios平台则是使用的Objective-C和Swift.需要注意的是,如果你是要用ios进 ...
- 手机APP开发:学JAVA转安卓APP开发是不是很容易?
成都亿合云商小编为您分享:Android开发是以Java语言为基础的,Android 虽然使用Java 语言作为开发工具,但是在实际开发中发现,还是与Java SDK 有一些不同的地方.Android ...
- 用Xamarin和Visual Studio编写iOS App
一说开发 iOS app,你立马就会想到苹果的开发语言 Objective C/Swift 和 Xcode.但是,这并不是唯一的选择,我们完全可以使用别的语言和框架. 一种主流的替换方案是 Xamar ...
- 安卓App和java通信实例
服务器:放在电脑上运行的java文件 import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.I ...
- React++ node.js ++SQL Sever ++MySQL++ python ++ php ++ java ++ c++ c#++ java ++ android ++ ios ++Linux+
"C语言在它诞生的那个年代,是非常不错的语言,可惜没有OOP.当项目臃肿到一定程度,人类就不可控了. 为了弥补这个缺陷,C++诞生了.而为了应对各种情况,C++设计的大而全,太多复杂的特性, ...
- 如何Python写一个安卓APP
前言:用Python写安卓APP肯定不是最好的选择,但是肯定是一个很偷懒的选择,而且实在不想学习Java,再者,就编程而言已经会的就Python与Golang(注:Python,Golang水平都一般 ...
- 客户端是选择Java Swing还是C# Winform
登录|注册 mentat的专栏 目录视图 摘要视图 订阅 [专家问答]韦玮:Python基础编程实战专题 [知识库]Swift资源大集合 [公告]博客新皮肤上线啦 ...
- php后台对接ios,安卓,API接口设计和实践完全攻略,涨薪必备技能
2016年12月29日13:45:27 关于接口设计要说的东西很多,可能写一个系列都可以,vsd图都得画很多张,但是由于个人时间和精力有限,所有有些东西后面再补充 说道接口设计第一反应就是r ...
随机推荐
- RabbitMQ初学之二:直接发送消息到队列
一. 背景 总前提:队列无论是在生产者声明还是在消费者声明,只有声明了,才能在RabbitMQ的管理界面看到该队列 生产者直接发送消息到队列,消费者直接消费队列中的消息,而不用指定exchange并绑 ...
- EF 约定介绍
当前环境为EF Code First开发模式中 一.EF默认约定 1.常用约定 (1).当没有显示指定实体主键的时候,EF会默认将长得最像Id的属性(且类型为GUID)设为主键 (2).设计实体时,当 ...
- LetExpr表达式解读
Integer a = 0; a++; 举个例子,如下: package com.test19; public class BugReport<T> { private T n; publ ...
- Python -- 数据结构实现
1.堆栈(pyStack.py) class PyStack: def __init__(self, size=20): self.stack = [] self.size = size self.t ...
- 移动设备的HTML页面中图片实现滚动加载
如今移动互联网风靡全球,移动页面的元素也是丰富多彩,一个移动页面的图片超过10张已经是再正常不过的事情了.但是相对,很多移动用户还停留在2G,3G这样的网络中.那么这样带宽的用户,在浏览这样的页面时, ...
- activiti 临时笔记mark
public class TenMinuteTutorial { public static void main(String[] args) { // Create Activiti process ...
- JavaScript函数——预编译
四部曲 创建AO对象 找形参和变量声明,将变量和形参名作为AO属性名,值为undefined. 将实参值和形参值统一 在函数体内找函数声明,值赋予函数体. 权重按顺序依次增加.以下例子即可体现上述规则 ...
- 三种数据库访问——原生JDBC
原生的JDBC编程主要分一下几个步骤: (原生的JDBC编程指,仅应用java.sql包下的接口和数据库驱动类编程,而不借助任何框架) 1. 加载JDBC驱动程序: 2. 负责管理JDBC驱动程序的类 ...
- setInterval与setTimeout的区别
在制作网页动态效果时,一定会遇到某些需求,要求某段程序等待多时时间后再开始执行,就像在我们的生活中一样,待会儿再开始做一件事.在JavaScript中主要通过定时器实现此类需求,本文将对定时器做一个概 ...
- 转载:SQL中的case when then else end用法
SQL中的case when then else end用法 来源: http://www.cnblogs.com/prefect/p/5746624.html Case具有两种格式.简单Case函数 ...