003Java的诞生

1、计算机语言发展史

(1)第一代语言

  • 机器语言

    • 我们都知道计算机的基本计算方式都是基于二进制的方式。
    • 二进制:010111001010110010110100
    • 这种代码是直接输入给计算机使用的,不经过任何的转换!

(2)第二代语言

  • 汇编 语言

    • 解决人类无法读懂机器语言的问题
    • 用指令代替二进制
    • 目前应用于:
      • 逆向工程
      • 机器人
      • 病毒
      • ……

(3)第三代语言

摩尔定律告诉我们:当价格不变时,集成电路上可容纳的晶体管数目,约每隔18个月便会增加一倍,性能也将提升一倍。

随着时间的发展,摩尔定律已经逐渐失效。我们希望用更简单的写法解决身边越来越复杂的问题,这时繁琐的机器语言和汇编语言已经不能很好满足我们的需求,高级语言随之诞生。

高级语言大体上分为以下两大类:

  • 面向过程
  • 面向对象

C语言是典型的面向过程的语言,C++、Java是典型的面向对象的语言。

不要狭隘的理解一种语言是面向过程还是面向对象,两者是相辅相成的,面向对象中也有着面向过程。

一些常见的高级语言:

  • C语言(所有高级语言的鼻祖)
  • C++语言(在C语言上的扩充)
  • Java语言(最早被人称为“C++--”)
  • C#(微软为了对抗Java推出)
  • Python、PHP、JavaScript……

2、Java帝国的诞生

(1)C&C++的诞生

  • 1972年C诞生

    • 贴近硬件,运行极快,效率极高。
    • 常用于:操作系统,编译器,数据库,网络系统等。
    • 缺点是指针和内存管理太复杂,程序员难以掌握。
  • 1982年C++诞生
    • 面向对象。
    • 兼容C。
    • 常用于:图形领域、游戏等。

(2)我们需要一种全新的高级语言

由于C语言和C++语言都存在门槛高、语法复杂等缺点,我们需要一种全新的高级语言。

我们要建立一种新的语言,它最好:

  • 语法有点像C。
  • 没有指针。
  • 没有内存管理。
  • 真正的可移植性,编写一次,到处运行。
  • 面向对象。
  • 类型安全
  • 有高质量的类库。
  • ……

(3)Java的诞生

Java语言于1995年诞生,最初被命名为Oak,后更名为Java。

1996年,Sun公司发布了Java的第一个开发工具包(JDK 1.0),Java正式成为一种独立的开发工具。

1998年,Java派出3支部队向外扩张:

  • Java 2 标准版(J2SE):去占领桌面。
  • Java 2 移动版(J2ME):去占领手机。
  • Java 2 企业版(J2EE):去占领服务器。

其他使用Java的公司基于Java开发了许多的平台、系统、工具:

  • 构建工具:Ant、Maven,Jekins
  • 应用服务器:Tomcat、Jetty、Jboss、Websphere、weblogic
  • Web开发:Struts、Spring、Hibernate、MyBatis
  • 开发工具:Eclipse、Netbean、IntelliJ IDEA、Jbuilder
  • ……

三高:高可用、高性能、高并发。后来被称为中间件

Java逐渐占领了各种各样的领域:

  • 2006:Hadoop(大数据领域)

  • 2008:Android(手机端)

