一、计算机语言简介

一代语言:二进制
二代语言:汇编语言
  • 为了方便人读写和编写,使用了大量的助记符
  • 目前应用
    1. 逆向工程:破解一个游戏;把一个软件逆向开发出来(需要用到加密解密)
    2. 机器人:
    3. 计算机病毒
三代语言:
  • 面向过程C

    1. 现代语言的鼻祖
    2. 有高级语言的特点,也有汇编语言的特点
    3. 用于书写操作系统、应用程序系统、工作系统设计以及一些不依赖计算机硬件的应用程序
    4. 有很强的数据处理的能力,不仅是软件开发,还有各类科研、单片机等
  • 面向对象:C++、JAVA、C#、Python、PHP、JavaScript

    1. C++

      是 C 语言的升级版, C 语言面向对象的版本。

    2. Java

      主要用于服务器的开发

      也是以C 和C++ 为原型的,刚开始的叫做C+±-,其实就是把C++中一些不好的东西给去除掉了

    3. Python

      用于大数据分析和人工智能

    4. PHP

      可以快速的构建一个网站

二、第三代语言的演化及优劣势

  1. C
    • 1972年诞生
    • 贴近硬件,运行速度快,效率高
    • 操作系统,编译器,数据库,网络系统等很多都是C 编写的
    • 指针:指针很强大,可以直接去操作内存,但是 C 却没有一个专门的工具去做一些越界的检查,导致很多程序会犯错
    • 内存管理:内存分配在编译的时候不会出现问题,但是到了实际运行程序的时候,才会暴露和其它程序或者系统的冲突,导致程序员的很多精力浪费在了内存分配上。
    • 移植性较差:也是因为内存自己指定的原因,在这个机器上可以使用,但是到了另一个机器上可能就会内存冲突而报错!
  2. C++
    • 1982年诞生
    • 添加了一些面向对象的东西
    • 兼容C
    • 但是有很多复杂的特性,很难掌握
    • 擅长于图形领域、游戏等
    • 但是学习C++,可以学到很到计算机底层性的东西
  3. Java
    • 1995年诞生
    • 语法与C相似,没有指针和内存管理
    • 类型安全
    • 面向对象
    • 有高质量的类库
    • 可移植性强,为了实现真正的跨平台,在每个操作系统之上添加了一个抽象层,叫做Java的虚拟机——,统称 JVM
  4. Java的发展过程
    1. 1995年,投放在网页上的图形界面程序Applet,使网页更加美观

    2. 微软后来参与合作,但是却想把Java封闭在Windows里,但是不能移植,所以Java终止了与微软的合作,后来微软做了基于Java的NET。

    3. 98年,Java开发了三种版本

      • 标准版 J2SE: 用于桌面 因为需要安装虚拟机的原因,未能发展起来
      • 移动版 J2ME: 用于手机 当时移动互联网不发达,生不逢时
      • 企业版 J2EE: 用于服务器 ,赶上互联网的兴起,基于安全,简单,强大,跨平台,在J2EE的规范指导下,特别适合一些团队去开发一些复杂的大型项目。
    4. 三高

      • 高可用
      • 高性能
      • 高并发
    5. 三高称为Java程序中坚性的特性,使程序员从事务管理、安全管理、权限管理方面解放出来,能够专注于业务开发,从而大量Java程序员诞生。

    6. IBM加入Java阵营,开发出了自己的应用服务器Websphere,并开发出了名叫Eclipse的开发平台,早些年是重要的开发平台,到现在还有很多老的程序员在使用。现在才流行IDEA

    7. 基于Java的平台、系统、工具

      • 构建工具Maven 、 Ant 、 Jekins
      • 应用服务器Tomcat 、 Jetty 、 Jboss 、 Websphere 、 Weblogic
      • Web开发Spring 、 Struts 、Hibernate 、myBatis
      • 开发工具Intellij IDEAEclipseNetbean 、 jbuilder
    8. 2006年, Hadoop 占领了大数据领域,基于Java的分布式和redis

    9. 2008年,Android 占领了手机端,实现了J2ME的愿望。

    之后

    ​ Java 占据了大部分服务器端的开发,尤其是些关键的复杂的系统,绝大多数的手机端,以及大部分的大数据领域都是使用的Java,从此一个语言帝国诞生!

