【源码课件+名师讲解】Java优质课程分享_2022版Java全新教程_最新Java300集_零基础也可学,名师带你学Java_从入门到精通_持续更新中

  正在看这篇文章的你是否需要系统得学习一下Java呢?无论是新手还是有一定基础,都可以通过下方的视频课来进行学习,名师教学,附带源码课件,你距离熟练掌握Java知识只差这一套课程喔~【源码课件+名师讲解】Java优质课程分享_2022版Java全新教程_最新Java300集_零基础小白可学,名师带你学Java_从入门到精通_持续更新中icon-default.png?t=M5H6https://www.bilibili.com/video/BV1bN4y137f9?p=1&vd_source=7c2ea8e0dc92220a75fd8d60acebe957


  Java 的创造者们在一开始就把Java 语言和Java 虚拟机分开, 现在看来是个非常明智的决定。

  Java虚拟机定义了一个"软CPU", 和Intel 的x86 的指令集一样, 这个软CPU也有一套自己的指令,这就意味者对于任意一门编程语言, 只要你能编译成Java 的字节码指令,或者在运行时动态的生成字节码指令, 就可以运行在Java虚拟机中。

  1、Jython和JRuby

  从这两位名字开头的字母 "J" 就可以看出来这两个语言和Java 的血缘关系。

  没错,他们就是可以运行在Java 虚拟机上的Python 和 Ruby 。 不同于用C语言写的CPython和 CRuby, 这两者需要一个JVM才能运行。

  既然是运行在JVM上的语言, 自然要能调用Java 类库, 要不然放着这么多优质Java 资源不用多可惜!

  如果你思考的深入一些,就会有这么一个问题 : 由于Python 和ruby 都是脚本语言, 都是解释执行的, 没有编译的过程, 那Jython和JRuby 在解释的过程中,肯定得生成Java 字节码, 要不然JVM就会把他们拒之门外。那字节码是怎么在运行中生成的?

  答案就是ASM , 一个可以动态生成字节码的Java 类库。

  (注: 参见文章《ASM: 一个低调成功者的自述》)

  我个人觉得Jyhton和JRuby能在JVM上运行起来,调用Java 类库, 是个很好的卖点, 但是却难以大规模流行, 原因可能也是类库造成的。

  最早的时候学习C语言, 由于没有良好的类库,就是对一个字符串操作都很麻烦, 那些更加高层的语言例如Java, Python, Ruby 就弥补了这个缺陷, 语言自带强大的类库, 再加上社区的贡献, 用起来非常顺手。 说个题外话, 这也直接导致了很多初学者的疑问: 语言都封装好了, 我还学数据结构干嘛?!

  Python, Ruby 社区已经积累了大量的、好用的库, 他们才是Python, Ruby一派繁荣的主要原因, 但是这些库都是Python, Ruby写的, 也有不少是C语言写的, 这些海量的类库全部移植到Java 上绝非易事, 我们也不能要求类库的作者同时提供Java 版本 。

  而Java 现成的类库总是感觉和Python , Ruby 有一点Gap, 语言设计的思维不同, 虽然可以集成互操作, 但还是感觉别扭。

  也许Jython和JRbuy 只是小范围内或者特定场合使用吧。

  二、Groovy

  Groovy 并不像Jython, JRuby, 它并不是一个现有语言在JVM上的移植, 而是一个全新设计的语言。

  Groovy被定义为JVM上的动态脚本语言, 适合编写脚本, 测试用例和 领域特定语言(DSL)。

  用Groovy 写的软件中有两个比较知名:

  1. Gradle

  一个风头正劲的Build 工具, 得益于Groovy 简洁的语法, 可以用“Build领域特定的语言”来描述一个软件的构建过程, 写出的Build脚本 和Ant, Maven 的xml 脚本 相比,读起来更赏心悦目。 在Web项目,Android项目的 Build过程中有大量使用。

  2. Grail

  这应该是模仿Ruby on Rail的一个项目,热度已经过去, 估计使用的人不多了。

  记得在2008年IBM的毛新生带领着团队搞了一个Project Zero出来, 基于Groovy和PHP, 目标是快速Web项目开发, 喧嚣了一阵也是归于沉寂。

  在JVM上, Java 是毋庸置疑的老大, Spring 是一座难以撼动的大山, 所以Groovy 最好还是把注意力集中到 小工具,测试 以及Build上, 这是它能最大发挥能量的地方。

  三、Scala 和 Clojure

  Scala 第一次进入我的视线是一则新闻: Twitter 决定把核心应用从Ruby on Rails 迁移到Scala,作为曾经的Ruby拥趸, 看到这个消息是让人沮丧的 : Twitter 可是Ruby on Rails 经常拿来宣传的一个明星系统了, 现在Twitter 竟然想转到Scala , Scala是什么鬼? 怎么可能获得Twitter 工程师的青睐?

  后来看了一下,Scala是一个很有趣的语言, 在他的官网上写着“Object-Oriented Meets Functional” , 面向对象遇上了函数式编程 ! 也就是说一门语言混合了两种编程范型。 不仅如此,它还是一个可以运行在Java 虚拟机上的语言, JVM的成熟和稳定, 可能也是Twitter 工程师选择Scala的重要原因。

  有人说了,我面向对象还没学完呢, 还学函数式编程? 我推荐你看看《黑客与画家》一书, 看完以后十有八九会被Paual 自身成功的案例和 富有煽动性的语言给鼓动起来, 热血沸腾的去尝试函数式编程语言Lisp(我就是如此) :-)

  但是我相信大部分人都只是浅尝辄止, 因为纯函数式编程和我们日常使用的C, Java, Python 这些命令式编程语言大相径庭, 需要巨大的思维转变, 最好是完全忘掉之前所学的命令式编程才行, 所以学习曲线极为陡峭, 把很多人都吓回去了。

  现在好了, Scala即支持OO, 又支持Functional , 你可以在一个相对舒服的环境渐渐的去尝试函数式编程的奥妙,确实是不错的选择。

  如果你非要学习一个纯粹的函数式编程语言, 可以考虑Clojure ,这是一个运行在JVM中的lisp方言, 同样可以和Java 类库互操作。

  四、总结

  说了这么多, 如果让我为一个大型项目选择语言, 我极有可能还是要选择Java, 对于一个大型项目来说, 代码的可读性、可维护性是非常重要的,我之前读一些动态语言的代码, 看到一个变量而不知道它的类型,没法查看它的行为, 这是非常令人抓狂的体验。

  而Java 这种静态类型的语言,IDE的感知能力, 安全重构的能力是极为重要的, 让人觉得安全,可控,适合大团队协作。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值