一:计算机语言的发展史
第一代语言:打孔机——纯机器语言
- 优点:不需要被编译和转换和能够被 CPU 直接使用。运行快速高效。
- 缺点:和高级编程语言比难学,发生错误难修改。
第二代语言:汇编语言
- 汇编语言也叫做第二代程序设计语言,代码能够被轻松地阅读和重写。这个语言是特定的和独立于一个特殊处理器家族和环境中。是一个处理器的本地语言,有着明显的速度优势,但是它要求更多的程序设计成果而且它被大型应用程序使用。
第三代语言:高级程序语言
- C、Pascal、Fortran面向过程的语言
- C++面向过程/面向对象
- Java跨平台的纯面向对象的语言
- .NET跨语言的平台
二:java语言的发展史
- 1990年末,Sun公司准备为下一代智能家电(电视机,微波炉,电话)编写一个通用的控制系统。该团队最初考虑使用c++语言,很多成员包括sun的首席科学家Bill Joy,发现c++语言在某些方面(复杂,系统资源极其有限,缺少垃圾回收系统等),于是Bill Joy决定开发一种新的语言,Oak。
- 1992年夏天,Green计划已经完成新平台的部分功能,包括Green操作系统,Oak的程序设计语言、类库等。同年11月,Green计划被转成“FirstPerson有限公司”,一个sun公司的全资子公司。该团队致力于创建一种高度互动的设备。
- 1994年夏天,互联网和浏览器的出现不仅给广大互联网的用户带来了福音,也给Oak语言带来了新的生机。Gosling立即意识到,这是一个机会,于是对Oak进行了小规模的改造。
- 1994年秋,小组中的Naughton和Jonathan payne 完成了第一个java语言的网页浏览器:WebRunner。sun公司实验室主任Bert Sutherland 和技术总监Eric Schmidt观看了该网页的演示并给予了高度的评价。当时Oak这个商标已经被注册了,于是改名为Java。
- 1995年初,sun公司发布Java语言,sun公司直接把java放到互联网上,免费给大家使用,甚至连源代码也不保密,也放在互联网公开。几个月后,java成了互联网上最热门的宝贝。各种各样的小程序层出不穷,java终于扬眉吐气,成为了一种广为人知的编程语言。
- 1996年底,Flash面世了,这是一种更加简单的动画设计软件:使用Flash几乎无须任何编程语言知识,就可以做出丰富多彩的动画。Flash逐渐蚕食了java在网页上的应用。
- 1997年2月18日,sun公司发布了JDK1.1,增加了即时编译器JIT。
- 1995年java诞生到1998年年底,java语言虽然成为了互联网上广泛使用的编程语言,但它没有找到一个准确的定位。
- 1998年12月,Sun发布了java历史上最重要的JDK版本:JDK1.2。并将java分成了J2EE(提供了企业应用开发相关的完整解决方案)、J2SE(整个java技术的核心和基础)、J2ME(主要用于控制移动设备和信息家电等有限存储的设备)三个版本。
- 2002年2月,Sun发布了JDK历史上最为成熟的版本,JDK1.4。
- 2004年10月,Sun发布了万众期待的JDK1.5。JDK1.5增加了诸如泛型,增强的for语句、可变数量的形参,注释,自动拆箱和装箱等。
- 2006年12月,Sun发布了JDK1.6。
- 2009年4月20日,oracle宣布将以每股9.5美元的价格收购Sun。oracle通过收购Sun获得了两项资产:java和Solaris。
- 2007年11月,Google宣布推出一款基于Linux平台的开源手机操作系统:Android。Android使用java语言来开发应用程序。Android平台的流行,让java语言获得了在客户端程序上大展拳脚的机会。
- 2011年7月28日,oracle发布了java SE 7-这次版本升级经过将近5年时间。引入二进制整数,支持字符串的switch语句等。
- 2014年3月18日,oracle发布了java SE 8。
三:java语言的结构体系
- Java技术的核心就是Java虚拟机--所有的Java程序都在其上运行。
- Java,除了用于描述Java程序设计语言,还需要Java虚拟机、JavaAPI、Java class文件的配置,Java程序才能运行。
1.完整的Java结构体
- Java编程语言
- Java类文件格式
- Java API
- JVM
Java API--是预先编写的代码,并且按照相似主题分成多个包,Java API主要分为3大平台
J2SE--Java 2 Platform, Standard Edition
该平台中包含了核心Java类和GUI类。用于桌面应用,也是J2EE的基础
J2ME--Java 2 Platform, Micro Edition
该包体现了Java的传统优势,为消费类产品提供了一个已优化的运行时环境,是J2se的一个子集
J2EE
该包中包含开发WEB应用程序所需的类和接口,有Servlet、JSP以及Enterprise JavaBean类等。
用于企业应用,支持分布式部署。
j2se java标准版:
是java的基础部分想学习java从它入手。 j2ee java企业版:是java面向企业级web应用程序 的框架里面包括(jsp,servlet,javabean,ejb...) j2me java微型版:用于开发手机里和一些pda程序。
2.Java语言的基础结构
基础:包(Package)、类(Class)和对象(Object)
包(Package)
Java 使用包来组织类,通常按照业务逻辑将类分组到不同的包中。同时避免类命名冲突。
类(class)
定义:类是一个模板,用来定义对象的数据以及行为,可以理解类为对象的蓝图。
在 Java 中使用 class
关键字来定义类,类名的第一个字母必须大写。类体需要在'{..}'中定义。如:
FirstClass.java:
package test; class FirstClass { }
对象(object)
定义:对象是类的一个实例。 对象是真实的元素具有数据和可执行的操作。每一个对象都是依据类的定义进行创建。
四:java语言的优势
1.用Java编写的平台无关性的程序会更容易编写、管理和维护,代价也更低。
2.安全性:提供一个受保护的环境,从网络上下载的程序可以以不同的定制安全级别运行。
3.健壮性:Java体系结构对程序健壮性有一定的保证,一些有害代码不会在Java代码中出现,比如内存泄漏。
4.在线程序发布,Java在网络上传送小段的二进制代码。
5.网络移动性:运动的对象-它同时在网络上传递代码和状态,通过对象序列化API和RMI(远程方法调用)。在Java底层结构智 之上,对象序列化和RMI为分布式系统中的各个部分共享对象提供了基础。对象在网络上的运动性为分布式编程创造了新模型。
五:java语言的运行机制
Java的两种核心机制
1. Java虚拟机(JVM--Java Virtual Machine)
可以理解为一个以字节码为机器指令的CPU
对于不同平台,有不同的虚拟机
- Java虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,随处运行”。
2. 垃圾回收机制(GC--Garbage Collection)
不再使用的内存空间应回收--垃圾收集- 在C/C++等语言中,由程序员负责回收无用内存(C中malloc、calloc、realoc、free,C++中delete)
- Java语言消除了程序员回收无用内存的责任:它提供了一种系统级线程跟踪存储空间的分配情况。并在JVM的空闲 时,检查并释放那些可被释放的存储器空间。
- 可触及状态:程序中还有变量引用,那么此对象为可触及状态
- 可复活状态:当程序中已经没有变量引用这个对象,那么此对象由可触及状态转为可复活状态。GC线程将在一定时间 准备调用此对象的finalize方法,finalize方法可以将对象转为可触及状态或者不可触及状态
-
不可触及状态:只有当对象处于不可触及状态时,GC线程才能回收此对象的内存使用System.gc()方法和Runtime.gc()来建议垃圾回收器开始回收垃圾,但是无法保证GC线程马上就会进行相应的回收操作。
六:java环境安装配置
1.下载jdk2.双击安装程序,选择安装路径,点击下一步,JDK安装好之后,会弹出JRE安装窗口,可以关闭,也可以选择路径继续安装。
3.配置环境变量
JAVA_HOME-安装路径 D:\Java\jdk1.8.0_151
path-使用java开发命令时,命令所在的路径 %JAVA_HOME%\bin;
一般来说,最好再去配置CLASSPATH,(其实jdk1.5以后就不需要配置,但是为了保证向下兼容,最好配置一下)
CLASSPATH-运行java程序时,class文件以及运行该java程序所需要的底层的jar包所在的路径 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
如何验证:运行cmd控制台
输入指令 javac java java -version