1. 聚能聊>
  2. 话题详情

Kotlin真的会取代JAVA吗?

自从Kotlin 成为 Android 开发一级语言,Kotlin确实以其实用,高效赢得了海外很多公司和开发者的认可,比如Square的Jake大神一直在推Kotlin。Kotlin在国外至少有将近2年的应用生产环境的实践(非JetBrains内部实践应用)。在移动开发中,相比iOS程序员,Android程序员总是很幸运,因为我们有很多优秀好用的工具(Android Studio等),选用Kotlin,则是Google 为开发者提供高效的开发工具的一贯作风。

BZdDUa9a6a

先来晒一晒Kotlin的几大特点:
Kotlin是静态类型编程语言,用于现代多平台应用,100%可与Java™和Android™互操作 [java] view plain copy

Kotlin是非常简介的编程语言

Create a POJO with getters, setters, equals(), hashCode(), toString() and copy() in a single line:

data class Customer(val name: String, val email: String, val company: String)
Or filter a list using a lambda expression:

val positiveNumbers = list.filter { it > 0 }
Want a singleton? Create an object:

object ThisIsASingleton {
val companyName: String = "JetBrains"
}

[java] view plain copy

Kotlin 很安全

Get rid of those pesky NullPointerExceptions, you know, The Billion Dollar Mistake

var output: String
output = null // Compilation error
Kotlin protects you from mistakenly operating on nullable types

val name: String? = null // Nullable type
println(name.length()) // Compilation error
And if you check a type is right, the compiler will auto-cast it for you

fun calculateTotal(obj: Any) {
if (obj is Invoice)
obj.calculateTotal()
}

[java] view plain copy

方便使用 兼容JVM上现有library

Use any existing library on the JVM, as there’s 100% compatibility, including SAM support.

import io.reactivex.Flowable
import io.reactivex.schedulers.Schedulers

Flowable
.fromCallable {
Thread.sleep(1000) // imitate expensive computation
"Done"
}
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.single())
.subscribe(::println, Throwable::printStackTrace)
Target either the JVM or JavaScript. Write code in Kotlin and decide where you want to deploy to

import kotlin.browser.window

fun onLoad() {
window.document.body!!.innerHTML += "
Hello, Kotlin!"
}

几篇社区的博文帮助大家更好的了解kotlin

-hello Kotlin

-用Kotlin写Android程序

-使用Kotlin&Anko,扔掉XML开发Android应用

那么问题来了

你是否已经开始使用准备使用Kotlin?

你觉得Kotlin与JAVA之间的区别有哪些,优势or缺点?

你觉得Kotlin会取代JAVA吗?

参与话题

奖品区域 活动规则 活动已结束,可继续参与讨论哦

  • 奖品一

    虾米VIP月卡 x 1

  • 奖品二

    定制晴雨伞 x 2

158个回答

3

雪雪雪雪儿 已获得定制晴雨伞

swift完全是一个新语言,并且底层的sdk,cocoa库全部用swift重写了,所以这是真正意义上的官方支持;
kotlin是通过无缝兼容java,利用java已有的库和api。对开发者来说就是写起来没java那么啰嗦了,
除此之外没有什么好处了(比如占内存更少,启动更快,性能更高等等,只会比java差或者持平,不会比java更好)。

所以:swift面临的问题在kotlin上不存在或者不那么严重。
swift的使命就是要彻底替换OC,这个过程会很漫长。
而kotlin不存在什么替换java的问题,因为它根本不可能替换掉java,它目前最大的优势就是和java无缝操作。
用kotlin还是用java来写android app,不需要做任何的兼容性修改,对android系统底层来说都是一样的(java字节码),
开发中,总体区别是编译工具的习惯问题,用什么都是自己爱好,除非彻底的废弃掉其中一个。
所以,什么android上的swift,什么替换java,不是必须的。

bycall 回复

牛逼,这都知道

月舞 回复

最关键的是kotlin环境还有很多bug

老老宋 回复

感觉很牛啊!

老老宋 回复
回复@bycall:

回复你

来友装饰 回复

我啥都不会新手一个

评论
3

数据使命 已获得定制晴雨伞

两年前公司已经开始推荐使用,但是指导今日google开始推荐,这样的变化,应该可以对应的比较一下。

android的ide发展过程,开始是 eclipse 但是后来出现了as, 初期并不是很普遍。
随着google的推荐力度加大,和优越性的明显华, as开始越来越得到大部分的认可。

kotlin相信也是一样的过程。 从开始不习惯,到 google的推荐,到优势体现, 到转换 切换。

不过java也在不断的更新优化, 想要 完全的变化都不是一朝一夕的事情啊。

Kotlin比Java更年轻,但它是一个非常有前途的编程语言,它的社区不断增长。
每个人都在谈论它,并说它很酷。 但为什么这么特别?
我们将讨论Kotlin与Java在语法,可用性,UI性能和异步性方面的区别,以便您可以决定哪种语言最适合您。
让我们从一些基本的语法差异开始。 这是第一个:
1. 使用Kotlin,你可以用更少的代码做更多

  1. 你可以避免 NullPointerException

  2. 你可以摆脱util类

  3. 你可以忘记视图绑定

  4. 你可以更容易地使用集合

