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. unity 资源打包,MD5值计算注意点

    仅作记录: unity3d在修改资源时,有些类型的资源修改的是源文件,比如:fbx,mp3,.jpg,.png等.这些资源是外部资源导入unity3d中,untiy3d导入编译时,生成相应的meta文 ...

  2. 把VScode插件提示abc的提示给移到最后

    把VScode插件提示abc的提示给移到最后 解决方法 打开设置,在搜索中输入editor.snippetSuggestions,然后将选项改为top,就可以解决了 top:就是将你插件提示放到最上面 ...

  3. 理解cpu过高的逻辑思维与分析方法

    工作经常碰到负载过高,cpu占有太高,系统变慢,运维通常做的第一件事就是通过top或者uptime命令来了解系统负载的情况 通常uptime后会出现三个小数,就是平均负载值,那真正的了解这个平均负载值 ...

  4. Mysql数据库基础第二章:(十)联合查询

    Mysql数据库基础系列 软件下载地址 提取码:7v7u 数据下载地址 提取码:e6p9 mysql数据库基础第一章:(一)数据库基本概念 mysql数据库基础第一章:(二)mysql环境搭建 mys ...

  5. JDK8的异步处理方式-CompletableFuture的使用

    一.背景 jdk8中加入了实现类CompletableFuture,用于异步编程.底层做任务使用的是ForkJoin, 顾名思义,是将任务的数据集分为多个子数据集,而每个子集,都可以由独立的子任务来处 ...

  6. Dockerfile 参考

    Dockerfile:FROM openjdk:8u252-jdkENV JHIPSTER_SLEEP=0 \ JAVA_OPTS="" \ LOGFILE="" ...

  7. BurpSuite暴力破解和防御实战

    burpsuite暴力破解 工具准备 burp suite 用于攻击web 应用程序的集成平台 jsEncrypter 一个用于前端加密Fuzz的Burp Suite插件,支持base64.sha.m ...

  8. bzoj 3603

    考虑转化问题:一个点相邻元素中有偶数个$1$等价于一个点与相邻元素异或和为$0$ 于是直接列出异或方程组求解即可 注意由于要求不允许出现全0矩阵,因此如果有自由元直接给成$1$ 贴代码: #inclu ...

  9. JS实现异步的方法:回调函数callback、事件监听、setTimeout、Promise、生成器Generators/yield、async/awt

    所有异步任务都是在同步任务执行结束之后,从任务队列中依次取出执行. 回调函数是异步操作最基本的方法,比如AJAX回调,回调函数的优点是简单.容易理解和实现,缺点是不利于代码的阅读和维护,各个部分之间高 ...

  10. IE8兼容的零零碎碎

    css部分 1 nth-of-type选择器 2 span:nth-of-type(1) 3 /*IE8兼容写法*/ 4 span:first-child /*选中第一个*/ 5 span:first ...