尝试kotlin的起因

因为各种原因(版权,人员招聘),公司的技术体系从c#转到了java,我花了大概两周的时间来上手java,发现java的语法还是非常简单的,基本看着代码就知道什么意思.学习java的过程中,大部分时间都花费在了maven配置,理解spring的ioc上面.

学习的一段时间,我对java的感觉也正如前人的总结,稀烂的语法,完美的生态.spring在更高层面去约束你的代码设计,测试,事物,分布式,lucene,hadoop...jvm世界有太多的财富等着我去挖掘.但,我实在是不太喜欢java啰嗦,表达能力贫弱的语法.我决定试试jvm上的其他语言.

首先我并不考虑弱类型语言,后端开发不像前端,业务流程比较长,model复杂,强大的类型系统可以起到注释代码,控制复杂度的作用,所以我第一个目标是scala.然后我发现我就掉坑里了,scala毫无疑问是我学过的最复杂的语言了,光是看它的文档,就大概花了我一周时间,丰富的特性,强大的类型系统,fp范式.那段时间我无聊了会在hackerrank上刷刷oj,使用下来,确实感觉scala很强大,语法简练,集合操作方便.但后来我并没有在公司项目上使用它,因为我感觉这并不是一门适合用来做工程开发的语言,语法糖太丰富,不同的人写的代码风格会差异非常大,比如有的人写helper类,有的人喜欢用trait,还有的人想试试scala的多继承,再就是运算符重载,省略()的函数调用方式...

这里插一嘴,每次看见园子里抱怨c#药丸的,我都觉得挺无聊的.c#在国内互联网届江河日下,这是不争的事实,但我们又不拿巨硬的薪水,谁给钱多就给谁站队就是了.发现我好像还没进入正题啊.马上开始~~

话说有天逛知乎的时候,听到了kotlin发布release 1.0的消息,看看别人的评价还不错的样子,我也决定试试.
如何评价kotlin
这是我当时使用两天后的体验,到现在也几个月过去了,kotlin在公司的项目上基本也算稳定了,所以想把一些东西总结下.

对kotlin的第二印象

正如我上面那个帖子说的,kotlin是个很特殊的语言.在我使用的过程中,我感觉jetBrains团队的目标也很明确:让越来越多的人用kotlin,然后间接推广他家的idea,所以kotlin是一门非常讨好开发者的语言,它的设计风格并不明显,并没有什么花哨的特性,从头到尾的标签就是:简单,方便,实用.如果其他语言有什么特别好的设计,kotlin也无节操的直接拿过来的,而且还会将一些特性进行增强和限定.

比如大家非常喜欢的c#的扩展方法,kotlin也有,而且kotlin的扩展方法更灵活,不需要限定在静态类里面,像js扩充原型链一样方便.
又比如scala写lambda可以用_代替参数的声明,kotlin也有it关键字,scala的方法只有一个参数的时候,可以省掉(),kotlin也可以,但必须对这个方法进行显示的声明infix 避免滥用.

这篇文章并不介绍kotlin的语法,这点jetBrain也做得很好,有兴趣的人刷下这两个项目,基本就没啥问题了.
kotlin-koans : kotlin语法的练习题
Kotlin-examples :简单介绍kotlin的配置和与java的互操作

好水的一篇文章...
下篇谈谈我对编程语言的看法

