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. 阻止form表单默认跳转

    form表单提交后,会默认跳转

  2. mysql两表关联

    mysql两表关联 是按照范围关联表 select * from ((select u.id,u.name,u.sex,s.street_name,u.street_code,u.birthday f ...

  3. vue 路由切换页面再次进入更新数据

    一:同一项目中路由的跳转 mounted和created都只能执行一次,尝试监听改变的数据也未起效果,项目中使用了<keep-alive>,所以用activated监听初始函数 1.需要跳 ...

  4. 从URL中获取参数

    1.跳转测试页面  获取的url上的参数    <!doctype html> <html lang="en"> <head>     < ...

  5. 站长神器Beyond Compare与UltraCompare文件比较工具

    Beyond Compare是一套非常实用的文件及文件夹比较软件,不仅可以快速比较出两个文件夹的不同之处,还可以详细的比较文件之间的内容差异.程序内建了文件浏览器,方便您对文件.文件夹.压缩包.FTP ...

  6. 网络服务之DHCP与FTP

    目录 DHCP 一.DHCP是什么? 二.DHCP的优点 三.DHCP的分配过程 四.DHCP的工作原理 五.DHCP动态获取实验 FTP 一.FTP是什么? 二.FTP的数据连接模式 三.svftp ...

  7. 使用excel生成多条sql语句

    前提: excel 表里有2列数据,现在要每一列 生成一个sql 语句,应用自定义字符 在第三行单元格里面写入:="zdy"&A2&"zdy"& ...

  8. 管理名称空间资源(Kubernetes)

    管理名称空间资源 名称空间(Namespace)是Kubernetes集群级别的资源,用于将集群分隔为多个隔离的逻辑分区以配置给不同的用户.租户.环境或项目使用.例如,可以为development.q ...

  9. bzoj 4573

    LCT神题... 首先暴力的做法就是每次在一个区间上link,然后暴力查询,时间复杂度$O(爆炸)$ 但是我们可以发现的是,每棵树之间互不影响! 因此我们可以考虑离线之后分别统计每棵树 但是这样做其实 ...

  10. kubectl使用方法及常用命令小结

    Kubectl 是一个命令行接口,用于对 Kubernetes 集群运行命令.kubectl 在 $HOME/.kube 目录中寻找一个名为 config 的文件. kubectl安装方法详见:htt ...