为什么Java那么火?

承德SEO:常居编程语言榜首的 Java 已有 20 多年历史,它的实用性、性能和向后兼容性都无可替代,即使是忽略它的“年龄”也依然稳居第一
如今的 Java 几乎占据了C语言曾拥有的地位,而C语言在 Java 流行前一直是最受关注的(1986 年 Lisp 语言排名第二,而 Ada 排名第三)
为什么 Java 能够一直这么受欢迎呢?如下:
一、向下兼容
Sun 公司与 Oracle 公司在确保旧版本 Java 代码能正常在新版本上运行做出很大努力。理想很丰满,现实很骨感(如 JavaSE1.4 断言与 JavaSE5 中枚举)虽然有时不向下兼容却也能够获得更好的实现(泛型),但向下兼容对于开发者来说依然是极具吸引力的特性。没有什么是比让新版本平台能正常运行代码而修改旧版本正常代码要更麻烦的事了。
二、实用性
它能使开发者花费最小的代价就能完成工作,还能使得开发者在一段时间之后,继续完成别人的或自己的代码还能清楚当初的开发意愿,也可以编写可读性较差的代码,就像在其它语言中做的一样,但是良好的编码风格能使它比其它语言更具的可读性。
三、可扩展性/性能/可靠性
多年的发展与每年数以千计开发者推动,Java 已成为坚实的平台,说起可扩展性,可以看看那些使用 Java 语言的大型企业:Twitter(抛弃 Ruby-on-Rails 因为不再具有扩展性),Facebook/Spotify/Scalesforce/eBay大数据工程基础框架,无不在使用 Java 或者 Scala 且是在 JVM 虚拟机上运行。如果需要良好的拓展性与性能那么Java 与 JVM 就是最好的选择
四、持续热度
从2014 年开始,Java 的欢迎程度有显著提升,这正是 JDK8 的发行后。JDK8引入了 Lambda 表达式与Stream API。使Java 开发者能够不用学习一整套新语言(如 Scala)的情况下以更有效的方式进行开发。这样的特点使它能更简单利用多核/多处理器机器,不必写大量复杂和潜在容易出错的多线程代码。随着 Jigsaw 工程 JDK 9 的发布而启动,我们能看到模块化使大企业应用程序更容易建立、部署与维护
为什么Java那么火?的更多相关文章
- java程序员烂大街为何还不便宜?
最近跟一朋友聊天,他是做c#开发的.他答应了老板带领一帮java工程师开发网站.披星戴月终于搞定,现在已经盈利.但是他公司的那帮搞c#的同事不淡定了. 在招聘java程序员的时候2年有开15k的.5年 ...
- Java 的简单了解
本文是主要根据百度百科以网上一些资料,整理的一点对Java的浅显的了解,不当之处,还请大家批评指正. 最初见到Java这个单词,是在以前的手机上,游戏启动时总会显示java的图标和名字,就感觉java ...
- 【java读书笔记】——java开篇宏观把控 + HelloWorld
学完java有一段时间了,一直没有做对应的总结,总认为有一种缺憾.从这篇博客開始,将自己平时的学习笔记进行总结归纳,分享给大家. 这篇博客主要简单的介绍一下java的基础知识,基本的目的是扫盲.原来仅 ...
- JAVA学习第一课(初识JAVA)
PS:退ACM集训队了,自己也疯玩了两天,后天就开学了,就正式大二了,该收收心好好学习啦 ...
- 从事三年java开发后, 我打算转人工智能
作为一个2015年参加java培训,2016年计算机科学与技术本科毕业后一直从事java开发的程序员来说, 做出这一步真的不容易, 可是我没赶上java最火的时候,反而渐渐感受到了java的没落, 目 ...
- 09-02 java 多态
多态的前提.多态的特点 /* 多态:同一个对象(事物),在不同时刻体现出来的不同状态. 举例: 猫是猫,猫是动物. 水(液体,固体,气态). 多态的前提: A:要有继承关系. B:要有方法重写. 其实 ...
- java起源和基本数据类型
1.Java起源于1994年的sun公司,起初并没有体现出它独特的优势.sun公司一度想要放弃这个项目.亏的领头人的力争.Java才的以存在.二十世纪末.随着互联网的兴起.交互式设计越来越多的应用,对 ...
- Java和js的区别,以及Java和c的区别
刚开始的时候我们也搞不清这些概念,不过后来就慢慢清晰了,首先和大家谈谈Java和js的区别,最简单的区别就是一个是后端,一个是前端. java是纯面向对象语言,javascrip其实和Java是完 ...
- 【aliyun】学java,看这里,不迷茫!1460道Java热门问题
阿里极客公益活动: 或许你挑灯夜战只为一道难题 或许你百思不解只求一个答案 或许你绞尽脑汁只因一种未知 那么他们来了,阿里系技术专家来云栖问答为你解答技术难题了 他们用户自己手中的技术来帮助用户成长 ...
随机推荐
- springboot的propteis的基本配置参考
其中mybatis.cfg.xml文件可以不加,这个文件最主要是开启mybatis的二级缓存:
- PHP与Memcached服务器交互的分布式实现源码分析
转自: http://blog.csdn.net/hguisu/article/details/7353595 前段时间,因为一个项目的关系,研究了php通过调用memcache和memcached ...
- Java中的事务及使用
什么是事务? 事务(Transaction),一般是指要做的或所做的事情.在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit).事务通常由高级数据库操纵语言或编程语言(如S ...
- 克隆centos虚拟机导致eth0网卡不可用
打开 vim /etc/udev/rules.d/70-persistent-net.rules可以看到eth0 eth1两个. 1.删除 NAME="eth0",即 # PCI ...
- Python20之全局变量和局部变量
一.局部变量和全局变量 局部变量:是指在函数体内定义的变量,作用域只在该函数体内部 全局变量:是指在函数体外定义的变量,作用域是整个代码段 所以在函数体内可以直接访问全局变量而不可以在函数体外访问局部 ...
- PAT甲级题分类汇编——树
本文为PAT甲级分类汇编系列文章. AVL树好难!(其实还好啦~) 我本来想着今天应该做不完树了,没想到电脑里有一份讲义,PPT和源代码都有,就一遍复习一遍抄码了一遍,更没想到的是编译一遍通过,再没想 ...
- errgroup 分析
errgroup 在 WaitGroup 的基础上实现子协程错误传递, 同时使用 context 控制协程的生命周期. 使用 errgroup 的使用非常简单 package main import ...
- PB笔记之导入、导出组件
导入组件 导出组件
- 题解-APIO2019奇怪装置
problem loj-3144 题意概要:设函数 \(f(t)\) 的返回值为一个二元组,即 \(f(t)=((t+\lfloor \frac tB\rfloor)\bmod A, t\bmod B ...
- nodeJs+vue安装教程详解 相信
相信很多朋友都在装node服务和安装vue的时候会遇到一些问题,下面为大家详细介绍node服务的安装以及vue的安装: 1.nodeJs官网下载版本(根据自己电脑的配置进行相应下载即可):默认安装路径 ...