java太low,又舍不得jvm平台的丰富资源?试试kotlin吧(一)的更多相关文章

  1. JVM 平台上的各种语言的开发指南

    JVM 平台上的各种语言的开发指南 为什么我们需要如此多的JVM语言? 在2013年你可以有50中JVM语言的选择来用于你的下一个项目.尽管你可以说出一大打的名字,你会准备为你的下一个项目选择一种新的 ...

  2. JAVA高级篇(二、JVM内存模型、内存管理之第二篇)

    本文转自https://zhuanlan.zhihu.com/p/25713880. JVM的基础概念 JVM的中文名称叫Java虚拟机,它是由软件技术模拟出计算机运行的一个虚拟的计算机. JVM也充 ...

  3. 如何把Java代码玩出花?JVM Sandbox入门教程与原理浅谈

    在日常业务代码开发中,我们经常接触到AOP,比如熟知的Spring AOP.我们用它来做业务切面,比如登录校验,日志记录,性能监控,全局过滤器等.但Spring AOP有一个局限性,并不是所有的类都托 ...

  4. 基于java平台的常用资源整理

    这里整理了基于java平台的常用资源 翻译 from :akullpp | awesome-java 大家一起学习,共同进步. 如果大家觉得有用,就mark一下,赞一下,或评论一下,让更多的人知道.t ...

  5. 这里整理了基于java平台的常用资源

    这里整理了基于java平台的常用资源 翻译 from :akullpp | awesome-java 大家一起学习,共同进步. 如果大家觉得有用,就mark一下,赞一下,或评论一下,让更多的人知道.t ...

  6. java虚拟机学习-深入理解JVM(1)

    1   Java技术与Java虚拟机 说起Java,人们首先想到的是Java编程语言,然而事实上,Java是一种技术,它由四方面组成: Java编程语言.Java类文件格式.Java虚拟机和Java应 ...

  7. Java 面试知识点解析(三)——JVM篇

    前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大 ...

  8. Java向服务端转身 系统平台所对应的机器语言 虚拟CPU的机器语言字节码 bytecode

    小结: 1.虚拟CPU的模拟器:java虚拟机 JVM Java将虚拟机(VM)作为插件集成到浏览器中,将编译后的Java程序(Applet)在虚拟机上运行,这种技术 当初是为了增强浏览器的功能. J ...

  9. Java EE开发课外事务管理平台

    Java EE开发课外事务管理平台 演示地址:https://ganquanzhong.top/edu 说明文档 一.系统需求 目前课外兴趣培训学校众多,完善,但是针对课外兴趣培训学校教务和人事管理信 ...

随机推荐

  1. Android SwipeRefreshLayout 下拉刷新——Hi_博客 Android App 开发笔记

    以前写下拉刷新 感觉好费劲,要判断ListView是否滚到顶部,还要加载头布局,还要控制 头布局的状态,等等一大堆.感觉麻烦死了.今天学习了SwipeRefreshLayout 的用法,来分享一下,有 ...

  2. ASP.NET MVC 请求路径相关参数的获取

    Request.ApplicationPath / Request.CurrentExecutionFilePath /Home/Index Request.FilePath /Home/Index ...

  3. 常见CSS与HTML使用误区

       误区一.多div症 <div class="nav"> <ul> <li><a href="/home/"> ...

  4. [WCF]缺少一行代码引发的血案

    这是今天作项目支持的发现的一个关于WCF的问题,虽然最终我只是添加了一行代码就解决了这个问题,但是整个纠错过程是痛苦的,甚至最终发现这个问题都具有偶然性.具体来说,这是一个关于如何自动为服务接口(契约 ...

  5. 问题记录:EntityFramework 一对一关系映射

    EntityFramework 一对一关系映射有很多种,比如主键作为关联,配置比较简单,示例代码: public class Teacher { public int Id { get; set; } ...

  6. ESLint的使用笔记

    原文地址:https://csspod.com/getting-started-with-eslint/?utm_source=tuicool&utm_medium=referral 在团队协 ...

  7. windows10安装mysql5.7.17是这样安装的吗?

    操作 全允许

  8. JavaScript

    2015-08-01 16:20 JavaScript使用时需要注意的地方 1.引入JS的位置:最好的做法是把<script>的标签放到HTML文档的最后.</body>标签之 ...

  9. 聊聊从web session的共享到可扩展缓存设计

    先从web session的共享说起   许多系统需要提供7*24小时服务,这类系统肯定需要考虑灾备问题,单台服务器如果宕机可能无法立马恢复使用,这必定影响到服务.这个问题对于系统规模来说,从小到大可 ...

  10. ASP.NET 5 (vNext) Linux部署

    引言 工欲善其事,必先利其器. 首先,我们先明确下以下基本概念 Linux相关 Ubuntu Ubuntu是基于linux的免费开源桌面PC操作系统 十分契合英特尔的超极本定位 支持x86.64位和p ...