如果Java快死了,那么它肯定看起来非常健康

Java快要死了的奇怪但流行的断言只能在没有证据的情况下提出,而不是因为它。

在酷孩子闲逛的论坛(Hacker News,Reddit等)中反复出现的偏见与Java语言背道而驰。 人们常常反复感叹 Java冗长而流行。 虽然我接受第一个描述符,但几乎找不到支持后者的证据。

Java当然可以很冗长。 直到一年半之前,当Java 7出现时,诸如写入文件之类的简单任务需要漫长的多步骤过程,其中充满了“仪式”。 为了应对这种普遍的冗长语言,出现了几种脚本语言,这些语言专门设计用于使开发人员摆脱冗长的语法段落来传达简单的动作:NetRexx,Groovy,Scala等。 我是Groovy的粉丝,并在我自己的项目中使用它,但是主要是因为它提供了其他功能(可选的键入,闭包,方法注入,元编程等),而不是其简洁性。

即使在Java 7出现之后,一些开发人员仍然合理地指出长类和方法名,例如MethodExpressionValueChangeListener很难键入且难以记住。 但是,我认为开发一种语言和库来构成企业计算的主要平台几乎是不可能的,而无需偶尔使用冗长的描述性名称。 就个人而言,我喜欢长而描述性的而不是短而不透明的,例如C标准库中的strstr() 。 奉献并不总是一件好事。 尽管如此,Java肯定可以减少许多任务所需的仪式量。

但是当涉及到Java的长期下降时,我几乎看不到任何支持证据。 最近的JavaOne展览明显表明,与过去两年中的任何一个相比,年度Java编码大肆宣传的规模更大,参加人数也更多。 我与之交谈的展位上的供应商一致表示(实际上不是一个例外),与去年相比,访问量,潜在客户和查询量明显增加,这本身比前一年要好。 通常,当技术开始急剧下降时,贸易展览会首先反映出正在瓦解的社区:供应商不想为参加人数减少的展会付费,而不需要参加的开发商开始将差旅预算用于其他活动相关事件。 总是有一段时间,贸易展览/会议感觉像坟墓一样,这是最终死亡螺旋即将来临的确定信号。

从技术上讲,语言在不断发展。 正如我所提到的,Java 7在语言和JVM级别都是重要的发行版,而Java 8有望在三月份发布,它看起来同样有希望。 Java 9的功能已经宣布,计划于2016年推出。与Sun在其Java托管结束时不同,Oracle坚持其每24-30个月发布Java新主要版本的目标。 Java 8将添加闭包(即lambda表达式)。 闭包减少了代码,减少了对匿名内部类的需求,并简化了类似于函数的编码。 更高的模块化(将在Java 9中完成)将有助于有效地管理工件,以及简化该发行版中语法的多项增强功能。

JavaFX继续发展,并且比Swing易于编程。 对UX的关注为增长提供了机会,其发展可能比目前预期的要多。 Oracle非常了解Java在小型设备上的作用。 (据该公司称,今天大约有30亿个手持设备运行Java。)它已将以前的JavaME与Java SE版本进行了集成,并且正在积极开发Java,以应对即将到来的小型物联网(IoT)浪潮。 。 正如Eric Bruno 在IoT上的博客文章所解释的那样,用于监视JavaOne上课情况的整个项目(从摄像头到后端实时分析)都是用Java编写的。 没有多少平台和语言提供如此广泛的范围,它们可以在小型设备上运行并支持大型企业系统。

当您添加本机开发语言为Java的Android生态系统时,很难看到在许多领域(服务器,Web,桌面,移动设备)中如此广泛使用的语言在某种程度上正在下降。

如果我们看一下JVM,则生态系统的良好运行状况就更加明显。 随着该语言的每个主要发行版,这种情况也在继续发展。 在Java 7中添加了新的字节码,包括invokedynamic ,证明了JVM的工作情况。 当Ruby的JVM实现JRuby添加了对该指令的本机支持时,其性能已经超越了基于C的Ruby VM,多年来,它一直是Ruby参考平台。 随着JRuby的性能不断提高,我完全希望它成为参考实现。 当然,它将成为大多数组织首先试用Ruby的工具。

