Java二:计算机语言发展进程 以及 JAVA的发展、特性、版本介绍
一、计算机语言简介
一代语言:二进制
二代语言:汇编语言
- 为了方便人读写和编写,使用了大量的助记符
- 目前应用
- 逆向工程:破解一个游戏;把一个软件逆向开发出来(需要用到加密解密)
- 机器人:
- 计算机病毒
三代语言:
面向过程:C
- 现代语言的鼻祖
- 有高级语言的特点,也有汇编语言的特点
- 用于书写操作系统、应用程序系统、工作系统设计以及一些不依赖计算机硬件的应用程序
- 有很强的数据处理的能力,不仅是软件开发,还有各类科研、单片机等
面向对象:C++、JAVA、C#、Python、PHP、JavaScript
C++
是 C 语言的升级版, C 语言面向对象的版本。
Java
主要用于服务器的开发
也是以C 和C++ 为原型的,刚开始的叫做C+±-,其实就是把C++中一些不好的东西给去除掉了
Python
用于大数据分析和人工智能
PHP
可以快速的构建一个网站
二、第三代语言的演化及优劣势
C
- 1972年诞生
- 贴近硬件,运行速度快,效率高
- 操作系统,编译器,数据库,网络系统等很多都是C 编写的
- 指针:指针很强大,可以直接去操作内存,但是 C 却没有一个专门的工具去做一些越界的检查,导致很多程序会犯错
- 内存管理:内存分配在编译的时候不会出现问题,但是到了实际运行程序的时候,才会暴露和其它程序或者系统的冲突,导致程序员的很多精力浪费在了内存分配上。
- 移植性较差:也是因为内存自己指定的原因,在这个机器上可以使用,但是到了另一个机器上可能就会内存冲突而报错!
C++
- 1982年诞生
- 添加了一些面向对象的东西
- 兼容C
- 但是有很多复杂的特性,很难掌握
- 擅长于图形领域、游戏等
- 但是学习C++,可以学到很到计算机底层性的东西
Java
- 1995年诞生
- 语法与C相似,没有指针和内存管理
- 类型安全
- 面向对象
- 有高质量的类库
- 可移植性强,为了实现真正的跨平台,在每个操作系统之上添加了一个抽象层,叫做Java的虚拟机——,统称 JVM 。
Java的发展过程
1995年,投放在网页上的图形界面程序Applet,使网页更加美观
微软后来参与合作,但是却想把Java封闭在Windows里,但是不能移植,所以Java终止了与微软的合作,后来微软做了基于Java的NET。
98年,Java开发了三种版本
- 标准版 J2SE: 用于桌面 因为需要安装虚拟机的原因,未能发展起来
- 移动版 J2ME: 用于手机 当时移动互联网不发达,生不逢时
- 企业版 J2EE: 用于服务器 ,赶上互联网的兴起,基于安全,简单,强大,跨平台,在J2EE的规范指导下,特别适合一些团队去开发一些复杂的大型项目。
三高
- 高可用
- 高性能
- 高并发
三高称为Java程序中坚性的特性,使程序员从事务管理、安全管理、权限管理方面解放出来,能够专注于业务开发,从而大量Java程序员诞生。
IBM加入Java阵营,开发出了自己的应用服务器Websphere,并开发出了名叫Eclipse的开发平台,早些年是重要的开发平台,到现在还有很多老的程序员在使用。现在才流行IDEA
基于Java的平台、系统、工具
- 构建工具: Maven 、 Ant 、 Jekins
- 应用服务器:Tomcat 、 Jetty 、 Jboss 、 Websphere 、 Weblogic
- Web开发: Spring 、 Struts 、Hibernate 、myBatis
- 开发工具: Intellij IDEA 、 Eclipse 、Netbean 、 jbuilder
2006年, Hadoop 占领了大数据领域,基于Java的分布式和redis
2008年,Android 占领了手机端,实现了J2ME的愿望。
之后
Java 占据了大部分服务器端的开发,尤其是些关键的复杂的系统,绝大多数的手机端,以及大部分的大数据领域都是使用的Java,从此一个语言帝国诞生!
三、Java特性和优势
简单性
相当于是C++的语法纯净版,没有头文件,没有指针,也不用内存管理,语法基于C ,学习起来不费力!
面向对象
将重点放在对象以及对象之间的接口上,模拟的是人的思维去写程序,故流传一句话:万物皆对象
可移植性
跨平台性,无视操作系统和硬件换件,Write once , Run anywherw !
高性能
及时编译,可以是某些程序的效率接近C++
分布式
Java就是为网络分布式环境所设计的,它能处理很多TCP/IP协议上的东西,在Java中通过URL,访问网络上的资源,就和访问本地的资源一样,
支持一些远程的方法调用,使得一些程序可以通过网络去调用方法,非常强大
动态性
- Java本身不具有动态性,但有反射机制,通过反射,使Java有了动态性。
- 很多框架都是基于反射,这也是C++无法具备的东西
多线程
可以带来很多交互行为和实时行为。比如:同时打游戏和使用微信等。。。
安全性
防病毒、防篡改
健壮性
去掉了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的发展、特性、版本介绍相关推荐
- java二维数组的创建,java二维数组创建方法
java动态创建二维数组,从零学java笔录-第31篇 图解二位数组在内存中存储,java二维数组动态赋值,java二维数组创建方法 二维数组的定义 type arrayName[ ][ ]; typ ...
- 【Java二十周年】爱上Java无法自拔
林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 一.写在前面的话 不知不觉之中,java都已经20岁了.刚好是一个正值青春的少年,回想当初他出 ...
- java二维数组长度表示,java二维数组指定不同长度代码实例
本篇文章小编给大家分享一下java二维数组指定不同长度代码实例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看. 1.二维数组的每个元素都是一个一维数组, ...
- java二次排序_使用java 实现二次排序
二次排序工具类: import java.io.Serializable; import scala.math.Ordered; /** * @author 作者 E-mail: * @version ...
- 教妹学Java(二十三):怎么理解 Java 中对象和类的概念?
你好呀,我是沉默王二,CSDN 排名前十的博客专家.这是<教妹学 Java>专栏的第二十三篇,我们来理解一下 Java 中的对象和类,以及它们俩的概念--什么是对象?什么又是类? 本专栏中 ...
- java 二嗨租车项目,Java小项目 -- 答答租车系统(已自测通过)
/** * 汽车抽象类 * * @author Administrator * */ public abstract class Auto { private String name; private ...
- Java二维数组谷电,java二维数组遍历的2种代码
二维数组遍历: 思想: 1.先将二维数组中所有的元素拿到 2.再将二维数组中每个元素进行遍历,相当于就是在遍历一个一维数组 第一种方法:双重for循环 //遍历二维数组 public class Tr ...
- java二维数组的遍历
java二维数组的遍历 /* * java二维数组的遍历 * 二维数组,数组座位数组元素类型的数组,数组的数组 * */ public class Test14 {public static void ...
- java设计模式并发_[高并发Java 七] 并发设计模式
[高并发Java 七] 并发设计模式 [高并发Java 七] 并发设计模式 为什么80%的码农都做不了架构师?>>> 在软件工程中,设计模式(design pattern)是对软件设 ...
- JAVA 虚拟机深入研究(二)——JVM虚拟机发展以及一些Java的新东西
内容目录: JAVA 虚拟机深入研究(一)--关于Java的一些历史 JAVA 虚拟机深入研究(二)--JVM虚拟机发展以及一些Java的新东西 这是第二篇,我们来说说有关虚拟机的发展. 一说到虚拟机 ...
最新文章
- 图灵2010.01书讯——看你错过了哪一本
- [收集]Visual C#中调用Windows API
- 014 Android之Cydia与Xposed框架入门
- CRC32碰撞解密压缩包密码的脚本
- tensorflow GPU笔记
- jframe运行和预览大小不一样_同一款车型,为什么配的轮胎大小还会不一样?【内含福利】...
- java中大量匿名内部类的坏处_java中的匿名内部类总结
- 25. 合并两个排序的链表
- 大数据学习笔记23:MR案例——采用Combiner做词频统计
- Notepad++配置Python运行环境
- Rust常用编程概念之变量和可变性
- 深入了解一下PYTHON中关于SOCKETSERVER的模块-A
- PyTorch:模型训练和预测
- comsol光学模块案例
- python浪漫代码表白npy_python – Cython使用MemoryView时关于NPY_NO_DEPRECATED_API的Numpy警告...
- uva10099+uvauva10048
- 32python腾讯位置大数据2.0版本成功输出北京位置数据(续接上2019年8月21日停止服务的内容)
- 如何快速干净的卸载mysql数据库,不影响下次安装
- 数据归一化 normlization.m 及 Z-score(bsxfun)与mapminmax区分
- Java Web之过滤器Filter(@WebFilter)