三、Java特性和优势

  1. 简单性

    相当于是C++的语法纯净版,没有头文件,没有指针,也不用内存管理,语法基于C ,学习起来不费力!

  2. 面向对象

    将重点放在对象以及对象之间的接口上,模拟的是人的思维去写程序,故流传一句话:万物皆对象

  3. 可移植性

    跨平台性,无视操作系统和硬件换件,Write once , Run anywherw !

  4. 高性能

    及时编译,可以是某些程序的效率接近C++

  5. 分布式

    • Java就是为网络分布式环境所设计的,它能处理很多TCP/IP协议上的东西,在Java中通过URL,访问网络上的资源,就和访问本地的资源一样,

    • 支持一些远程的方法调用,使得一些程序可以通过网络去调用方法,非常强大

  6. 动态性

    • Java本身不具有动态性,但有反射机制,通过反射,使Java有了动态性。
    • 很多框架都是基于反射,这也是C++无法具备的东西
  7. 多线程

    可以带来很多交互行为和实时行为。比如:同时打游戏和使用微信等。。。

  8. 安全性

    防病毒、防篡改

  9. 健壮性

    • 去掉了C和C++中指针和内存的管理,每次在运行之前都会进行内存检查,确保都是合法的,不至于引起系统崩溃。

    • 即使出现问题,已有异常机制

四、JAVA三大版本

1、JavaSE
  • 标准版
  • 用于桌面程序、控制台开发(类似于DOS控制台)
  • 扫雷、连连看之类的小游戏
  • 最核心、最标准的
2、JavaME
  • 嵌入式开发
  • 相当于Java的微缩版
  • 但是基本被淘汰了,知道即可
3、JavaEE
  • 企业级开发
  • Web端、服务器开发等。。。
  • EE的基础是SE

JDK、JRE、JVM

JDK:Java Development Kit 开发者工具

JRE:Java Runtime Environment 运行环境

JVM:Java Virtual Machine 虚拟机

JDK = JRE + 开发工具集

JRE = JVM + JavaSE标准类库

JDK:

  • 提供给Java开发人员使用的,其中包含了Java的开发工具,也包括了JRE。所以安装了JDK,就不用在单独安装JRE了
  • 其中的开发工具:编译工具(javac.exe)、打包工具(jar.exe)

JRE:

  • 包括Java虚拟机——JVM和Java程序所需的核心类库等,如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。

Java核心机制-——JVM虚拟机:

  • 虚拟机,可以理解为一种规范,可以用软件实现,也可以用硬件实现。

  • 相当于在操作系统上模拟了一个小巧的CPU去处理Java相关的东西。

  • 是Java实现跨平台的核心,屏蔽了底层系统的差别

Java核心机制——垃圾回收

  • 不再使用过的内存空间应回收——垃圾回收

    • 在C/C++等语言中,有程序员负责回收无用的内存
    • Java语言消除了程序员回收无用内存空间的责任:它提供一种系统级线程跟踪存储空间的分配情况。并在JVM空闲时,检查并释放那些可被释放的存储空间。
  • 垃圾回收在Java程序运行过程中自动进行,程序员无法精确控制和干预。
Java程序还会出现内存泄漏和内存溢出问题的。

​ ——上述内容基于:西部开源 秦疆 (狂神说)

备注:

以上均为本人的听课笔记
点此进入遇见狂神说Java视频教学,满满干货,良心开源教学,超赞,中国程序员楷模

