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的诞生历史的更多相关文章

  1. 对“Java”的诞生历史、特点、定义等HR常问的简单题

    本人是一个学习Java的新手,在学习了Java以后,对Java的一些总结. 这里共有12点对Java的简单的阐述,如果解释的不怎么样请大家谅解哈. 1.首先我们来看一看,在Java之前的有那些打牌语言 ...

  2. 初识java——Java程序的历史、开发和运行

    上了一节Java试听课,整理出如下笔记.     Java最新版本下载 http://www.oracle.com/technetwork/java/javase/downloads/index.ht ...

  3. 2020重新出发,JAVA语言,JAVA的诞生和发展史

    java的诞生 在1991年时候,James Gosling在Sun公司的工程师小组想要设计这样一种主要用于像电视盒这样的消费类电子产品的小型计算机语言. 这些电子产品有一个共同的特点:计算处理能力和 ...

  4. JVM基础系列第2讲:Java 虚拟机的历史

    说起 Java 虚拟机,许多人就会将其与 HotSpot 虚拟机等同看待.但实际上 Java 虚拟机除了 HotSpot 之外,还有 Sun Classic VM.Exact VM.BEA JRock ...

  5. Java SE/EE/ME概念理解(Java版本发展历史)

    继上一篇文章http://www.cnblogs.com/EasonJim/p/6181981.html中说的区别,其实分析的不够彻底,因此再次在这里做详细的分析. 零.Java与Sun.Oracle ...

  6. 如何在官网下载java JDK的历史版本

    如何在官网下载java JDK的历史版本 http://jingyan.baidu.com/article/9989c746064d46f648ecfe9a.html 如何在官网下载java JDK的 ...

  7. Java版本及历史简述

    Java版本及历史简述 初学Java,对于Java那么多版本很困惑,这里做一点笔记,如有错误希望指出. Java由Sun公司创造,后Sun公司被Oracle公司收购,Java也随之变为Oracle的产 ...

  8. 浅谈Java的诞生和现状

    昨天在旅途中登录一下很久没用的boss直聘,看看行情,一天的时间,已经有20+家公司给我发出了面试邀请,先跟大家谈谈Java的诞生和现状. 传说,在二十世纪90年代,一个叫Sun的公司,成立了一个项目 ...

  9. JavaScript 的诞生历史

    看到一篇介绍JS诞生历史的文章,很有意思,文章里描述了很多的历史细节 https://webdevelopmenthistory.com/1995-the-birth-of-javascript/

随机推荐

  1. golang中bufio和ioutil的使用

    bufio bufio包实现了带缓冲区的读写,是对文件读写的封装 bufio缓冲写数据 模式 含义 os.O_WRONLY 只写 os.O_CREATE 创建文件 os.O_RDONLY 只读 os. ...

  2. golang中的map

    1. 声明与初始化 // map的声明与初始化 userInfo := map[string]string{"name": "马亚南", "age&q ...

  3. elasticsearch查询之大数据集分页性能测试

    一.测试环境 python 3.7 elasticsearch 6.8 elasticsearch-dsl 7 安装elasticsearch-dsl pip install elasticsearc ...

  4. Nginx 根据不同的域名来代理转发内部主机-HTTP和HTTPS

    一.需求 由于公司只有一个公网,很多 web 项目都想通过 80 或 443 端口来访问,所以需要 Nginx 充当公司网关. 把唯一的公网 IP 80 端口和 443 端口跟 Nginx 网关主机 ...

  5. [NOI2020]命运

    显然直接计数是不好计的,只能从 \(dp\) 这个角度来下手. 首先用最原始最直接的方法,直接在 \(dp\) 的过程中满足题目的要求. 既然问题给在一棵树上,那么必然和树脱不了关系,因此我们应该从树 ...

  6. Java-在数组中遍历出最值

    在操作数组时,经常需要获取数组中元素的最值. 代码 public class Example31{ public static void main(String[] args){ int[] arr= ...

  7. C# 获取网页验证码

    转载请注明来源:https://www.cnblogs.com/hookjc/ 以下方法必需在WebBrowser控件加载网页完成后才可以调用,否则会提示无法将对象引用到实例,切记!!! public ...

  8. linux下使用openssl生成 csr crt CA证书

    证书文件生成:一.服务器端1.生成服务器端    私钥(key文件);openssl genrsa -des3 -out server.key 1024运行时会提示输入密码,此密码用于加密key文件( ...

  9. JAVA变量初始化赋值问题

    感谢大佬:https://www.cnblogs.com/znsongshu/p/6282672.html 在Java中,null值表示引用不指向任何对象.运行过程中系统发现使用了这样一个引用时·可以 ...

  10. Redis 源码简洁剖析 12 - 一条命令的处理过程

    命令的处理过程 Redis server 和一个客户端建立连接后,会在事件驱动框架中注册可读事件--客户端的命令请求.命令处理对应 4 个阶段: 命令读取:对应 readQueryFromClient ...