003Java的诞生的更多相关文章

  1. JSONP的诞生、原理及应用实例

    问题: 页面中有一个按钮,点击之后会更新网页中的一个盒子的内容. Ajax可以很容易的满足这种无须刷新整个页面就可以实现数据变换的需求. 但是,Ajax有一个缺点,就是他不允许跨域请求资源. 如果我的 ...

  2. Lambda表达式的诞生过程

    这是一篇很经典的文章,解决了工作中一些使用过但是又不太明白的知识点,今天终于弄明白了.花了一晚上重新整的,坚决要分享出来!!! 那得从很久很久以前说起了,记得那个时候... 懵懂的记得从前有个叫委托的 ...

  3. git的诞生

    Git的诞生   很多人都知道,Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了. Linus虽然创建了Linux,但Linux的壮大是靠全世 ...

  4. Selenium2学习-042-Selenium3启动Firefox Version 48.x浏览器(ff 原生 geckodriver 诞生)

    今天又被坑了一把,不知谁把 Slave 机的火狐浏览器版本升级为了 48 的版本,导致网页自动化测试脚本无法启动火狐的浏览器,相关的网页自动化脚本全线飘红(可惜不是股票,哈哈哈...),报版本不兼容的 ...

  5. 3.Git的诞生和其分布式的优点

    Git的诞生 省略了,喜欢的可以看百度. 分布式的优点 先说集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完 ...

  6. [转载]jQuery诞生记-原理与机制

    by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=3520 一.看似偶然的 ...

  7. Zygote进程【3】——SystemServer的诞生

    在ZygoteInit的main()方法中做了几件大事,其中一件便是启动Systemserver进程,代码如下: @/frameworks/base/core/Java/com/Android/int ...

  8. 【Android测试】【随笔】性能采集工具——小松鼠诞生记

    ◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/4945066.html 起因 去年刚加入TX的时候,我便接手 ...

  9. jQuery诞生记-原理与机制

    一.看似偶然的东西实际是必然会发生的 我大学时候在图书馆翻过一本很破旧的书,讲生物理论的,主要内容就是探讨生命的产生是偶然还是必然.里面很多亚里士多德都看不懂的公式计算什么的,还有模拟原始地球环境出现 ...

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

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

随机推荐

  1. RPS网卡多队列

    一体机上传1G文件导致服务器很卡,怀疑是网卡未开启多核多队列导致. 脚本如下 #!/bin/bash # Enable RPS (Receive Packet Steering) read -p &q ...

  2. C++ primer笔记 -数组和指针

    如果数组没有显示的提供元素的初始值,则数组元素会像普通变量一样的初始化: 1.在函数体外的内置类型的数组,其元素均初始化为0 2.在函数体内的内置类型的数组,其元素无初始化 3.如果为类类型,则不管位 ...

  3. 10 个常用的 JS 工具库,80% 的项目都在用!

    Day.js 一个极简的处理时间和日期的 JavaScript 库,和 Moment.js 的 API 设计保持一样, 但体积仅有2KB. npm install dayjs 基本用法 import ...

  4. hdrp gpu instance MPB不生效问题

    Thanks for posting these tips. I was devastated when my project dropped to 3 FPS because material pr ...

  5. unity shader ide

    Shader Languages support for vs Code https://marketplace.visualstudio.com/items?itemName=slevesque.s ...

  6. 使用layui时遇到的问题以及解决文章链接

    1.斜线表头效果 2.表格嵌套使用 3.layui数据表格跨行自动合并 4.layui表格数据变更的处理方式 5.layer弹窗动态添加KindEditor编辑器 6.layer弹出层自动调节位置 7 ...

  7. leetcode 27. 移除元素 【时间击败100.00%】【内存击败84.67%】

    1 public int removeElement(int[] nums, int val) { 2 int last = nums.length - 1; 3 for (int i = 0; i ...

  8. 手动收集oracle的统计信息脚本及相关操作

    我们一般习惯使用oracle自带的统计信息收集,但很多时候我们会发现,有很多关键的表始终没有被收集过. connect 用户/密码grant create any table to 用户;-- 这一步 ...

  9. linux篇之WC(word count)的使用概述

    Text. Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数.字数.行数,并将统计结果显示输出. 1.命令格式: wc [选项] [文件1] [文件2] ... 2.命 ...

  10. 循环4-for循环

    一.语法 for循环和while类似,常用于执行有限次数的循环,有两种语法结构, 1.变量列表循环 语法: for 变量名 in 变量取值列表 do 指令...... done 变量取值列表中的值,要 ...