Java二:计算机语言发展进程 以及 JAVA的发展、特性、版本介绍相关推荐

  1. java二维数组的创建,java二维数组创建方法

    java动态创建二维数组,从零学java笔录-第31篇 图解二位数组在内存中存储,java二维数组动态赋值,java二维数组创建方法 二维数组的定义 type arrayName[ ][ ]; typ ...

  2. 【Java二十周年】爱上Java无法自拔

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 一.写在前面的话 不知不觉之中,java都已经20岁了.刚好是一个正值青春的少年,回想当初他出 ...

  3. java二维数组长度表示,java二维数组指定不同长度代码实例

    本篇文章小编给大家分享一下java二维数组指定不同长度代码实例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 1.二维数组的每个元素都是一个一维数组, ...

  4. java二次排序_使用java 实现二次排序

    二次排序工具类: import java.io.Serializable; import scala.math.Ordered; /** * @author 作者 E-mail: * @version ...

  5. 教妹学Java(二十三):怎么理解 Java 中对象和类的概念?

    你好呀,我是沉默王二,CSDN 排名前十的博客专家.这是<教妹学 Java>专栏的第二十三篇,我们来理解一下 Java 中的对象和类,以及它们俩的概念--什么是对象?什么又是类? 本专栏中 ...

  6. java 二嗨租车项目,Java小项目 -- 答答租车系统(已自测通过)

    /** * 汽车抽象类 * * @author Administrator * */ public abstract class Auto { private String name; private ...

  7. Java二维数组谷电,java二维数组遍历的2种代码

    二维数组遍历: 思想: 1.先将二维数组中所有的元素拿到 2.再将二维数组中每个元素进行遍历,相当于就是在遍历一个一维数组 第一种方法:双重for循环 //遍历二维数组 public class Tr ...

  8. java二维数组的遍历

    java二维数组的遍历 /* * java二维数组的遍历 * 二维数组,数组座位数组元素类型的数组,数组的数组 * */ public class Test14 {public static void ...

  9. java设计模式并发_[高并发Java 七] 并发设计模式

    [高并发Java 七] 并发设计模式 [高并发Java 七] 并发设计模式 为什么80%的码农都做不了架构师?>>> 在软件工程中,设计模式(design pattern)是对软件设 ...

  10. JAVA 虚拟机深入研究(二)——JVM虚拟机发展以及一些Java的新东西

    内容目录: JAVA 虚拟机深入研究(一)--关于Java的一些历史 JAVA 虚拟机深入研究(二)--JVM虚拟机发展以及一些Java的新东西 这是第二篇,我们来说说有关虚拟机的发展. 一说到虚拟机 ...

最新文章

  1. 图灵2010.01书讯——看你错过了哪一本
  2. [收集]Visual C#中调用Windows API
  3. 014 Android之Cydia与Xposed框架入门
  4. CRC32碰撞解密压缩包密码的脚本
  5. tensorflow GPU笔记
  6. jframe运行和预览大小不一样_同一款车型,为什么配的轮胎大小还会不一样?【内含福利】...
  7. java中大量匿名内部类的坏处_java中的匿名内部类总结
  8. 25. 合并两个排序的链表
  9. 大数据学习笔记23:MR案例——采用Combiner做词频统计
  10. Notepad++配置Python运行环境
  11. Rust常用编程概念之变量和可变性
  12. 深入了解一下PYTHON中关于SOCKETSERVER的模块-A
  13. PyTorch:模型训练和预测
  14. comsol光学模块案例
  15. python浪漫代码表白npy_python – Cython使用MemoryView时关于NPY_NO_DEPRECATED_API的Numpy警告...
  16. uva10099+uvauva10048
  17. 32python腾讯位置大数据2.0版本成功输出北京位置数据(续接上2019年8月21日停止服务的内容)
  18. 如何快速干净的卸载mysql数据库,不影响下次安装
  19. 数据归一化 normlization.m 及 Z-score(bsxfun)与mapminmax区分
  20. Java Web之过滤器Filter(@WebFilter)

热门文章

  1. 计算机abc分类法,ABC分类法.ppt
  2. 旅游网站php源码,基于ThinkPHP框架开发的青春旅行旅游门户整站PHP源码
  3. 国外一些DICOM资源下载网址
  4. 信息安全密码学期末复习重点总结
  5. 垃圾焚化炉发电计算机控制技术,生活垃圾焚烧发电系统优化技术研究
  6. 记一次FileZillaServer提权
  7. 变桨距风力发电机液压系统设计
  8. LAMP架构简介与概述 及服务安装
  9. Linux系统连接以太网与WIFI的方法
  10. java连接SqlServer2000