我参加了No Fluff Just Stuff成员最近召开的SpringOne 2GX会议,很明显Groovy社区非常活跃(即使很安静)。 VMware / Pivotal继续依赖Groovy和Grails,并且语言和框架都受益于持续的投资。 我将避免使用其他主要的JVM语言,只是指出当前最受欢迎的Lisp实现是Clojure,它在JVM上运行—三年前不为人所知。

在GitHub上,这是髋关节的项目这些天圣地,Java是在#3插槽去年和今年作为首选项目的语言。 (它在JavaScript和Ruby下面的位置有些历史悠久:gitHub最初是一个主要的Ruby存储库。)在有争议的Tiobe索引上 ,Java保持其整体排名第二的位置,仅次于C。(C和Java来回排名第一)自2002年以来获得两个名额)。 在开放源码社区最大的统计信息门户Ohloh上,Java保留了总提交次数相同的百分比
在过去的七年中一直享受着它。

因此,我所看到的是一种语言,它正在不断完善和发展,拥有一个庞大而活跃的社区,它拥有一个广泛用于新语言的平台。 在我看来,这些都不像是一种衰落的语言。

链接: http //www.drdobbs.com/jvm/if-java-is-dying-it-sure-looks-awfully-h/240162390

参考: 如果Java快死了,那么来自Lviv博客Java用户组的 JCG合作伙伴 Andriy Andrunevchyn 肯定看起来非常健康 。

翻译自: https://www.javacodegeeks.com/2013/10/if-java-is-dying-it-sure-looks-awfully-healthy.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/366230.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 图片去除黑边_根据 Map 上的变量绘制彩色和形状的点时,保持符号的黑色边框(geom_point)...

我的问题与this thread有些相关,但我想为每个符号实际上都有黑色边框,因为我有符号重叠的实例,我认为有边框会有所帮助 . 但是,我的颜色和形状基于geom_point中美学内部的变量,因此使用shape 21和color NA的解决方案…

使用GreenDao 添加字段,删除表,新增表操作

GreenDao 给我个人感觉 比一般的ORM框架要好很多,虽然说上手和其他的比起来,较复杂,但是如果使用熟练以后,你会爱上这个框架的 用这些ORM 框架给我的感觉都是,当升级时,都需要进行数据库所有表的删除&#…

linux下log日志乱码_如何用 Linux 技巧大大提高工作效率?

作者 | 守望先生责编 | 屠敏前言Linux中的一些小技巧可以大大提高你的工作效率,本文就细数那些提高效率或者简单却有效的Linux技巧。命令编辑及光标移动这里有很多快捷键可以帮我们修正自己的命令。接下来使用光标二字代替光标的位置。删除从开头到光标处的命令文本…

安卓java桌面图标程序_android如何定制默认桌面上应用程序和shortcut图标 | 学步园...

可以在res/xml/default_workspace.xml文件中增加或删除tag标记块如果想删除默认browser图标:launcher:packageName"com.android.browser"launcher:className"com.android.browser.BrowserActivity"launcher:screen"2"launcher:x"…

Go语言基础之15--文件基本操作

一、文件读写 1.1 os.File os.File封装所有文件相关操作, 是一个自定义的struct。 a. 打开一个文件进行读操作: os.Open(name string) (*File, error) Open是以读的方式打开文件(底层调用的是Openfile函数)。 b. 关闭一个文件&…

Event flow

考虑这么个例子&#xff1a; <div><button id"btn">Click Me!</button> </div> 哪怕一个web开发的初学者都会知道&#xff0c;当我们鼠标在button上点击时&#xff0c;会在button上触发一个click事件。但是&#xff1a; button是div的一个子…

使用vux组件库常见报错($t)处理

错误一&#xff1a; [Vue warn]: Property or method "$t" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based components, by initializing the property.…

UIBOT调试时步入的快捷键_远程调试 bug ,快速定位问题

情况是这样的&#xff0c;现在的产品出现了一个 bug ,需要及时排查快速解决&#xff0c;你是怎么样解决的呢&#xff1f;解决&#xff1a;登陆服务器&#xff0c;查看日志&#xff0c;看一下哪里有问题&#xff0c;然后本地运行程序进行debug ,解决后&#xff0c;在重新打包部署…

Spring面向方面的编程

介绍 在理想的面向对象系统中&#xff0c;我们希望将每个对象设计为执行一项特定任务。 但是&#xff0c;除了执行其主要任务外&#xff0c;对象还执行被动任务&#xff0c;例如日志记录&#xff0c;事务&#xff0c;安全性&#xff0c;缓存等。这些被动活动是必需的&#xff0…

