尝试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请求网络共通类——Hi_博客 Android App 开发笔记

    今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...

  2. 在WPF中使用依赖注入的方式创建视图

    在WPF中使用依赖注入的方式创建视图 0x00 问题的产生 互联网时代桌面开发真是越来越少了,很多应用都转到了浏览器端和移动智能终端,相应的软件开发上的新技术应用到桌面开发的文章也很少.我之前主要做W ...

  3. 2D、3D形变

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 17.0px Monaco; color: #a5b2b9 } span.Apple-tab-span { ...

  4. 【原】AFNetworking源码阅读(二)

    [原]AFNetworking源码阅读(二) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇中我们在iOS Example代码中提到了AFHTTPSessionMa ...

  5. OpenSceneGraph in ActiveX by ActiveQt

    OpenSceneGraph in ActiveX by ActiveQt eryar@163.com Abstract. Qt’s ActiveX and COM support allows Qt ...

  6. 《你不知道的JavaScript》整理(四)——原型

    一.[[Prototype]] JavaScript中的对象有一个特殊的[[Prototype]]内置属性,其实就是对于其他对象的引用. var myObject = { a: 2 }; myObje ...

  7. [原]HAproxy 代理技术原理探究

    HAproxy 技术分享 简介 HAProxy是一款提供高可用性.负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件 Features 1.免费 2.能够做到4层以上代理 3.高性能 ...

  8. C# 泛型

    C# 泛型 1.定义泛型类 在类定义中包含尖括号语法,即可创建泛型类: class MyGenericClass<T> { //Add code } 其中T可以遵循C#命名规则的任意字符. ...

  9. .NET面试题集锦②(Part 二)

    一.前言部分 文中的问题及答案多收集整理自网络,不保证100%准确,还望斟酌采纳. 1.实现产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复. ]; ArrayList my ...

  10. java中易错点(二)

    java,exe是java虚拟机 javadoc.exe用来制作java文档 jdb.exe是java的调试器 javaprof,exe是剖析工具 解析一: sleep是线程类(Thread)的方法, ...