3

小柒2012 已获得虾米VIP月卡

首先,暂且不评论Kotlin多么优越。一门长期存在并常常位居前几的语言,不是说谁谁谁就可以快速取代的,存在即合理,也就是说必有它存在并且繁荣的道理。

目前来说,我不认为Kotlin会取代JAVA;
长期来说,我也不会觉得,很多生态环境都是围绕JAVA实现的,你说Kotlin会取代JAVA?
当然,一切皆有可能;但,会不会是Kotlin那就不好说了。

2

武汉小虫子

什么时候替换了底层jvm,再来评判是否好用吧。感觉它更像一个升级版的Java而已(类似es6?)或者说一颗更大的语法糖
Android现在的问题,应该从底层jvm的限制优化以及尽早统一碎片化

z-zail 回复

Google 应该想的很多 这事应该是两手抓的 拉拢更多的开发者和更好的底层设计优化 我认为拉拢更多的开发者是比后者重要的

评论
2

大利猫

新项目中可以尝试,旧项目谁用?这种状态下,很难推广。

1

巴洛克上校

短时间内在安卓开发领域Kotlin还没法完全取代java,就算取代我感觉取代仅仅是在Android开发中取代,而不是任何场景,只能说这门语言确实比Java简化了代码量,确实有可取之处,有时间学习一下也是挺好的,也不是很难。

0

1124696244949088

新的事物要取代旧的事物,那么这个新的事物要有足够能力去打败旧事物底蕴和实力。个人认为不可撼动Java的在Android地位。

安_安 回复

那我还正在学java

评论
0

1269777480677286

不会

晨。 回复

以后的事很难说

评论
1

haskell_curry

居然没有IO类型 太不安全了 居然还要写花括号

0

电热壶

关键看oracle的律师们

hihahuha 回复

这才是真正原因。
单说安卓开发,java已成定局。倒是象Xamarin这些跨平台东西会分掉份额,替代没有可能。

评论
1

kakahsh

在某种语言的基础上做支持,可以快速的…对推广有好处,对学习入门有好处…但也意味着很难完全脱离原有语言,原有的依然还能活下去…但自己却有很大的可能被取代…毕竟虽然和swift差不多…但人家是一门语言…而这只是语法糖

1

anstoner

虽然android才刚刚接触,但感觉新事物必将取代旧事物!

1

1226405702702023

短时间肯定是不行的,看后期的发展。两者并存的可能性比较大

0

1590998403040638

时代在发展个有所长

0

1416797792610723

kotlin写安卓app还不错。。其他程序么。。。再看。。

0

1877490757014922

节奏快了 离胜利还远吗
f3094546c5644c68865d2ffd4c48902c_03bf0c3dbdf04dd0be5a365b3a543e6f.jpg

0

未学习者

java是一带经典,是不会被取代的!就如生活并不能被梦想所取代!

0

keller.zhou

Java 是亲儿子,又是 JVM 的“原住民”,主导着 JVM 的发展方向,树大根深,枝繁叶茂,“此诚不可与争锋”。

对比其他 JVM 语言,Kotlin 算是能把自己的地位摆得比较正的了,没有“王侯将相宁有种乎”、取 Java 而代之的雄心壮志,反而始终坚持与 Java 的极强兼容性,大量使用 Java API,把臃肿的 Java 代码包装成简短的语句,默默做着“裱糊匠”的工作。目前来看,Kotlin 相当胜任这个角色,类型推断、扩展、空安全、高阶函数,哪个不是实用又强大的语法增强?

在我看来,Kotlin 对 Java 开发者最大的改变不是减少浪费在写代码上的时间,而是一系列思维方式的转变:

与其让开发者手动控制循环,不如把循环封装在类库内部,类 C 语言的三段式 for 循环和 while 循环简直是 bug 和复杂代码的元凶;面向对象,但不能被类和对象捆住手脚,把函数解放出来!每一行代码都要用在刀刃上,尽量减少模板代码和多余的声明;编程语言要设计好“默认配置”,引导开发者多使用“默认配置”,比如类默认不可继承、访问控制符默认 public、集合默认只读、类型默认不为 null 等等;不变对象优于可变对象,多用 val 少用 var、多用只读集合少用可变集合、多用非空类型少用可空类型;类要“回归本心”,只承担“抽象对象”的功能,Kotlin 鼓励多使用扩展、少在类里塞一堆 API 和实现,尽量采用“类基本框架 + 外部扩展功能函数”的模式。

这些东西都是在学习 Kotlin、写 Kotlin 过程潜移默化地传达给开发者的,能够引导传统守旧的 Java 开发者拥抱现代编程语言。

0

1205892669713131

时代发展的必然趋势

0

进击的小兵

居然还要花括号!

8
12072
浏览
2
收藏
邀请他人互动
关注
17
粉丝
40
话题
13

简介:

千年老司机--自虐之旅

专利:

2017年 2月 1

著作:

2003年 2月 1

在云上签发Symantec、WoSign、CFCA证书,实现网站HTTPS化,使网站可信,防劫持、防篡改、防监听...

为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效率,降低 IT 成本...