vim ctags java源码_如何使用vim的插件Ctags查看Linux源码

一.ubuntu下安装Linux内核源码(1).查看自己的内核版本(2).查看源内的内核源码类表(3).下载源码(4).进入/usr/src(5).解压下载的文件到用户主二.安装vim插件Ctags和使用插件的介绍Ctags工具是用来遍历源代码文件生成tags文件&#xff0c;这些tags文件能被编辑器或其它工具用来快…

MySql - GROUP BY 和 HAVING关键字

本文主要针对GROUP BY 和 HAVING两个关键字进行分析 使用测试表如下&#xff1a; 测试前&#xff0c;只知道GROUP BY 这个关键字的作用是根据一个字段进行分组&#xff0c;去重。HAVING对分组设置条件。 具体分组规则&#xff0c;设置条件不清楚。 测试开始 首先 单独使用GROUP…

javascript引擎工作原理

1. 什么是JavaScript解析引擎&#xff1f; 简单地说&#xff0c;JavaScript解析引擎就是能够“读懂”JavaScript代码&#xff0c;并准确地给出代码运行结果的一段程序。比方说&#xff0c;当你写了 var a 1 1; 这样一段代码&#xff0c;JavaScript引擎做的事情就是看懂&#…

浏览器缓存原理以及本地存储

作为一名前端工作人员&#xff0c;前端的缓存知识是必须掌握的&#xff0c;因为一个网站打开网页的速度直接关系到用户体验&#xff0c;用户粘度&#xff0c;而提高网页的打开速度有很多方面需要优化&#xff0c;其中比较重要的一点就是利用好缓存&#xff0c;缓存文件可以重复…

linux shell 宏定义_linux内核修炼之系统调用

fork()这个系统调用是有两个返回值的&#xff0c;在子进程中的返回值是0&#xff0c;在父进程中的返回值是PID&#xff0c;如下图 fork一次 返回两次关于0x80中断和特权级检查在mian函数的sched_init()函数中调用宏&#xff1a;set_system_gate(0x80,&system_call);将0x80号…

使用JPA和Hibernate有效删除数据

您可能会遇到必须对关系数据库中存储的大量数据集执行批量删除的情况。 如果您将JPA与Hibernate一起用作基础OR映射器&#xff0c;则可以尝试通过以下方式调用EntityManager的remove&#xff08;&#xff09;方法&#xff1a; public void removeById(long id) {RootEntity ro…

java21个知识点重点_java21个知识点重点

http://blog.csdn.net/jerroluo/article/details/520025851. JVM相关(包括了各个版本的特性)对于刚刚接触Java的人来说&#xff0c;JVM相关的知识不一定需要理解很深&#xff0c;对此里面的概念有一些简单的了解即可。不过对于一个有着3年以上Java经验的资深开发者来说&#xf…

Django模型中字段属性choice使用

今天设计models时&#xff0c;用到了choice这个属性&#xff0c;用来限制用户做出选择的范围。比如说性别的选择&#xff08;男或女&#xff09;。 class User&#xff08;AbstractUser&#xff09;&#xff1a;。。。sex models.CharField(verbose_name性别,max_length5,choi…

面试题4,打印出100-999所有的“水仙花数”。

提示&#xff1a;水仙花数是指一个 n 位数 ( n≥3 )&#xff0c;它的每个位上的数字的 n 次幂之和等于它本身。 &#xff08;例如&#xff1a;1^3 5^3 3^3 153&#xff09; package 面试;/*** 水仙花数* author liugang* create 2018/12/19 20:07**/ public class Shuixianhu…

angularjs的$http请求方式

/*$http常用的几个参数$http服务的设置对象:1、method 字符串 表示发送的请求类型 get post jsonp等等2、url 字符串 绝对或者相对的URL,请求的目标3、params 字符串或对象 会被转化成查询字符串加到URL后面&#xff0c;如果不是字符串会被JSON序列化4、data 字符串或者对象 这…

response对象设置返回状态_postman 设置全局变量

postman大家都知道是一个测试接口的工具&#xff0c;也是目前比较流行的一种测试工具&#xff0c;但是postman只是用来将API地址和参数填入send一下就完了吗&#xff1f;其实不是&#xff0c;关于postman其实有很多玩法&#xff0c;对于测试来说我觉得掌握了postman是非常有必要…