Java与Kotlin, 哪个是开发安卓应用的首选语言?
Java是很多开发者创建安卓应用的首选语言。但它在 Android 界的领导地位正受到各种新语言的挑战,Kotlin就是其一。虽然Kotlin最近才开始受到热捧,但有为数不少的人相信 Kotlin 在不久的将来,会成为Java最大的竞争者,甚至会把 Java 拉下移动开发的王座。下文中,我们对 Java 和 Kotlin 进行详细对比,以帮助您确定哪一种语言最适合于您今后的移动开发项目 。
JAVA
当谈及 Android 应用开发时,Java 是许多开发者的最爱 – 主要是由于 Android 本身就是用 Java 编写的。Java 由 Sun Microsystems(已被 Oracle 收购)所开发,是一种面向对象编程语言,在 GitHub 上位居语言活跃度榜单第二位。这说来也并不奇怪 – 它已经存在了 20 多年,而它的流行度似乎只增不减。
Java 的优势
- 易学易懂;
- 灵活性 – 您可以在浏览器窗口或虚拟机中运行它。当您重用代码和更新软件时,这一特性会显得很方便;
- 对于开发跨平台应用来说,是一个不错的选择;
- Android 依赖于 Java — Android SDK 包含许多标准的 Java 库;
- Java 拥有一个大型的开源生态系统,部分原因是由于 Google 为 Android 采用了Java 虚拟机(JVM);
- 在 Gradle 中加速汇编 – 我们在汇编大型项目时都非常感谢它;
- Java 应用更加紧凑 – 与 Kotlin 相比,Java 应用往往占空间更少(即使是完全模拟);一个包含复杂计算流程的 Kotlin 应用在低配置的用户设备上运行可能会十分缓慢(如果开发者缺乏经验的话);
- 顶级的开发速度 – Java 具有比 Kotlin 更快的构建过程。
JAVA 的劣势
- Java 的一些限制会导致 Android API 的设计出现问题;
- 作为一种冗长的语言,Java 需要编写更多的代码,这带来了更高的错误率和 bug 风险;
- 与许多其他语言相比,Java 执行速度较慢,并且占用大量内存。
使用场景
以下是使用 Java 编写的一些优秀开源应用的示例:
- Android-oss(Kickstarter 官方 Android App)
- NewPipe(为 Android 打造的 Youtube 前端)
- WordPress Engineering(WordPress 官方 Android App)
KOTLIN
Kotlin 是由来自 JetBrains 公司(代表作:集成开发环境 IntelliJ IDEA)的开发者所设计的,它为 Java 添加了一些现代功能,这对移动开发很有帮助。Kotlin 是一种基于 Java 虚拟机(JVM)的开源、静态类型语言,但您也可以将其编译为 JavaScript 或 Native,以构建可在 iOS 上运行的代码。您只需要安装好 Kotlin 插件并让它配置您的项目就可以啦~
如果掌握诀窍的话,学习 Kotlin 其实并没有想象中那么难。在 LiveEdu 上有一个点击率超高的教程 — 如何用 Kotlin 开发类似 Instagram 的安卓 App。主讲者 Asitaka 目前在日本一家大型电信公司 KDDI 株式会社担任系统工程师,拥有多年业界经验。他擅长使用包括 Java 和 Kotlin 在内的多种语言,因此对于这两个语言在安卓开发方面的利弊了如指掌。与市面上现有教程不同,这套教程将从业界实战角度出发,提供一些 Kotlin 的屠龙之技。不妨试试吧!
KOTLIN 的优势
- 在 Android 开发中获得了很高的流行度,但它也被用于 Spring 5 等后端项目;
- 从 Java 切换到 Kotlin 非常简单 – 您只需安装 Kotlin 插件,将其添加到 Gradle 构建文件中,然后单击 “转换” 就好了;
- 包含智能扩展功能,帮助开发者构建干净的 API;
- 在其类型系统中设有 null – null 问题是 Java 开发中的一个常见问题,由于 Android 经常使用 null 来表示值不存在,因此 Kotlin 通过将 null 直接设置在类型系统中来解决该问题;
- 它比 Java 简洁得多,这意味着代码写错的几率大大下降了;
- 与 Java 可互操作 – 您可以在 Kotlin 中编写新模块,无需担心它们不能与现有 Java 代码协同工作;Kotlin 兼容所有 Java 库和框架、JVM,并且可以与 Gradle 或 Maven 构建系统进行整合;
- 开发者可以从 Anko 库 和 Github 上的 2000 多个 Kotlin 项目中汲取灵感;
- 采用 Kotlin 不需要任何费用(除了学习和练习)。
KOTLIN 的劣势
- 由于 Kotlin 语法简洁(这既是好处也是挑战),将整个团队转为用 Kotlin 开发时,学习曲线将会非常陡峭;
- 编译速度慢于 Java(尽管 Kotlin 在某些情况下被证明可以击败 Java);
- 开发者社区很小,这意味着学习资源有限,很多问题难以得到解答;看一看 Stackoverflow 你就大概了解情况了 – 只有大约 8000 个含有 Kotlin 标签的问题,但含有 Java 标签的问题却高达 137 万个;
- 经验丰富的 Kotlin 开发者仍然很少见,因此为您的团队寻找导师可能会很棘手;
- 与纯 Java 项目相比,Android Studio 自动完成和编译的运行速度往往较慢。
使用场景
以下是使用 Kotlin 编写的两个惊人应用:
- Basecamp 3 Android app
- KotlinConf Schedule Application
尽管 Kotlin 拥有了许多 Java 不具备的优点,但它仍然存在一些缺陷。当试用 Kotlin 时,请记住,对于那些已经找到适合自己的工具和策略的开发者来说,切换到新语言并不一定是好事。
结语
无论你喜欢使用Java还是Kotlin,对于开发者,在熟练掌握了某种语言的基础上,学习新的语言,有肋提升个人竞争力。不妨像文中提到的那些开发者那样,尝试用这些语言来开发一些项目。实践永远是最好的磨练。
Java与Kotlin, 哪个是开发安卓应用的首选语言?的更多相关文章
- 【译】Java、Kotlin、RN、Flutter 开发出来的 App 大小,你了解过吗?
现在开发 App 的方式非常多,原生.ReactNative.Flutter 都是不错的选择.那你有没有关注过,使用不同的方式,编译生成的 Apk ,大小是否会有什么影响呢?本文就以一个最简单的 He ...
- 使用Kotlin进行Android开发
Kotlin是一门基于JVM的编程语言,它正成长为Android开发中用于替代Java语言的继承者.Java是世界上使用最多的编程语言之一,当其他编程语言为更加便于开发者使用而不断进化时,Java并 ...
- 为什么使用kotlin可以节省开发时间
前言:.kotlin是一门语言,光靠一篇文章要入门不太现实,所以这篇文章重点讲的是kotlin相对于java的一些特性和这些特性带来的好处. 一.简单介绍 Kotlin 是一种在 Java 虚拟机上运 ...
- Java程序员转Android开发必读经验分享
小编最近几日偷偷的发现部分Java程序员想转安卓开发,故此加紧补充知识,为大家搜集资料,积极整理前人的经验,希望可以给正处于困惑中的你,带来些许的帮助. 啰哩啰嗦的说说Java和Android程序的区 ...
- VS 2017 开发安卓环境搭建 问题总结
VS 2017可以开发安卓啦,之前一直想尝试开发安卓,但是由于时间忙, Java只学了个基础,不如C#熟练所以一直没有机会接触安卓开发.既然需要利用VS2017开发安卓,那么第一步就是了解VS2017 ...
- 开发安卓安装流程(codorva+ionic)
开发安卓安装流程 0 安装操作系统 Win10 用户名称尽量英文字母加数字,避免编码问题 1 安装Java sdk 1.8.0_45 所需文件 jdk-8u45-windows-x64 1. ...
- Delphi开发安卓程序的感受
Delphi XE7开发安卓程序,界面开发速度非常快,这是eclipse无法比的,还有就是界面自适应能力很棒,我在不同版本和尺寸的设备中测试,运行良好,这些设备包括:三星I9100(安卓2.3:不到5 ...
- ddms+adt+jdk的安装及调试开发安卓
_______ ddms+adt+jdk的安装及调试开发安卓 目录 阐述 1 1 jdk安装 1 2 sdk安装 3 3 Eclipse安装 6 4 ADT安装 10 5 Ddms使用 16 ...
- 使用phonegap开发安卓HLS播放软件解决方案
目前使用phonegap开发的手机应用,很少涉及视频播放的功能,究其原因,主要是phonegap提供的API里面对视频播放功能支持度不够,当然播放音频一般情况下还是能够实现的,由于工作需要,自己研究了 ...
随机推荐
- Java语言实现二分法
二分法是一个简单,高效,并广泛应用的查找方法 import java.util.arrays; public class BinarySearch { public static int rank(i ...
- javascript、ruby和C性能一瞥(1)
测试一下本地js.浏览器中的js以及ruby对于类似算法的性能.结果有些意外:浏览器js最快,本地其次当相差很小:ruby最慢而且不是一个数量级的: 因为写的匆忙,可能有重大问题没能看出来,请各位高人 ...
- cocos2dx 跨平台编译遇到的几个问题
首先声明一下自己用的版本 vs2010 cocos2d-x_2.2 ndk_r9 1. 安装cygwin之后,也设置好了 ndk_root, 但是 cd $NDK_ROOT 进入不了, 只好 ...
- redis删除所有key
flushdb 删除当前数据库的所有keyflushall 删除所有数据库的所有keydbsize 返回当前数据库的key的数量
- FileReader对象异步获取外部文件的内容
1.在网页表单中,定义input的type为file,就可以打开存储在计算机上的文件. <!DOCTYPE html> <head> <meta charset=&quo ...
- ajax调用servlet
1.利用myecilpse建立一个web项目 2.导入需要的包: commons-beanutils.jar commons-collections-3.1.jar commons-lan ...
- linux中安装程序及账户管理
程序安装及管理 1. Linux 应用程序基础 Linux命令与应用程序的关系 1):文件位置 系统命令:一般在/bin和/sbin目录中,或为Shell内部指令 应用程序:通常在/usr/bin和 ...
- TopShelf安装多实例
Topshelf 安装多实例命令: .\ConsoleApp1.exe -instance "newinstallname" install 多实例有一个好处就是容灾,当一个服务部 ...
- 玩转Git入门篇
最近项目使用到Git管理项目,所以就学习了一番,随然网上关于 Git的文章铺天盖地,我还是整理下总结下自己学习Git相关笔记,希望也能帮助到需要他的小伙伴们,O(∩_∩)O~ 简介 Git 是分布式版 ...
- Day17 Django的基础使用和结构
整个Django的访问流程: 浏览器 urls: http://127.0.0.1:8000/timer url.py: 1, http://127.0.0.1:8000/timer GET 无请求数 ...

