安卓研发JavagtKotlin

最近我们把安卓项目的开发语言从Java切换到了Kotlin。其中自然有许多故事可讲,首先要讲的就是,为什么要使用新语言,为什么选择了Kotlin。

如果有时间,下次再来讲实践Kotlin的感受如何(很爽!!),常见的坑有哪些。

摘要本次分享主要回答了这么几个问题:一、为什么要学习和使用新的语言?二、好几种运行于jvm上的语言,为什么选择了Kotlin?三、从Java到Kotlin,我们经历了哪几个阶段?

Java不够好,而且发展太慢

存在即是合理,虽然我接下来要吐槽Java不够好,但是,不妨碍学习和使用Java的人依然非常多,不妨碍Java继续蓬勃发展。Java爱好者们不喜欢就可以不用看下去了。

在吐槽前,我还是先说一下我的语言学习/使用经历,稍稍证明一下,我还是算的上经验丰富。

我最早是写C#(3年),当时写网站,对网页相关技术也非常熟(相对于现在来说,早就落伍了)。

后来转了Java做安卓研发(年),见识了团队中的高手(20年以上编程经验)写代码,从此对优秀的代码有了不一样的认识,直到现在都还在不断的提升自己。

除了做安卓研发,还用Python+Django框架为公司内部写了一个小网站。

还有一年时间由于公司人手不足,转做iOS,用了一年的Objective-C。

后来,为了研究ReactNative,又花时间深入学习了Javascript(以前做网页开发的时候就有一些Javascript经验)。可惜ReactNative并没有在项目实践中用上。

其他一些学过但用的少的语言就不讲了。

接下来就开始吐槽Java。

缺乏优秀的类的属性设计

通俗易懂点,就是getter/setter的处理。看如下的代码:

publicclassPerson{

privateStirngname;

publicgetName(){returnname;}

publicsetName(Stringname){this.name=name;}

}

你无法想象Java代码中有多少这样毫无意义的getter/setter代码。但你还是得要它们。

就连Objcetive-C这种公认语法怪异的语言,对属性的设计都比Java好很多。

解决方案有很多,最简单的办法就是在编译器里面加一点小戏法就搞定了:

当声明一个属性的时候,编译器在编译的时候自动生成相应的getter/setter方法。而你只有在需要的时候,才去定义自己的getter/setter。

迟来的lambda

C#在09年左右加入的LINQ,超级方便的集合操作有木有!

09年,09年!

然后看看前两年Java8才出个lambda,然后增强了集合相关的功能。

而且更扯淡的是,现在安卓开发都还用不上Java8。如果要想在安卓开发中用上Java8(的一个子集),你要完全放弃低版本的安卓用户,或者使用第三方库。

Java的发展实在太慢

总的来说,Java的发展实在是太慢了。其中原因非常的多,比如历史包袱大,比如Oracle,但最终的事实就是:发展实在太慢了。

但Java现在还活着,而且还活的很好,自然有它的优势。一是用Java的人多,生态圈好。

二是……

屌屌的JVM

但是,但是,不得不说,Java最屌的早就不是Java语言本身了,而是JVM。

虽然我依然想吐槽JVM吃内存厉害的不像话。但是,它真的很屌。广大程序员早已经用实际行动证明了这一点。

围绕JVM已经发展出了不少的新语言,最优秀,最广为人知的有:Scala,Groovy,Closure,Kotlin

这些语言都可以编译成Java的中间字节码,运行于JVM上面。

而且这些语言都有非常高的流行度。其中Kotlin是流行度最低的。那为什么偏偏选中了Kotlin?

Scala的设计核心是函数式编程,而且据说实践的情况是,有些从Java切换到了Scala之后,一年之后,并没有实际效率的提升。原因是:这个语言太复杂了,不太好掌握。我记得有次和一位前辈(

润)聊过,提到Scala中下划线的用法非常之多。多到什么程度呢?网上有很多专门关于Scala下划线的疑问,以及很多专门总结下划线使用的博客。

Groovy的设计主要是想成为一个脚本语言。而且还有一个GroovyonRails的项目,现在怎么样了我也没去







































白癜风终于治好了
白癜风治疗权威医院



转载请注明:http://www.gslnbdf.com/jbxx/4764.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了