【编者按】本文作者为 RoboVM 的 CEO 兼联合创始人 Henric Müller,主要介绍选用 Java 编写移动应用的八大理由。文章系国内 ITOM 管理平台 OneAPM 编译呈现。

在过去的十年中,Java一直很火。2015年,它又被再次证明是业内中坚力量——在TIOBE语言指数中占据绝对优势。虽然TIOBE排名的计算方法存在一些问题,但是与其他流行排名如RedMonkPYPL结合来看,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 FabricParse,你拿来用就行。需要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的八大理由的更多相关文章

  1. 年过三十,我为什么要学习ios 与安卓App 移动端技术

    今天跟我华为的同学谈了一些技术/人生方面的感悟,感觉自己的人生目标及后面的工作/生活有了一个比较清晰的认识与规划. 首先我谈了一下我为什么要学习ios与安卓技术,我其实不想通过这二门技术来提升我的薪酬 ...

  2. ios开发和安卓app开发有哪些区别

    ios平台和Android平台开发APP应用程序主要区别:一.编码语言Android平台开发中是使用Java,ios平台则是使用的Objective-C和Swift.需要注意的是,如果你是要用ios进 ...

  3. 手机APP开发:学JAVA转安卓APP开发是不是很容易?

    成都亿合云商小编为您分享:Android开发是以Java语言为基础的,Android 虽然使用Java 语言作为开发工具,但是在实际开发中发现,还是与Java SDK 有一些不同的地方.Android ...

  4. 用Xamarin和Visual Studio编写iOS App

    一说开发 iOS app,你立马就会想到苹果的开发语言 Objective C/Swift 和 Xcode.但是,这并不是唯一的选择,我们完全可以使用别的语言和框架. 一种主流的替换方案是 Xamar ...

  5. 安卓App和java通信实例

    服务器:放在电脑上运行的java文件 import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.I ...

  6. React++ node.js ++SQL Sever ++MySQL++ python ++ php ++ java ++ c++ c#++ java ++ android ++ ios ++Linux+

    "C语言在它诞生的那个年代,是非常不错的语言,可惜没有OOP.当项目臃肿到一定程度,人类就不可控了. 为了弥补这个缺陷,C++诞生了.而为了应对各种情况,C++设计的大而全,太多复杂的特性, ...

  7. 如何Python写一个安卓APP

    前言:用Python写安卓APP肯定不是最好的选择,但是肯定是一个很偷懒的选择,而且实在不想学习Java,再者,就编程而言已经会的就Python与Golang(注:Python,Golang水平都一般 ...

  8. 客户端是选择Java Swing还是C# Winform

      登录|注册     mentat的专栏       目录视图 摘要视图 订阅 [专家问答]韦玮:Python基础编程实战专题     [知识库]Swift资源大集合    [公告]博客新皮肤上线啦 ...

  9. php后台对接ios,安卓,API接口设计和实践完全攻略,涨薪必备技能

    2016年12月29日13:45:27    关于接口设计要说的东西很多,可能写一个系列都可以,vsd图都得画很多张,但是由于个人时间和精力有限,所有有些东西后面再补充   说道接口设计第一反应就是r ...

随机推荐

  1. 安卓开发——ListView控件(初始化ListView、列表刷新、长按添加menu)

    前言: ListView——列表,它作为一个非常重要的显示方式,不管是在Web中还是移动平台中,都是一个非常好的.不开或缺的展示信息的工具.在Android中,ListView控件接管了这一重担,在大 ...

  2. 线性表 (单链表、循环链表-python实现)

    一.线性表 线性表的定义: 线性表是具有相同数据类型的有限数据的序列. 线性表的特点: 出了第一个元素外,每个元素有且仅有一个直接前驱,除最后一个元素外有且只有一个后继. 线性表是一种逻辑结构,表示元 ...

  3. Springboot+ajax传输json数组以及单条数据的方法

    Springboot+ajax传输json数组以及单条数据的方法 下面是用ajax传输到后台单条以及多条数据的解析的Demo: 结构图如下: 下面是相关的代码: pom.xml: <?xml v ...

  4. Python -- 网络编程 -- 抓取网页图片 -- 豆瓣妹子

    首先分析页面URL,形如http://dbmeizi.com/category/[1-14]?p=[0-476] 图片种类对应编号: 1:'性感', 2:'有沟', 3:'美腿', 4:'小露点', ...

  5. Python -- 游戏开发 -- PyGame的使用

    弹球 pong.py import sys import pygame from pygame.locals import * class MyBallClass(pygame.sprite.Spri ...

  6. jquery插件开发三种方法

    1.好像之前看视频记录下来的,不记得了. //类级别插件开发,主要是在jQuery中定义全局方法: //第一种写法 jQuery.myFunc = function(str){ alert(" ...

  7. 关系型数据库MySQL主从同步-读写分离

    1.环境准备 我的数据库版本是MySQL 5.6 MySQL主机至少两个实例,可以是多实例,可以是多台主机 关闭selinux,关闭防火墙等基础优化 2.安装 yum -y install make ...

  8. elasticsearch基本操作之--使用java操作elasticsearch

    /** * 系统环境: vm12 下的centos 7.2 * 当前安装版本: elasticsearch-2.4.0.tar.gz */ es 查询共有4种查询类型 QUERY_AND_FETCH: ...

  9. java字符串应用之表达式解析器

    一.表达式的组成    1.数字    2.运算符:+ - / * ^ % =    3.圆括号    4.变量二.运算符优先级    由高到低分别为:+-(正负号).^.*/%.+-.=    优先 ...

  10. [Hive]使用 Antlr 开发领域语言

    Antlr 简介 ANTLR 语言识别的一个工具 (ANother Tool for Language Recognition ) 是一种语言工具,它提供了一个框架,可以通过包含 Java, C++, ...