Java的诞生历史
Java帝国的诞生
1.1972年C诞生
- 贴近硬件,运行极快,效率极高
- 操作系统,编译器,数据库,网络系统等都采用C语言
- 但是,它的指针和内存管理给程序员安上了“枷锁”。它的指针没有检查制度,内存也不会自动释放,需要程序员自己释放。虽然在任何编译器都可以写C,但是它要求使用标准的C的库,这种‘暴政’对程序员很不友好。
2.1982年C++诞生
- 面向对象
- 兼容C
- 在图形领域、游戏等领域做的比较好
- 但是,它比C更加复杂,很多人无法完全掌握。其内涉及很多计算机底层的知识。
3.1995年Java诞生
- 语法有点像C
- 没有指针
- 没有内存管理
- 真正的可移植性,编写一次,到处运行
- 面向对象
- 类型安全
- 高质量的类库
- ......
浅谈Java的命名
Java,最初命名为C++--,代表在C++之上进行优化的一种语言,但是与它的设计理念不符合,因此就改成了oak。但是后来命名的时候发现oak已经被命名过了,因此也就出现了我们现在的Java这个称呼。
Java初生
- 1995年的网页简单而粗糙,缺乏互动性
- 由Java开发的图形界面的程序(Applet)使得网页变得稍微美观一些,也就捕获了大多数程序员的心
- 微软的比尔·盖茨说:“这是迄今为止设计的最好的语言!”微软想将Java设计为仅供windows使用的语言,于是就有了后来的.net出现。
- 由于Java只能最初用于图形界面开发,用途限制性比较大,于是1998年就引进了Java的三个版本:
- Java 2 标准版(J2SE):去占领桌面
- Java 2 移动版 (J2ME):去占领手机
- Java 2 企业版 (J2EE):去占领服务器
- JavaSE最初占领桌面领域做的并不很好,界面不是很好看,而且JavaME在手机端运行还要下载专门的JVM(Java虚拟机),很不方便。只有javaEE在占领服务器这一块做的比较好,也因此成为了Java比较适合的一个领域。因此很多大型的项目都采用Java语言。
浅谈为什么Java开发后微软仍要开发.NET?
Java当年打出来就是冲着跨平台来的,然后后来发现,每一个系统都有自己的规则,所以搞的东西性能就非常差。
而WIN 一直以来在 PC端是大哥的地位,而且微软跟硬件商都是玩在一起的,什么优化驱动什么的 肯定一般是WIN先来。为了提高WIN的性能,微软就因此创建了.NET。
.NET就是微软自家的东西,无论调用任何东西,跟生态都比JAVA强。包括性能。 所以桌面程序大多数是 .NET。
Java为什么要开发JVM?
Java 也是个高阶语言,要让电脑执行你编写的应用程序,也是得借助编译器的翻译。不过,Java编译时,并不直接翻译为相依于某平台的0101指令,而是翻译为中介格式的位元码(byte code)。Java 的原始码文件格式名为.java,经过编译器翻译过后,会变成.class的格式文件位元码。如果想要执行这个位元码档案,目标平台上必须安装有JVM(Java Virtual Machine)。JVM会将位元码翻译为相应平台支持的语言,从而达到跨平台的目的。
不同的平台必须安装该平台相对应的JVM。这就好比你讲中文(.java),Java编译器帮你翻译为英文(.class)。之后该英文文件,到当地之后,再由当地看得懂英文的人翻译为当地的方言。
所以JVM所担任的职责之一,就是当地的翻译员,将位元码文件翻译为当时作业系统看得懂的0101序列。不过这不是最重要的,基本上如果只是要翻译员的话,直译器(Interpreter )就办得到了。
JVM有个很重要的观念就是:「对于Java程式而言,其实它只认识一种作业系统(或说是一种机器),这个系统叫作JVM,而对于JVM而言,位元码文件就是它的可执行文件!也就是格式为.class的文件。Java代码程序,理想上,并不用理会真正执行于哪个平台之上,它只要知道如何执行于JVM之上就可以了,至于JVM实际上如何与底层平台作沟通,则是JVM自己的事!」这个观念非常的重要,对于以后能够搞清楚所PATH变量与CLASSPATH变量的概念,也有一定的帮助。
浅谈一个好的程序需要具备什么?
一个好的程序需要具备“三高”原则,即高可用、高性能、高并发。
高并发是现在互联网分布式框架设计必须要考虑的因素之一,它是可以保证系统能被同时并行处理很多请求。
高性能是指程序处理速度非常快,所占内存少,cpu占用率低。
高可用通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性。
Java发展
1.大量巨头加入了Java后,他们基于Java开发了巨多的平台,系统,工具
- 构建工具:Ant,Maven,Jekins
- 应用服务器:Tomcat,Jetty,Jboss,Websphere,weblogic
- Web开发:Struts,Spring,Hibernate,myBatis
- 开发工具:Eclipse,Netbean,intellij idea,Jbuilder
- ......
2.2006年Hadoop的出现让Java占领了大数据领域
3.2008年Andrid的出现让Java在手机端占领了一席之地,也相当于是JavaME在手机端的一个提升。
Java特性及优势
- 简单性
- 面向对象
- 可移植性
- 高性能
- 分布式
- 动态性(Java本身不具有动态性,它的反射机制可以满足动态性要求)
- 多线程
- 安全性
- 健壮性
为什么要学习Java?
- 它是目前最为广泛的网络编程语言
- Java语言简单,这门语言既易学又好用。
- 基于对象的编程更符合人的思维模式
- 跨平台是Java语言最大的优势
- 是解释型
- 内置对多线程的支持
- 安全
- 动态(Java内部的反射机制实现)
Pass:本文主要用于学习分享,若有问题希望能在评论区给出您宝贵的意见和建议!感谢!
Java的诞生历史的更多相关文章
- 对“Java”的诞生历史、特点、定义等HR常问的简单题
本人是一个学习Java的新手,在学习了Java以后,对Java的一些总结. 这里共有12点对Java的简单的阐述,如果解释的不怎么样请大家谅解哈. 1.首先我们来看一看,在Java之前的有那些打牌语言 ...
- 初识java——Java程序的历史、开发和运行
上了一节Java试听课,整理出如下笔记. Java最新版本下载 http://www.oracle.com/technetwork/java/javase/downloads/index.ht ...
- 2020重新出发,JAVA语言,JAVA的诞生和发展史
java的诞生 在1991年时候,James Gosling在Sun公司的工程师小组想要设计这样一种主要用于像电视盒这样的消费类电子产品的小型计算机语言. 这些电子产品有一个共同的特点:计算处理能力和 ...
- JVM基础系列第2讲:Java 虚拟机的历史
说起 Java 虚拟机,许多人就会将其与 HotSpot 虚拟机等同看待.但实际上 Java 虚拟机除了 HotSpot 之外,还有 Sun Classic VM.Exact VM.BEA JRock ...
- Java SE/EE/ME概念理解(Java版本发展历史)
继上一篇文章http://www.cnblogs.com/EasonJim/p/6181981.html中说的区别,其实分析的不够彻底,因此再次在这里做详细的分析. 零.Java与Sun.Oracle ...
- 如何在官网下载java JDK的历史版本
如何在官网下载java JDK的历史版本 http://jingyan.baidu.com/article/9989c746064d46f648ecfe9a.html 如何在官网下载java JDK的 ...
- Java版本及历史简述
Java版本及历史简述 初学Java,对于Java那么多版本很困惑,这里做一点笔记,如有错误希望指出. Java由Sun公司创造,后Sun公司被Oracle公司收购,Java也随之变为Oracle的产 ...
- 浅谈Java的诞生和现状
昨天在旅途中登录一下很久没用的boss直聘,看看行情,一天的时间,已经有20+家公司给我发出了面试邀请,先跟大家谈谈Java的诞生和现状. 传说,在二十世纪90年代,一个叫Sun的公司,成立了一个项目 ...
- JavaScript 的诞生历史
看到一篇介绍JS诞生历史的文章,很有意思,文章里描述了很多的历史细节 https://webdevelopmenthistory.com/1995-the-birth-of-javascript/
随机推荐
- manjaro20软件商店无法链接下载
软件商店如果无法链接下载 解决方案1 可以使用terminal慢慢下载,.bashrc中配置代理 如果依然不行,检查网络设置代理是否为自动或者手动设置正确. 解决方案2 检查是否未设置中国社区源或者重 ...
- Express框架的简单使用
Express框架的简单使用 这个框架是基于Node.js的框架平台 需要先安装node.js 安装完node.js后使用指令操作 npm init --yes 初始化 npm i express 安 ...
- golang中字符串、bytes类型切片、16进制字符串之间的转换
func main() { // 字符串转bytes类型 name := "马亚南" fmt.Println(name) // 马亚南 bName := []byte(name) ...
- WPS修改批注部分的字体颜色?
今天遇到一个问题,就是复制文档的时候有几块红色字体想改成黑色,怎么也改不成功,通过修改字体颜色无效,通过百度找到了解决方法记录一下. 解决方法 审阅--显示标记--点击插入和删除(去掉前面的对钩即可) ...
- macOS Monterey 12.12.2 (21D49) 正式版 ISO、IPSW、PKG 下载
本站下载的 macOS Monterey 软件包,既可以拖拽到 Applications(应用程序)下直接安装,也可以制作启动 U 盘安装,或者在虚拟机中启动安装. 2022 年 1 月 27 日,m ...
- Java 锁 概念介绍
一 Java中的锁是什么? /* * 一 Java锁定义? * 在计算机科学中,锁(lock)或互斥(mutex)是一种同步机制,用于在有许多执行线程的环境中强制对资源的访问限制. * 锁旨在强制 ...
- JDBC 连接DRUID 连接池!
一.1.创建一个floder目录,[名称lib] 2. 导入mysql.jar包和 druid.jar 包.---------->bulid path 二.创建 sourcefolder 目录 ...
- Elasticsearch(2) 数据搜索
本文介绍如何在Elasticsearch中对数据进行搜索. 1.简述 在Elasticsearch中的搜索中,有两类搜索: queries aggregations 区别在于:query可以进行全文搜 ...
- 「SNOI2017」一个简单的询问
「SNOI2017」一个简单的询问 简单的解法 显然可以差分一下. \[get(l,r,x)\times get(l1,r1,x)=get(1,r,x) \times get(1,r1,x)-get( ...
- 将string字符串中的换行符进行替换
/** * 方法名称:replaceBlank * 方法描述: 将string字符串中的换行符进行替换为"" * */ public static String replaceBl ...